۷ و ۸) ADC & DAC
این هم دیگه معلومه ، نیاز به توضیح خاصی نداره ؛ تبدیل سیگنال های آنالوگ و دیجیتال به همدیگه. @Micro_Controllers
این هم دیگه معلومه ، نیاز به توضیح خاصی نداره ؛ تبدیل سیگنال های آنالوگ و دیجیتال به همدیگه. @Micro_Controllers
انواع میکروکنترلر از لحاظ شکل ظاهری:
پکیج DIP :
از جمله ویژگی های اون اینه که :
۱) نسبت به پکیج های مشابه استحکام بیشتری داره.
۲) لحیم کاری آسان
۳) قابلیت جدا کردن آسان و راحت در صورت استفاده از سوکت بر روی برد
۴) قابلیت برنامه ریزی آسان با استفاده از پروگرامر
عیب اصلیش هم اینه که فضای نسبتا زیادی رو روی برد اشغال میکنه ! @Micro_Controllers
پکیج DIP :
از جمله ویژگی های اون اینه که :
۱) نسبت به پکیج های مشابه استحکام بیشتری داره.
۲) لحیم کاری آسان
۳) قابلیت جدا کردن آسان و راحت در صورت استفاده از سوکت بر روی برد
۴) قابلیت برنامه ریزی آسان با استفاده از پروگرامر
عیب اصلیش هم اینه که فضای نسبتا زیادی رو روی برد اشغال میکنه ! @Micro_Controllers
انواع میکروکنترلر از لحاظ شکل ظاهری:
پکیج SMD :
سطحی کاملا مسطح دارند و ضخامتی میلی متری !
در این پکیج نیز تعداد پایه ها در طرفین مساوی بوده و الزاما هم از چهار طرف پایه ندارند !
ویژگی اصلی اون اینه که فضای بسیار کمی را در مقایسه با پکیج DIP اشغال میکند.(این که دیگه تابلو هستش)
عیوب اصلی هم عبارتند از :
۱) لحیم کاری دشوار
۲) حساسیت بسیار بالا به گرما در لحیم کاری
۳) جداسازی دشوار از روی برد
۴) عدم امکان برنامه ریزی مستقیم از طریق پروگرامر
توجه : البته لازم بذکره که این پکیج ها تنها مختص به میکروکنترلر AVR نمیشوند و اکثر قطعات نیز در پکیج های مختلف ساخته میشوند.
@Micro_Controllers
پکیج SMD :
سطحی کاملا مسطح دارند و ضخامتی میلی متری !
در این پکیج نیز تعداد پایه ها در طرفین مساوی بوده و الزاما هم از چهار طرف پایه ندارند !
ویژگی اصلی اون اینه که فضای بسیار کمی را در مقایسه با پکیج DIP اشغال میکند.(این که دیگه تابلو هستش)
عیوب اصلی هم عبارتند از :
۱) لحیم کاری دشوار
۲) حساسیت بسیار بالا به گرما در لحیم کاری
۳) جداسازی دشوار از روی برد
۴) عدم امکان برنامه ریزی مستقیم از طریق پروگرامر
توجه : البته لازم بذکره که این پکیج ها تنها مختص به میکروکنترلر AVR نمیشوند و اکثر قطعات نیز در پکیج های مختلف ساخته میشوند.
@Micro_Controllers
معرفی پایه های میکروکنترلر ATmega32:
پایه های GND به زمین متصل میشوند.
پایه VCC و AVCC به +۵ ولت متصل میشوند .
پایه های PA0-PA7 مربوط به پورت A
پایه های PB0-PB7 مربوط به پورت B
پایه های PC0-PC7 مربوط به پورت C
پایه های PD0-PD7 مربوط به پورت D
پایه های XTAL1 و XTAL2 هم جهت اتصال به کریستال میباشند.
پایه AREF هم جهت استفاده در مقایسه کننده آنالوگ کاربرد دارد.
اینو تو جلسه مبدل آنالوگ به دیجیتال در میکروکنترلرهای AVR توضیح میدم.
@Micro_Controllers
پایه های GND به زمین متصل میشوند.
پایه VCC و AVCC به +۵ ولت متصل میشوند .
پایه های PA0-PA7 مربوط به پورت A
پایه های PB0-PB7 مربوط به پورت B
پایه های PC0-PC7 مربوط به پورت C
پایه های PD0-PD7 مربوط به پورت D
پایه های XTAL1 و XTAL2 هم جهت اتصال به کریستال میباشند.
پایه AREF هم جهت استفاده در مقایسه کننده آنالوگ کاربرد دارد.
اینو تو جلسه مبدل آنالوگ به دیجیتال در میکروکنترلرهای AVR توضیح میدم.
@Micro_Controllers
رجیسترها:
از نون شب واجبتره-حتما خوب بخونیدش-البته اگه نفهمیدید ، تو قسمت پروژها خودتون یاد میگیرید...
۱) رجیستر DDRx
این رجیستر دارای ۸ بیت است که مقدار هر بیت تعیین کننده ورودی یا خروجی بودن همان بیت در پورت مورد نظر است.
اگر مقدار بیت مورد نظر ۰ باشد»»»پین ورودی تعریف میشود.(یعنی اطلاعات میگیره از خارج!!!)
اگر مقدار بیت مورد نظر ۱ باشد»»»پین خروجی تعریف میشود.(یعنی اطلاعات میده!!!)
برای DDRD داریم : 👇👇👇
@Micro_Controllers
از نون شب واجبتره-حتما خوب بخونیدش-البته اگه نفهمیدید ، تو قسمت پروژها خودتون یاد میگیرید...
۱) رجیستر DDRx
این رجیستر دارای ۸ بیت است که مقدار هر بیت تعیین کننده ورودی یا خروجی بودن همان بیت در پورت مورد نظر است.
اگر مقدار بیت مورد نظر ۰ باشد»»»پین ورودی تعریف میشود.(یعنی اطلاعات میگیره از خارج!!!)
اگر مقدار بیت مورد نظر ۱ باشد»»»پین خروجی تعریف میشود.(یعنی اطلاعات میده!!!)
برای DDRD داریم : 👇👇👇
@Micro_Controllers
رجیسترها:
همونطور که ملاحظه میکنید ۸ تا بیت داریم که از شماره های ۰-۷ شماره گذاری شده اند.ترتیب هم از راست به چپه !
برای مثال میخوایم پین سوم از پورت D رو بعنوان ورودی و پین ششم از همین پورت رو بعنوان خروجی تعریف کنیم.باید چه مقادیری رو به پین ها بدیم ؟!
پین سوم یعنی شماره ۲ یعنی DDRD.2 (توجه : شمارش پایه های هر پورت از ۰ شروع میشه)
پین ششم هم یعنی شماره ۵ یعنی DDRS.5
پس مقدار رجیستر DDRD=00100000 میباشد.
@Micro_Controllers
همونطور که ملاحظه میکنید ۸ تا بیت داریم که از شماره های ۰-۷ شماره گذاری شده اند.ترتیب هم از راست به چپه !
برای مثال میخوایم پین سوم از پورت D رو بعنوان ورودی و پین ششم از همین پورت رو بعنوان خروجی تعریف کنیم.باید چه مقادیری رو به پین ها بدیم ؟!
پین سوم یعنی شماره ۲ یعنی DDRD.2 (توجه : شمارش پایه های هر پورت از ۰ شروع میشه)
پین ششم هم یعنی شماره ۵ یعنی DDRS.5
پس مقدار رجیستر DDRD=00100000 میباشد.
@Micro_Controllers
رجیسترها:
۲) رجیستر PORTx
مقدار هریک از بیت های این رجیستر تعیین کننده High یا Low بودن پین متناظر است.
از این رجیستر تنها هنگام نوشتن در پورت استفاده میشود.
توضیح :
فرض کنید که در نظر داریم یه LED رو به یکی از پین های میکرو وصل کنیم و فرمان بدیم که اون LED روشن بشه !
میایم چیکار میکنیم ؟! خوب دقت کنید !
ما با DDRx میگیم که فلان پین (یا پایه یا بیت !!! ) رو یک کن (یعنی خروجی کن—یعنی این پایه باید اطلاعات بفرسته یعنی ….)
حالا باید بگیم که ولتاژ هم اعمال کن که این کار به کمک این ریجستر انجام میشه.
حالا اگه بیت متناظر همون پین رو در رجیستر PORTx برابر مقدار ۱ قرار بدیم،وضعیت اون بیت(پین) به حالت High میرود و ولتاژ به پین مورد نظر وارد میشود.
توجه : این رجیستر دارای ۸ بیت است که مقدار هر بیت تعیین کننده High یا Low بودن همان بیت در پورت مورد نظر است.
اگر مقدار بیت ۰ باشد»»»وضعیت LOW
اگر مقدار بیت ۱ باشد»»»وضعیت HIGH
برای PORTD داریم :👇👇👇
@Micro_Controllers
۲) رجیستر PORTx
مقدار هریک از بیت های این رجیستر تعیین کننده High یا Low بودن پین متناظر است.
از این رجیستر تنها هنگام نوشتن در پورت استفاده میشود.
توضیح :
فرض کنید که در نظر داریم یه LED رو به یکی از پین های میکرو وصل کنیم و فرمان بدیم که اون LED روشن بشه !
میایم چیکار میکنیم ؟! خوب دقت کنید !
ما با DDRx میگیم که فلان پین (یا پایه یا بیت !!! ) رو یک کن (یعنی خروجی کن—یعنی این پایه باید اطلاعات بفرسته یعنی ….)
حالا باید بگیم که ولتاژ هم اعمال کن که این کار به کمک این ریجستر انجام میشه.
حالا اگه بیت متناظر همون پین رو در رجیستر PORTx برابر مقدار ۱ قرار بدیم،وضعیت اون بیت(پین) به حالت High میرود و ولتاژ به پین مورد نظر وارد میشود.
توجه : این رجیستر دارای ۸ بیت است که مقدار هر بیت تعیین کننده High یا Low بودن همان بیت در پورت مورد نظر است.
اگر مقدار بیت ۰ باشد»»»وضعیت LOW
اگر مقدار بیت ۱ باشد»»»وضعیت HIGH
برای PORTD داریم :👇👇👇
@Micro_Controllers
رجیسترها:
۳) رجیستر PINx
این رجیستر تعیین کننده وضعیت فیزیکی بیت(پین) مورد نظر برای CPU است.
از این رجیستر تنها هنگام خواندن از پورت استفاده میشود.
اگر پین مورد نظر بعنوان ورودی در نظر گرفته شده باشد،بیت متناظر با آن در رجیسترPINx ،حاوی اطلاعات دریافتی از همان پین مورد نظر در میکرو است.
توضیح : همونطور که گفتم فقط هنگامی که میخوایم از پایه اطلاعات رو بخونیم یا به عبارتی پایه(پین) موردنظرمون رو ورودی تعریف کرده باشیم از این رجیستر استفاده میکنیم.
فرض کنید یه سنسور رو به یکی از پایه های میکرو وصل کرده ایم و این سنسور در شرایط مختلف مقدار ۰ یا ۱ را برمیگرداند.
حتما میدونید که چون سنسور داره اطلاعات رو به سمت میکرو میفرسته و میکرو هم باید اون اطلاعات رو دریافت کنه،در نتیجه پین مورد نظر باید در حالت ورودی تنظیم شده باشه !
اون موقع اگه خواستیم متوجه بشیم که الان سنسور مقدارش ۱ هست یا ۰ میایم و مقدار بیت متناظر در رجیستر PINx رو قرائت میکنیم.
پس :👇👇👇👇
@Micro_Controllers
۳) رجیستر PINx
این رجیستر تعیین کننده وضعیت فیزیکی بیت(پین) مورد نظر برای CPU است.
از این رجیستر تنها هنگام خواندن از پورت استفاده میشود.
اگر پین مورد نظر بعنوان ورودی در نظر گرفته شده باشد،بیت متناظر با آن در رجیسترPINx ،حاوی اطلاعات دریافتی از همان پین مورد نظر در میکرو است.
توضیح : همونطور که گفتم فقط هنگامی که میخوایم از پایه اطلاعات رو بخونیم یا به عبارتی پایه(پین) موردنظرمون رو ورودی تعریف کرده باشیم از این رجیستر استفاده میکنیم.
فرض کنید یه سنسور رو به یکی از پایه های میکرو وصل کرده ایم و این سنسور در شرایط مختلف مقدار ۰ یا ۱ را برمیگرداند.
حتما میدونید که چون سنسور داره اطلاعات رو به سمت میکرو میفرسته و میکرو هم باید اون اطلاعات رو دریافت کنه،در نتیجه پین مورد نظر باید در حالت ورودی تنظیم شده باشه !
اون موقع اگه خواستیم متوجه بشیم که الان سنسور مقدارش ۱ هست یا ۰ میایم و مقدار بیت متناظر در رجیستر PINx رو قرائت میکنیم.
پس :👇👇👇👇
@Micro_Controllers
رجیسترها:
این رجیستر👆👆👆 دارای ۸ بیت است که مقدار هر بیت تعیین کننده High یا Low بودن همان بیت در پورت مورد نظر است.
اگر مقدار بیت ۰ باشد»»»»وضعیت LOW
اگر مقدار بیت ۱ باشد»»»»وضعیت HIGH
@Micro_Controllers
این رجیستر👆👆👆 دارای ۸ بیت است که مقدار هر بیت تعیین کننده High یا Low بودن همان بیت در پورت مورد نظر است.
اگر مقدار بیت ۰ باشد»»»»وضعیت LOW
اگر مقدار بیت ۱ باشد»»»»وضعیت HIGH
@Micro_Controllers
رجیسترها:
اما در حالت ورودی منظور از HIGH یا LOW بودن چیست ؟!
به این زیاد گیر ندید بعدا به حسابش میرسیم (^_^)
@Micro_Controllers
اما در حالت ورودی منظور از HIGH یا LOW بودن چیست ؟!
به این زیاد گیر ندید بعدا به حسابش میرسیم (^_^)
@Micro_Controllers
رجیسترها:
اگر بیت مورد نظر در حالت ورودی تنظیم شده باشد و بیت مورد نظر آن در رجیستر PORTx بصورت High تعریف شده باشد،مقاومت پول آپ داخلی فعال میشود.
در صورتیکه بیت مورد نظر در رجیستر PORTx بصورت LOW تعریف شود،پین مورد نظر به صورت Tri-State یا Hi-z در آمده که معنای آن این است که پین موردنظر وضعیت مشخصی ندارد.همانند هنگامی که برای پین هیج مقداری در رجیسترهای DDRx و PORTx و RINx تعریف نکرده باشیم(حالت پیشفرض).
@Micro_Controllers
اگر بیت مورد نظر در حالت ورودی تنظیم شده باشد و بیت مورد نظر آن در رجیستر PORTx بصورت High تعریف شده باشد،مقاومت پول آپ داخلی فعال میشود.
در صورتیکه بیت مورد نظر در رجیستر PORTx بصورت LOW تعریف شود،پین مورد نظر به صورت Tri-State یا Hi-z در آمده که معنای آن این است که پین موردنظر وضعیت مشخصی ندارد.همانند هنگامی که برای پین هیج مقداری در رجیسترهای DDRx و PORTx و RINx تعریف نکرده باشیم(حالت پیشفرض).
@Micro_Controllers
ابزار مورد نیاز برای کار با میکروکنترلر avr:
خیلی خوب ، رسیدیم به بهترین قسمت این مطلب–برا کار با avr باید یک زبان برنامه نویسی و یک نرم افزار شبیه ساز رو انتخاب کنید.
برای برنامه نویسی ۲ راه وجود دارد:
(این نرم افزاره که در زیر میگم کارش اینه که کدهای ما رو به زبون ماشین تبدیل میکنه. )
۱) زبان برنامه نویسی بیسیک به کمک نرم افزار بسکام
۲) زبان برنامه نویسی سی به کمک نرم افزار کدویژن
تا اونجایی که من میدونم بیسیک آسون تره ولی سی قویتره.
من خودم با زبون سی کار میکنم.😊😊
برای شبیه سازی مدار تو کامپیوتر دو راه وجود دارد:
۱) نرم افزار پروتئوس یا ISIS
۲) نرم افزار اورکد یا Capture
من خودم تقریبا با جفتشون کار کردم ؛ به نظر من پروتئوس بهتر از اورکد هست هم از نظر ظاهر و هم از نظر راحتی باهاش!!!👍
البته اگه یکیش رو یاد بگیری یاد گرفتن اون یکی زیاد کاری نداره.
@Micro_Controllers
خیلی خوب ، رسیدیم به بهترین قسمت این مطلب–برا کار با avr باید یک زبان برنامه نویسی و یک نرم افزار شبیه ساز رو انتخاب کنید.
برای برنامه نویسی ۲ راه وجود دارد:
(این نرم افزاره که در زیر میگم کارش اینه که کدهای ما رو به زبون ماشین تبدیل میکنه. )
۱) زبان برنامه نویسی بیسیک به کمک نرم افزار بسکام
۲) زبان برنامه نویسی سی به کمک نرم افزار کدویژن
تا اونجایی که من میدونم بیسیک آسون تره ولی سی قویتره.
من خودم با زبون سی کار میکنم.😊😊
برای شبیه سازی مدار تو کامپیوتر دو راه وجود دارد:
۱) نرم افزار پروتئوس یا ISIS
۲) نرم افزار اورکد یا Capture
من خودم تقریبا با جفتشون کار کردم ؛ به نظر من پروتئوس بهتر از اورکد هست هم از نظر ظاهر و هم از نظر راحتی باهاش!!!👍
البته اگه یکیش رو یاد بگیری یاد گرفتن اون یکی زیاد کاری نداره.
@Micro_Controllers
مبدل آنالوگ به دیجیتال
اگر به PORTA.0 تا PORTA.7 نگاه کرده باشید کنارشون یه کلماتی هست : ADC0 تا ADC7 که با استفاده از این پورت( PORTA ) میتونیم سیگنال آنالوگ رو دیجیتال کنیم.
@Micro_Controllers
اگر به PORTA.0 تا PORTA.7 نگاه کرده باشید کنارشون یه کلماتی هست : ADC0 تا ADC7 که با استفاده از این پورت( PORTA ) میتونیم سیگنال آنالوگ رو دیجیتال کنیم.
@Micro_Controllers