ميكروگنترلر Atmega 16

خصوصيات Atmega 16:
* ازمعماري AVR RISC استفاده مي كند.
 كارايي بالا وتوان مصرفي كم
 داراي ۱۳۱ دستورالعمل با كارايي بالا كه اكثراً تنها دريك كلاك سيكل اجرا مي شوند.
 رجيستر كاربردي.

 سرعتي تا ۱۶ MISP در فركانس ۱۶MHZ.
* حافظ برنامه وداده غير فرار
 ۳۲ كيلوبايت حافظ FLASH قابل برنامه ريزي داخلي.
 پايداري حافظه FLASH قابليت ۱۰۰۰ بارنوشتن وپاك كردن
 ۲كيلو بايت حافظه داخلي SRAM

 ۱ كيلو بايت حافظه EEPROM داخلي قابل برنامه ريزي.
 پايداري حافظه EEPROM: قابليت ۱۰۰۰۰ بارنوشتن وپاك كردن.
قفل برنامه FLASH وحفاظت داده EEPROM
* قابليت ارتباط JTAG(IEEE std.)

 برنامه ريزي FLASH، EEPROM، FUSE BITSو Lock BITSاز طريق ارتباط JTAG
* خصوصيات جانبي دوتايمر- كانتر هشت بيتي با PRESCALER مجزا وداراي مد COMPARE
 يك تايمر كانتر شانزده بيتي با PRESCALER مجزا وداراي مدهاي COMPARE و CAPTURE
 ۴ كانال PWM

 ۸ كانال مبدل آنالوگ به ديجيتال ۱۰بيتي
 يك مقايسه كننده آنالوگ داخلي
 داراي RTC(REAL-TIME CLOCK) با ايسلاتورمجزا.
 WATCH DOG قابل برنامه ريزي با ايسلاتورداخلي
 ارتباط سريال SPI براي برنامه ريزي داخلي مدار
 قابليت ارتباط سريال SPI به صورتMASTER يا SLAVE
 قابليت ارتباط با پروتكل سريال دوسيمه(TOW-WIRE)

* خصوصيات ويژه ميكروكنترلر
 مدار POWER-ON RESET CIRCUIT
 BROWN- OUT DETECTION قابل برنامه ريزي
 منابع وقفه (INTERRUPT) داخلي وخارجي
 داراي ايسلاتور RC داخلي كاليبره شده.
 عملكرد كاملاً ثابت.

توان مصرفي پايين وسرعت بالا توسط تكنولوژي CMOS
* خطوط وانواع بسته بندي
 ۳۲ خط ورودي/ خروجي ( ) قابل برنامه ريزي.
 ۴۰ پايه (PIN) نوع PDIP، ۴۴ پايه نوع TQFP، ۴۴ پايه MLF
* تركيب پايه ها

فيوزهاي بيت ATMEGA 16
OCDEN: درصورتي كه بيت هاي قفل برنامه ريزي شده باشند برنامه ريزي اين بيت به همراه بيت JTAGEN باعث مي شود كه سيستم ON CHIP DEBUG فعال شود. برنامه ريزي شدن اين بيت به قسمت هايي ازميكرو امكان مي دهد كه درمدهاي SLEEP كاركنند كه اين خود باعث افزايش مصرف سيستم مي گردد. اين بيت به صورت پيش فرض برنامه ريزي نشده(۱) است.

JTAGEN: بيتي براي فعال سازي برنامه ريزي ميكرو از طريق استاندارد ارتباطي IEEE كه درحالت پيش فرض فعال است وميكرو مي تواند از اين ارتباط براي برنامه ريزي خود استفاده كند.
پايه هاي PC 5002 در اين ارتباط استفاده مي شود.
SPIEN: درحالت پيش فرض برنامه ريزي شده وميكرواز طريق سريال SPI برنامه ريزي
مي شود.

CKOPT: انتخاب كلاك كه به صورت پيش فرض برنامه ريزي نشده است عملكرد اين بيت بستگي به بيت هاي CKSEL دارد.
EESAVE: درحالت پيش فرض برنامه ريزي نشده ودرزمان پاك شدن ميكرو حافظه EEPROM پاك مي شود ولي درصورتي كه برنامه ريزي شود محتويات EEPROM درزمان پاك شدن ميكرو، محفوظ مي ماند.
BOOTZ 0, BOOTSZ 1: براي انتخاب مقدار حافظه BOOT طبق جدول زير برنامه ريزي مي شود ودرصورت برنامه ريزي فيوز بيت BOOTRS اجراي برنامه از آدرس حافظه BOOT آغاز خواهد شد.
پيكره بندي پورت ها

براي تعيين جهت پايه پورت ها از اين پيكره بندي استفاده مي كنيم. جهت يك پايه
مي تواند ورودي يا خروجي باشد.
CoFig portx= state
ConFig pinx.y= state

X,y بسته به ميكرو مي توانند به ترتيب پايه هاي ۰ تا ۱ پورت هاي A,B,C,D,E,F باشند. STATE نيز مي تواند يكي از گزينه هاي زير باشد:
INPUT يا۰: در اين حالت رجيستر جهت داده پايه يا پورت انتخاب صفر مي شود وپايه يا پورت به عنوان ورودي استفاده مي شود.
OUTPUT يا ۱: در اين حالت رجيستر جهت داده پايه يا پورت انتخاب يك مي شود وپايه يا پورت به عنوان ورودي استفاده مي شود.
زماني كه بخواهيد از پورتي بخوانيد بايستي از رجيستر PIN پورت مربوط استفاده كنيد ودر هنگام نوشتن در پورت بايستي در رجيستر PORT بنويسيد.
بررسي پورت هاي ميكروATMEGA 32

در اين بخش قصد داريم براي آشنايي بيشتر با عملكرد پورت ها ورجيسترهاي مربوطه به طور نمونه به بررسي پورت هاي ميكرو ATMEGA 32 بپردازيم.
پورت A
پورت A يك دو طرفه ۸ بيتي است. سه آدرس از مكان حافظه اختصاص به PORT دارد. يك آدرس براي رجيستر داده PORT، دومي رجيستر جهت داده DDRA وسومي پايه ورودي پورت PIN, A است. آدرس پايه هاي ورودي پورت A فقط قابل خواندن است درصورتي كه رجيستر داده ورجيستر جهت داده هم خواني وهم نوشتني هستند. تمام پايه هاي پورت داراي مقاومت Pull- up مجزا هستند. بافر خروجي پورت Aمي تواند تا Ma20 را Siml كند درنتيجه LED را مستقيماً راه اندازي كند. هنگامي كه پايه هاي PA0-PA 1 با مقاومت هاي Pull- down خارجي، خروجي استفاده ميشوند، آن ها SOURCE جريان مي شوند زماني كه مقاومت هاي Pull- up داخلي فعال باشند.

(رجيسترهاي پورت A)
رجيسترهاي پورت A عبارتند از:
– رجيستر داده پورت
– رجيستر جهت داده پورت DDRA-A
– بايت آدرس پايه هاي ورودي پورت PINA-A

PINA يك رجيستر نيست اين آدرس دسترسي به مقدار فيزيكي بر روي هريك از پايه هاي پورت A را ممكن مي سازد. زماني كه پورت A خوانده مي شود، داده لچ پورت A خوانده مي شود وزماني كه از PINA خوانده مي شود مقدار منطقي كه برروي پايه ها موجود است خوانده مي شود.

Comment Pull_up
PUD in SFLOR PORTxn DDXN
Tri_ State(Hi-z) No Input X 0 0
Pxn will source
Current if ex1. Pulled low Yes Input 0 1 0
Tri- state (Hi-z) No Input 1 1 0
Output low(sink) No Output X 0 1
Output High(source) No Output X 1 1

تمام ۸ پايه موجود زماني كه به عنوان پايه هاي ديجيتال استفاده مي شوند داراي عملكرد مساوي هستند. PAN، پايه ي عمومي، بيت DDAn در رجيستر DDRA مشخص كننده جهت پايه است. اگر DDAn يك باشد، Pan به عنوان يك پايه ي خروجي مورد استفاده قرار مي گيرد واگر DDAn صفرباشد، Pan به عنوان يك پايه ورودي در نظر گرفته مي شود. اگر port An يك باشد هنگامي كه پايه به عنوان ورودي تعريف شود، مقاومت Pull-up فعال مي شود براي خاموش كردن مقاومت بايد port An صفر شود يا اين كه پايه به عنوان خروجي تعريف شود. پايه هاي پورت زماني كه ري ست(Reset) اتفاق مي افتد، به حالت Tri-state مي رود.

ديگر كاربردهاي پورت A
پورت A به عنوان ADC هم استفاده مي شود. اگر تعدادي از پايه هاي پورت A خروجي تعريف شوند اين نكته بسيار مهم است كه درزمان نمونه برداري از سيگنال آنالوگ توسط ADC سوئيچ نشوند. اين كار ممكن است عمليات تبديلي ADC را نامعتير كند.
پورت B

پورت B يك دو طرفه ۸ بيتي است. سه آدرس از مكان حافظه اختصاص به PORT B دارد. يك آدرس براي رجيستر داده PORT B دومي رجيستر جهت داده DDR B وسومي پايه ورودي پورت B، PIN B است. آدرس پايه هاي ورودي پورت B فقط قابل خواندن است درصورتي كه رجيستر داده ورجيستر جهت داده هم خواندني وهم نوشتني است. پايه هاي پورت داراي مقاومت Pull-up مجزا هستند بافر خروجي پورت B مي تواند با mA20 را sink كند ودر نتيجه LED را مستقيماً راه اندازي كند. هنگامي كه PBO-PB7 با مقاومت هاي Pull-DOWN، خروجي استفاده مي شوند، آن ها SOURCE جريان مي شوند زماني كه مقاومت هاي Pull-up داخلي فعال باشند.

رجيستر هاي پورت B
– رجيسترو داده پورت PORT B-B
– رجيستر جهت داده پورت DDRB- B
– بايت، آدرس پايه هاي ورودي پورت PIN B-B
PIN B يك رجيستر نيست. اين آدرس دسترسي به مقدار فيزيكي بر روي هريك از

پايه هاي پورت B راممكن مي سازد. زماني كه پورت B خواننده مي شود، داراي لچ پورت B خوانده وزماني كه از PINB خوانده مي شود مقدار منطقي كه بر روي پايه هاي موجود است خوانده مي شود.
(استفاده از پورت B بعنوان يك عمومي ديجيتال)

تمام ۸ پايه موجود زماني كه به عنوان پايه هاي ديجيتال استفاده مي شوند داراي عملكرد مساوي هستند. PBN، پايه عمومي، بيت DDBn در رجيستر DDRB مشخص كننده جهت پايه است، اگر DDBn يك باشد، PBN به عنوان يك پايه خروجي مورد استفاده قرار مي گيرد واگر DDBn صفر باشد، PBn به عنوان يك پايه ورودي درنظر گرفته مي شود. اگر Port Bn يك باشد هنگامي كه پايه به عنوان ورودي تعريف مي شود، مقاومت Pull-up فعال مي شود براي خاموش كردن مقاومت Pull-up بايد Port Bn صفر باشد يا اين كه پايه عنوان خروجي تعريف شود. پايه هاي پورت زماني كه ري ست(Reset) اتفاق مي افتد به حالت Tri-state مي روند.

Comment Pull_up
PUD in SFLOR PORTxn DDXN
Tri_ State(Hi-z) No Input X 0 0
Pxn will source
Current if ex1. Pulled low Yes Input 0 1 0
Tri- state (Hi-z) No Input 1 1 0
Output low(sink) No Output X 0 1
Output High(source) No Output X 1 1

Alternate Functions Port pin
SCK(SPl BUS Serial clock PB7
MISO (spl BUS Master input/slave output) PB6
MOSl (spl BUS Master OUTPUT/SLAVE input) PB5
(spl slave select input)
PB4
ALN 1(aAnalog comparator Negative input)
OC 0(Timer/counter0 output compare Match output) PB3
ALN 0 (Analog comparator positive input)
Int 2(External interrupt 2 input) PB2
T1 (Timer/counter 0 External counter Input) PB1
TO(Timer/ counter 0 External counter input)
XCK(USART External clock input/output) PB0
جدول ديگر كاربردهاي پورت B

ديگر كاربردهاي پورت B
* PORT B-7 SCK
SCK: كلاك خروجي Master وكلاك ورودي slave براي ارتباط spi است. زماني كه SPI به عنوان SLAVE شكل دهي مي شود اين پايه ها باتوجه به تنظيم DDB7 ورودي درحالت Master خروجي تعريف مي شود.

* PORT B.6-MISO
MISO: ورودي داده Master وخروجي داده laveكه براي ارتباط SPI استفاده مي شود. زماني كه SPIورودي ودرحالت slave به عنوان خروجي استفاده مي شود.
* PORTB. 5-MISO
MISO: ورودي داده SLAVE وخروجي داده Master كه براي ارتباط SPI استفاده مي شود. زماني كه SPI به عنوان Master شكل دهي شود اين پايه با توجه به تنظيمات DDB5 خروجي ودرحالت slave به عنوان ورودي استفاده مي شود.

* PORT.4-SS
SS: زماني كه SPI به عنوان slave شكل دهي شود PB.4 با توجه به DDB4 ورودي تعريف مي شود ودر slave با LOWشدن اين پايه SPI فعال مي شود. اين پايه در Master مي تواند خروجي يا ورودي تعريف شود.

* AIN 1 ، PORTB.3-COC0
AIN1: ورودي منفي مقايسه كننده آنالوگ است.
OC 0: ديگر كاربرداي پايه به عنوان خروجي مد مقايسه اي Timer/counter 0 است. پايه PB3 بايك كردن DDP7 مي تواند براي خروجي مد مقايسه اي Timer/counter 0 شكل دهي شود.

* PORTB .3-INTZ, AIN 0
AIN 0: ورودي مثبت مقايسه كننده آنالوگ است.
INTZ: ديگر كاردبرد اين پايه به عنوان منبع وقفه خارجي دو است. پايه PB2 مي تواند به عنوان منبع وقفه خارجي براي ميكرو استفاده شود.
* PORT B.1-T-1
T1: ورودي كلاك براي Timer/counter 1 است.

* PORT B, 0- XCK, TO
T 0: ورودي كلاك براي Timer/counter 0 است.
XCK: اين پايه نيز مي تواند به عنوان كلاك خارجي USART استفاده شود. اين پايه فقط زماني كه USART در مد آسنكرون كار مي كند فعال مي شود.
پورت C

پورت C يك دوطرفه ۸ بيتي است. سه آدرس از مكان حافظه اختصاص به PORTدارد. يك ‌‌آدرس براي رجيستر داده PORTC، دومي رجيستر جهت داده DDRC وسومي پايه ورودي پورت C، PINC است. آدرس پايه هاي ورودي پورت C فقط قابل خواندن است درصورتي كه رجيستر داده رجيستر جهت داده هم خواندني وهم نوشتني است. تمام پايه هاي پورت داراي مقاومت(Puullup) مجزا هستند. بافر خروجي پورت Cمي تواند تا mA20 را sink كند ودرنتيجه LED را مستقيماً راه اندازه مي كند. هنگامي كه POC-PC7 با مقاومت هاي Pull-DOWN خروجي استفاده مي شوند آن هاsource جريان مي شوند زماني كه مقاومت هاي Pull-up داخلي فعال باشند.