Transcript Slide 1
میکرو کنترلرهای AVR
: PROMفقط خواندنی ،یکبار قابل برنامه ریزی
ماندگار(دائمی)
:EPROMفقط خواندنی ،توسط مدارواسط با ولتاژالکتریکی نوشته و با
نور ماورای بنفش مثل نورخورشید پاک می شود.
:EEPROMفقط خواندنی که توسط مدار واسط با ولتاژ الکتریکی هم
نوشته وهم خوانده می شود و به دو نوع موازی و سریال تقسیم می شود
حافظه ها
فرار(غیردائمی)
:SRAMاز نوع استاتیک یا پایدار است(نیاز به تازه سازی ندارد) و تا
وقتی که تغذیه که آنها قطع نشود می تواند اطالعات داده شده را حفظ
نماید
:DRAMاز نوع دینامیک یا غیرپایدار است(با یک فاصله زمانی مشخص
باید این نوع حافظه را بازسازی نمود).
بافر( تقویت کننده جریان) :ما را در راه اندازی جریان بیشتر از 20میلی آمپر کمک میکند.
پايه ي 19پايه ي Enableيا فعال ساز نام دارد ،اگر اين پايه به زمين ( 0منبع تغذيه) وصل شود ،بافرها فعال مي
ا
شوند و اگر به 5ولت متصل شود ،بافرها خاموش مي شوند(.در شکل باال ،مثل A0و B0يک بافر هستند)
ا
پايه ي 1نيز که پايه ي جهت يا Directionنام دارد ،جهت بافرها را نشان مي دهد .مثل اگر DIRبه زمين
متصل شود ،جهت بافر از Bبه ( Aيعني Bورودي و Aخروجي است)و اگر به 5ولت متصل شود ،جهت بافر Aبه
Bمي شود(يعني Aورودي و Bخروجي است).
وقفه:
منظور تاخیر زمانی نیست بلکه منظور قطع کردن برنامه جاری و سرویس دادن به تابع
وقفه است .مبدل آنالوگ به دیجیتال ، ADCمقایسه کننده آنالوگ ،ارتباط سریال و ...
دارای وقفه مخصوص به خود هستند.
سیکل ماشین:
مدت زمان اجرای انجام هر دستور را سیکل ماشین(پالس ساعت) می کویند.
(فرکانس اسیالتور=)1/سیکل ماشین
AT90S
ATmega
امکانات بیشتر
انواع میکرو کنترلرها AVR
ATtiny
معماری میکروکنترلرهای : AVR
-1معماری :(Complex Instruction Set Computer) CISC
تعداد دستورات بیشتر و پیچیده تر ،سرعت اجرای دستورات پایین ،برنامه نویس ی آن به خصوص
اسمبلی ساده تر شده است .اکثر میکرپروسسورها به دلیل قابل اجرا بودن برنامه های MSDOSدر
این معماری بر اساس معماری CISCساخته می شوند.
-2معماری : (Reduced Instruction Set Computer) RISC
تعداد دستورات کاهش پیدا کرده ،سرعت اجرایی دستورات 10برابر نسبت به معماری قبل
افزایش پیدا کرده ،برنامه نویس ی به زبان اسمبلی قدری پیچیده ،با استفاده از این معماری و
حافظه های ظرفیت بال امکان برنامه نویس ی به زبانهای سطح بالتر مانند Cو بیسیک فراهم
گردید ،اکثر دستورات در یک کالک سیکل اجرا می شوند ،تعداد رجیسترها بیشتر ،مصرف توان
کمتر
فیوز بیت ها
هر سیستم برای شروع به کار خود نیاز به تنظیمات اولیه دارد .در تراشه های AVRبرای تنظیمات
اولیه بخش ی به نام فیوز بیت در برنامه Code Visionوجود دارد .در واقع با تنظیمات فیوز بیت
ها می توانیم از امکانات خاص ی از AVRاستفاده نماییم .فضای اختصاص داده شده به فیوز بیتها
از نوع حافظه ماندگار است و با پاک کردن میکرو از بین نمی رود و تغییر آنها فقط از طریق پروگرامر
امکان پذیر است و نیاز به برنامه نویس ی ندارد .فیوز بیت ها با صفر برنامه ریزی و با 1غیر فعال می
شوند.
میکرو کنترلر ATmega16دارای 2بایت فیوز بیت می باشد.
فیوز بیت های : ATmega16
فیوز بیت : JTAGENبا فعال بودن این فیوز بیت می توان میکرو کنترلر را از طریق ارتباط دهی استاندارد JTAG
برنامه ریزی کرد( .این فیوز بیت به طور پیش فرض فعال است).
نکته :چون ارتباط دهی JTAGدر میکروکنترلر ATmega16برروی PC2تا PC5قرار دارد در زمانی که ما از این
ارتباط دهی استفاده نمی کنیم آنرا باید غیر فعال نمود در غیر اینصورت نمی توان از پایه های PC2تا PC5استفاده
نمود.
فیوز بیت : (On Chip Debug Enable) OCDENدر صورت فعال بودن فیوزبیت JTAGENو قفل نبودن
برنامه میکرو می توان با فعال کردن این فیوز بیت به طور آنالین برنامه میکرو را توسط مدار واسط که از ارتباط
سریال JTAGاستفاده می کند و توسط نرم افزار AVR Studioمشاهده کنیم .فعال بودن این فیوزبیت مصرف
توان را بال می برد(.به طور پیش فرض غیر فعال است)
فیوز بیت : SPIENارتباط به صورت پروتکل سریال SPIرا فراهم می سازد و به صورت پیش فرض فعال است.
فیوز بیت : CKOPTبا فعال کردن این فیوز بیت می توان از حداکثر دامنه نوسان اسیالتور خارجی استفاده کرد .اگر
این فیوز بیت فعال باشد دامنه نوسانات برابر تغذیه میکرو می شود .این حالت در مکان هایی که نویز زیادی دارند
موثر است اما از طرفی باعث افزایش توان مصرفی می شود.
فیوز بیت :EESAVEدر هنگام پاک کردن میکرو EEPROM ،نیز پاک می شود اگر بخواهیم از محتوای این حافظه
محافظت نماییم باید این فیوز بیت را فعال کنیم( .به طور پیش فرض غیر فعال است)
فیوزبیت BOOTSZ0و :BOOTSZ1این دو فیوز میزان حافظه اختصاص داده شده BOOTرا تعیین می کند (.به
طور پیش فرض هر دو فعال است)
فیوز بیت :BOOTRSTزمانی که میکرو RESETمی شود اگر این فیوزبیت فعال باشد CPUبه آدرس ی پرش می کند
که در فیوز بیت های BOOTSZ0و BOOTSZ1تعیین شده است و در صورت غیرفعال بوددن به آدرس 0X0000
پرش میکند (.به طور پیش فرض غیرفعال است)
فیوزبیت BODENو :BODLEVELبا فعال بودن فیوز بیت BODENاگر BODLEVELغیرفعال باشد در
صورتی که VCCاز 2/7ولت کمتر شود میکرو ریست می شود و در صورتی که BODLEVELفعال باشد در صورتی که
VCCاز 4ولت کمتر شود میکرو ریست می شود( .به طور پیش فرض هر دو فیوزبیت غیر فعال است)
فیوزبیت های SUT0و : SUT1این دو فیوز بیت زمان شروع ) (Start-upرا در موقع وصل تغذیه تعیین می کند( .به
طور پیش فرض هردو غیرفعال است)
فیوزبیت های :CKSEL0..3توسط این فیوزبیت ها توع اسیالتور و مقدار فرکانس کتر میکرو تعیین می شود.
پورت های ورودی و خروجی:
پورتهای ورودی و خروجی عالوه بر خروجی و ورودی بودن
کاربردهای دیگری هم می توانند داشته باشند به طور مثال
پورت PB2عالوه بر ورودی و خروجی می تواند به عنوان
ورودی وقفه خارجی و همچنین مقایسه کننده آنالوگ مورد
استفاده قرار بگیرد .پورت PC4نیز عالوه بر استفاده نمودن به
عنوان ورودی و خروجی می توان در ارتباط دهی JTAGنیز از
آن استفاده نمود.
به طور کلی تمامی پورت های میکرو کنترلرهای AVRدارای 3رجیستر تنظیم کننده به فرم زیر هستند:
: DDRx.n(Data Direction Register) -1این رجیستر برای تنظیم هر پایه از یک پورت به عنوان ورودی و
خروجی در نظر گرفته می شود .اگر بیتی از این رجیستر یک شود آن پایه به عنوان خروجی و اگر صفر شود آن پایه به
عنوان ورودی عمل می کند.
;DDRA=0xFF
;DDRA=0x00
;DDRc.0=1
: PORTx.n -2این رجیستر برای ارسال دیتا به خروجی مورد استفاده قرار می گیرد.
نکته :برای ارسال دیتا به خروجی ابتدا باید DDRx.nپورت مورد نظر به عنوان خروجی تنظیم شود.
;DDRB=0xFF
;PORTB=46
: PINx.n -3این رجیستر برای دریافت دیتا از ورودی مورد استفاده قرار می گیرد.
نکته :برای ارسال دیتا به خروجی ابتدا باید DDRx.nپورت مورد نظر به عنوان ورودی تنظیم شود.
;DDRC=0x00
;Data=PINC
;PORTC.5=1
;DDRC.5=0
{ )If (PINC.5==0
;دستور العمل ها
}
;DDRC.5=0
{ )If (PINC.5==1
;دستور العمل ها
}
تغذیه میکرو کنترلر:
میکرو کنترلر AVRمی توانند با ولتاژ 2/7تا 5/5برای نوع Lو ولتاژ 4تا 5/5برای نوع بدون Lکار کنند اما بطور
استاندارد تغذیه میکرو کنترلر را 5ولت انتخاب می کنند.
بدلیل آنکه ولتاژ بیشتر از 5ولت باعث سوختن میکرو می شود از یک رگولتور 5ولتی 7805استفاده می کنند.
بلوک دیاگرام میکرو کنترلر:
: CPUک ااار اص االی CPUدسترسا ا ی ب ااه حافظ ااه ه ااا ،محاس اابات
ریاضا ی و منطقاای ،کنتاارل وسااایل جااانیی و بررسا ی وقفااه هاای هاار
یک از قسمت ها می باشد.
ش ا ا اامارنده برناما ا ا ااه ،اش ا ا اااره گ ا ا اار ش ا ا ااته ،رجیس ا ا ااتر دسا ا ا ااتورات،
آشکارسازدستورات،رجیس ا ا ا ااترهایY،Xو،Zرجیس ا ا ا ااترهای هم ا ا ا ااه
منظوره ،واحد محاسبه و منطاق) (ALUو رجیساتر وعاعیت از
اجزای تشکیل دهنده CPUمیکرو کنترلر AVRهستند.
شاامارنده برنامااه ) : PC(Program Counterمیکاارو کنترلاار بااه منظااور خواناادن دسااتورات از اولااین آدرس حافظااه
برنامه نیاز به یک شمارنده برنامه دارد .افزایش PCآدرس خط بعدی را برای اجرای دستورات فراهم می کند.
اشااره گار شااته ) : SP(Stack Pointerاشااره گار شااته از دو رجیساتر 8بیتای اسااتفاده مای کناد و باارای وخیاره موقاات
اطالعات در دستورهای PUSH،CALLو POPو متغیرهای محلی ،روتین های وقفه و توابع استفاده می شود.
رجیسااتر دسااتورات ) : (Instruction Registerتمااامی کاادهای ماشااین مربااوط بااه دسااتورات اساامبلی را شااامل ماای
شود.
آشکارسااز دساتورات ) : (Instruction Decoderدساتور کاد خواناده شاده از رجیساتر دساتورات آشاکار مای شاود باه
عبارت دیگر یعنی معنی و مفهوم کد دستور خوانده شده را بیان می کند.
رجیسااترهای همااه منظااوره ) : (General Purpose Registersمیکاارو کنترلرهااای AVRدراری 32رجیسااتر همااه
منظااوره هسااتند کااه قساامتی از حافظااه SRAMداخلاای میکاارو ماای باشااد کااه اکثاار دسااتورات اساامبلی AVRبااه ایاان رجیسااترها
دسترس ی دارند.
رجیساترهای Y،Xو : Zاز ترکیا رجیساترهای R26تاا R31بوجاود مای آیناد .اشااره گاری 16بیتای جهات آدرس دهای غیار
مستقیم فضای داده استفاده می شود.
واحد محاسبه و منطق ) : (ALUبه صورت مساتقیم باا 32رجیساتر هماه منظاوره ارتبااط دارد .عملکارد ALUرا مای
توان به سه قسمت اصلی ریاض ی ،منطقی و توابع بیتی تقسیم بندی کرد.
رجیساتر وعاعیت ) : SREG(status Registerپارچم هاایی هساتند کاه CPUرا از نتاای دساتورات و وعاعیت
برنامه آگاه می کنند.
انواع حافظه در میکرو کنترلرهای : AVR
حافظاه :Flashبرناماه ای کاه توساط کااربر نوشاته مای شاود بار روی ایان حافظاه Loadمای شاود و CPUدسااتور
العمال هااا را از ایاان حافظاه برداشاات ماای کنااد .حافظاه ثاباات Flashمیکاارو کنترلرهاای از نساال جدیااد دارای دو قساامت
Applicationو Boot Loaderهسااتند .در قساامت Applicationکاادهای برنامااه قاارار ماای گیاارد امااا ناحیااه
Bootاین امکان را فراهم می کند که میکروکنترلر بدون استفاده از پروگرامر در این حافظه بنویسد.
;}Flash char row[ ]={0xfe,0xfd,oxfb,0xf7
حافظااه : EEPROMایاان حافظااه جاازو حافظااه هااای ماناادگار ماای باشااد کااه میکاارو ماای توانااد در ایاان حافظااه هاام
بنویسد و هم از این حافظه بخواند .این حافظه در صورت قطع تغذیه از بین نمی رود.
;Eeprom unsigned int X=0xff
حافظ ااه : SRAMرجیس ااترهای هم ااه منظ ااوره ،رجیس ااترهای ورودی و خروج اای و متغیره ااای محل اای ک ااه میک اارو با ارای
اجرای دستورات از آن استفاده می کند جزو این حافظه می باشند.
;Unsigned char M=0x12
کالک سیستم در میکروکنترلرهاای : AVRسیساتم پاالس سااعت در میکرکنترلرهاای AVRباه طاور کلای باا اساتفاده
از نوسان سازهای داخلی و خارجی ایجاد می شود .ایان کاالک جهات اساتفاده در مبادل آناالوگ باه دیجیتاال ،حافظاه
Flashو eepromو بارای مااژول هاای ورودی و خروجای نظیار ،SPI ،USARTشامارنده و وقفاه هاا بکاار باارده
می شود.
تعیین منبع کالک سیستم:
نوسان ساز با کریستال خارجی:
نوسان ساز با RCخارجی:
1
f
3RC
مقدار خازن حداقل 22PFو مقدار مقاومت بین 3Kتا 100Kاهم انتخاب می شود.
نوسان ساز با اسیالتور RCکالیبره شده داخلی:
توسط این نوسان ساز می توان فرکاانس هاای ثابات 4MHZ،2MHZ،1MHZو 8MHZرا در شارایط تغذیاه 5ولات و
در دمااای 25درجااه سااانتیگراد ایجاااد نمااود .فرکااانس کاااری ایاان نوسااان ساااز بااه شاادت بااه دمااا و ولتاااژ تغذیااه وابسااته اساات
که می توان با استفاده از رجیستر کالیبراسیون این فرکانس را کالیبره و تنظیم نمود.
نوسان ساز با کالک خارجی:
نوسان ساز مجزا تایمر یا کانتر دو:
در صااورتی کااه از تااایمر یااا کااانتر دو اسااتفاده ماای کناایم بایااد از کریسااتال 32.768KHZاسااتفاده کناایم کااه یااک پایااه از
ایاان کریسااتال بایااد بااه پایااه ) PC6(TOSC1و پایااه دیگاار بااه ) PC7(TOSC2وصاال شااود .ماای تااوان از ایاان فرکااانس
ایجاد شده برای فرکانس کاری میکرو نیز استفاده نمود .در این حالت نیاز به قرار دادن خازن ها نمی باشد.
مدهای مختلف :Sleep
میک اارو کنترل اار AVRدارای ش ااش م ااد Sleepم اای باش ااد ک ااه ه اار ک اادام عملک ااردی متف اااوت دارد .ه اادف از ای اان م اادها
کاهش توان مصرفی می باشد .در این حالت کالک قسامتی از اجازای درونای متوقاف مای شاود و باا ری دادن یاک وقفاه
CPUو دیگاار قساامت هااای میکاارو از خااواب بیاادار ماای شااوند .ایاان ماادها بااا اسااتفاده از رجیسااتر MCUCRتعیااین ماای
شود.
م ااد :Idleدر ای اان م ااد CPUمتوق ااف ام ااا ارتب اااط ده اای س ااریال TWI ،SPIو ،USARTمقایس ااه کنن ااده آن ااالوگ ،مب اادل
،ADCتایمر یا کانترها Watchdog ،و وقفه ها می اوانند بکار خود ادامه بدهند.
مااد CPU :ADC Noise Reductionمتوقااف امااا ارتباااط دهاای سااریال ،TWIمباادل ،ADCتااایمر یااا کااانتر،2
Watchdogو وقفه های خارجی می توانند به کار خود ادامه بدهند.
مد :Power-downنوسان ساز خارجی متوقف اما وقفه های خاارجی ،ارتبااط ساریال TWIو تاایمر Watchdogمای
توانند به کار خود ادامه دهند.
ماد :Power-saveمانناد ماد Power-downباا ایان تفااوت کاه تاایمر یاا کاانتر 2مای تواناد باه صاورت غیار همزماان بکاار
خود ادامه دهد.
مد :Standbyمانند مد Power-downبا این تفاوت که اسیالتور می تواند به کار خود ادامه دهد.
مااد :Extended Standbyماننااد مااد Power-saveبااا ایاان تفاااوت کااه اساایالتور ماای توانااد بااه کااار خااود
ادامه دهد.
منابع Resetمیکرو کنترلر:
در هنگااام ریساات تمااامی رجیسااترهای ورودی و خروجاای و کنترقاای بااا توجااه بااه مقااادیر پاایش فاارض تنظاایم ماای شااود و ااس از
گذشت مدت زمان معین(زمان تعیین شده توسط )Start-upبرنامه از بردار Resetشروع می شود.
:Power-on Resetهنگامی که ولتاژ تغذیه از ولتاژ آستانه پایین تر شود
:External Resetاگاار پااالس بااا سااطح صاافر منطقاای بااه ماادت طااولنی تاار از ساایکل پااالس ساااعت میکاارو بااه پای اه
خارجی RESETاعمال شود.
:Brown-out Resetدر صورت فعال بودن فیوز بیت BODENاگر مقدار ولتاژ تغذیه از حد ولتاژ 2/7یا 4ولت
که توسط فیوز بیت BODLEVELتعیین میگردد پایین تر بیاید Resetاتفاق می افتد.
:Watchdog Resetمیکرو ممکن است در در حلقه ای از برنامه منتظر دیتایی شده باشد وقی این دیتا به
هر دلیل دریافت نمی شود و یا اینکه نویز سب شده باشد برنامه میکرو به آدرس ی نامشخص از حافظه پرش
کرده باشد یا به عبارت دیگر میکرو هنگ کرده باشد با فعال کردن تایمر Watchdogمی توان میکرو را در
مدت زمان های مشخص Resetنمود.