میکروکنترلر ها

چکيده :
سخت افزار اين پروژه به طور کلي از يک ميکروکنترلر Atmega16 از شرکت ATMEL و يک LCD 4*20 جهت نمايش عملکرد و ۴ رله در خروجي و چند قطعه ديگر جهت کارهاي جانبي و تنظيمات سخت افزاري تشکيل شده است .

اين پروژه جهت کنترل ۴ موتور مجزا با تنظيمات مجزا مي باشد که توسط برنامۀ Bascom و به زبان Basic طراحي شده است .
جهت شناسايي اين که کدام موتور بايد روشن شود به صورت مقايسه اي برنامۀ ساعت نوشته شده است که هر لحظه تنظيمات ۴ موتور با ساعت چک مي شود و هر کدام که با ساعت Set شود بدين ترتيب است که اگر ثانيه با ثانيه ساعت برابر شد برنامه به قسمت دقيقه مي رود و اگر دقيقه برابر شد به قسمت ساعت رفته و آن را نيز مانند بقيه چک ميکند و در صورت برابر

نام اين پروژه HMI است که مخفف سه کلمۀ
Human Machine Interface
به معني ماشين واسط انساني است .

مقدمه :
امروزه با توجه به پيشرفت علم الکترونيک از ميکروکنترلرها استفاده بيشتري مي شود که اين ميکروکنترلرها دو مزيت بزرگ دارند : ۱ سادگي مدار از نظر سخت افزاري ۲ ارزان تمام شدن مدار .
ميکروکنترلرها انواع مختلف و با زبان هاي برنامه نويسي مختلف از جمله Basic و C و…
مي باشند که هر يک مزيتها و معايبي را دارند .

در اين پروژه که جهت کنترل زمان روشن و خاموش شدن ۴ موتور در خروجي يا به طور کلي ۴ خروجي از ميکروکنترلر AVR از نوع ATmega16 شرکت ATmel و توسط زبان Basic و در محيط Bascom طراحي شده است .

مختصري راجع به AVR
زبانهاي سطح بالا يا همان (HIGH LEVEL LANGUAGES) HLL به سرعت در حال تبديل شدن به زبان برنامه نويسي استاندارد براي ميکرو کنترلرها (MCU) حتي براي ميکروهاي ۸ بيتي کوچک هستند . زبان برنامه نويسي BASIC و C بيشترين استفاده را در برنامه نويسي ميکروها دارند ولي در اکثر کاربردها کدهاي بيشتري را نسبت به زبان برنامه نويسي اسمبلي توليد مي کنند . ATMEL ايجاد تحولي در معماري ، جهت کاهش کد به مقدار مينيمم را درک کرد که نتيجه اين تحول ميکرو کنترلرهاي AVR هستند که علاوه بر کاهش و بهينه سازي مقدار کدها به طور واقع عمليات را تنها در يک کلاک سيکل توسط معماري ( REDUCED RISC INSTRUCTION SET COMPUTER) انجام مي دهند و از ۳۲ ريجيستر همه منظوره (ACCUMULATORS) استفاده مي کنند که باعث شده ۴ تا ۱۲ بار سريعتر از ميکروهاي موزد استفاده کنوني باشند .
تکنولوژي حافظه کم مصرف غير فرّار شرکت ATMEL براي برنامه ريزي AVR ها مورد استفاده قرار گرفته است در نتيجه حافظه هاي FLASH و EEPROM در داخل مدار قابل برنامه ريزي (ISP) هستند . ميکروکنترلرهاي اوليه AVR داراي ۱ ، ۲ ، ۸ کيیوبايت حافظه FLASH و به صورت کلمات ۱۶ بيتي سازماندهي شده بودند .
AVR ها به عنوان ميکروهاي RISC با دستورات فراوان طراحي شده اند که باعث ميشود حجم کد توليد شده کم و سرعت بالاتري به دست آيد .

عمليات تک سيکل :
با انجام تک سيکل دستورات ، کلاک اسيلاتور با کلاک داخلط سیستم يکي مي شود . هيچ تقسيم کننده اي در داخل AVR قرار ندارد که ايجاد اختلاف فاز کلاک کند . اکثر ميکروها کلاک اسيلاتور به سيستم را با نسبت ۱:۴ يا ۱:۱۲ تقسيم مي کنند که
خود باعث کاهش سرعت مي شود . بنابراين AVR ها ۴ تا ۱۲ بار سريعتر و

مصرف
آنها نيز ۴-۱۲ بار نسبت به ميکروکنترلرهاي مصرفي کنوني کمتر است زيرا در تکنولژي CMOS استفاده شده در ميکروهاي AVR ، مصرف توان سطح منطقي متناسب با فرکانس است .
نمودار زير افزايش (MILLION INSSTRUCTION PER SECONDS) MIPS را به علت انجام عمليات تک سيکل AVR (نسبت ۱:۱ ) در مقايسه با نسبتهاي ۱:۴ و ۱:۱۲ دي ديگر ميکروها را نشان مي دهد .
نمودار مقايسه افزايش
MIPS/POWER Consumption در AVR با ديگر ميکرو کنترلرها .

طراحي براي زبان هاي BASIC و C

 

زبان هاي BASIC و C بيشترين استفاده را در دنياي امروز بعنوان زبان هاي HLL دارند. تا امروزه معماري بيشتر ميکروها براي زبان اسمبلي طراحي شده و کمتر از زبانهاي HLL حمايت کرده اند .
هدف ATMEL طراحي معماري بود که هم براي زبان اسمبلي و هم زبان هاي HLL مفيد باشد . به طور مثال در زبانهاي C و BASIC مي توان يک متغيير محلي به جاي متغيير سراسري در داخل زيربرنامه تعريف کرد ، در اين صورت فقط در زمان اجرا زير برنامه مکاني از حافظه RAM براي متغيير اشغال مي شود در صورتي که اگر متغييري به عنوان سراسري تعريف گردد در تمام وقت مکاني از حافظه FLASH ROM را اشغال کرده است .
براي دسترسي سريعتر به متغييرهاي محلي و کاهش کد ، نياز به افزايش رجيسترهاي همه منظوره است . AVR ها داراي ۳۲ رجيستر هستند که مستقيماً به
( UNIT ARITHMETIC) LOGIC ALU) متصل شده اند ، و تنها در يک کلاک سيکل به اين واحد دسترسي پيدا مي کنند .سه جفت از اين رجيسترها مي توانند به عنوان رجيسترهاي ۱۶ بيتي استفاده شوند .

کليات پروژه و نحوه عملکرد :
اين پروژه جهت زمان بندي مجزاي ۴ موتور (يا هر خروجي ديگر )استفاده مي شود که با تنظيم هر موتور مي توان به طور مجزا از آن استفاده کرد و تنظيمات هر موتور با موتورهاي ديگر کاملاً مجزا است .
در اين پرژه پس از Initialize شدن و معرفي پرژه به صفحۀ اصلي مي رسيم که در قسمت بالاي صفحه ، ساعت آن قرار دارد که در هنگام روشن شدن در صورت تنظيم نکردن از ساعت ۱۲:۰۰:۰۰ شروع به شمارش مي کند .
در قسمت زيرين نشانگر ساعت ، نشانگر وضعيت ۴ موتور قرار دارد که در صورتي که موتوري روشن باشد در جلوي آن کلمه ي ON و در صورتي که خاموش باشد کلمۀ OFF درج شده است .
در پايين صفحه LCD 4 گزينۀ TAB – UP – MENU – SAVE وجود دارد .
براي تنظيمات موتور و ساعت توسط گزينۀ TAB به صفحۀ بعد مي رويم در صفحۀ بعد دو گزينه با نامهاي Mode 1 و Mode 2 داريم که Mode 1 براي تنظيمات ساعت و Mode 2 براي تن

ظيمات ۴ موتور است و در صورتي که سوئيچ زير هر گزينه را بفشاريم به آن MODE رفته و شروع به تنظيمات مي کنيم به شرح زير :
اگر Mode 1 برويم وارد مُد ساعت شده ايم و با کليد TAB روي هر قسمت از ساعت و دقيقه و ثانيه مي رويم پس از اين کار با گزينه Up شروع به تنظيم هر قسمت مي کنيم و
با گزينۀ TAB به قسمت بعدي مي رويم و در صورتي که بخواهيم تنظيمات ثبت شود توسط گزينۀ Save آن را ثبت مي کنيم و توسط گزينۀ Esc به صفحۀ اصلي بر ميگرديم . حال اگر به MODE 2 برويم وارد مُد تنظيمات ۴ موتور رفته ايم و با کليد TAB از ۴ موتور يکي را انتخاب کرده و توسط گزينۀ OK وارد تنظيمات آن موتور ميشود که شامل دو گزينۀ Start و Time است که گزينۀ Start زمان روشن شدن و گزينۀ Time زمان خاموش شدن را مشخص مي کند و براي تنظيمات آن نيز مانند تنظيمات ساعت توسط دو گزينۀ TAB و Up تنظيم مي کنيم و توسط گزينۀ Save آن را قبول کرده و تنظيم مي کنيم ، سپس توسط گزينۀ Esc از آن صفحه خارج و به صفحۀ قبل بر مي گرديم و اين عمل براي تنظيم ۴ موتور صورت مي گيرد .
در پايان جا دارد اين نکته نيز گفته شود که تنظيمات ثبت شده براي هر ۴ موتور در EEPROM ثبت مي شود و در صورتي که تغذيۀ آن قطع شود و براي بار دوم روشن شود تنها بايد ساعت تنظيم شود و تنظيمات موتور دقيقاً مانند قبل عمل خواهند کرد .

توضيح در مورد سخت افزار
ميکروکنترلرها AVR اين پروژه از نوع Atmega16 انتخاب شده است که داراي فضاي حافظۀ بيشتر و EEPROM مي باشد .نمايشگر اين پروژه از نوع LCD 4*20 با شماره
TS-2040-1 مي باشد که ديتا شيت آن در فصل پاياني ارائه شده است .
در قسمت تغذيه از چهار ديود IN4007 استفاده شده و براي صافي آن از خازن ۱۰۰۰Uf و خازن عدسي ۱۰۰nf استفاده شده است و از يک رکولاتور ۷۸۰۵ براي تثبيت ولتاژ ۵ ولت در خروجي قرار گرفته است . نشان دهنده Power قرار دارد .
براي کنترل و مقداردهي از ۴ ميکروسوئيچ به همراه ۴ مقاومت ۱۰ کيلو اُهم که پزيري را صفر مي کند و در عمل به اين مقاومتها ، مقاومت هاي Pall down گويند .
يک مقاومت براي تنظيم کنتر است ، LCD بين پايۀ ۳ و زمين قرار دارد و يک مقاومت هم براي محدود کردن جريان سوئيچ رله ها است .

خصوصيات ATmega16 , ATmega16 L

• از معماري AVR RISC استفاده مي کند .
– کارايي بالا و توان مصرفي کم .
– داراي ۱۳۱ دستورالعمل با کارايي بالا که اکثراً تنها در يک کلاک سيکل اجرا ميشوند .
– ۳۲*۸ رجيستر کاربردي .
– سرعتي تا ۱۶ MIPS در فرکانس ۱۶ MHZ
• حافظه ، برنامه و دادۀ غير فرّار
– ۱۶K بايت حافظه FLASH داخلي قابل برنامه ريزي
پايداري حافظه FLASH : قابليت ۱۰٫۰۰۰ بار نوشتن و پاک کردن (WRITE , ERASE)
– 1024 بايت حافظه داخلي SRAM
– 512 بايت حافظه EEPROM داخلي قابل برنامه ريزي.
پايداري حافظه EEPROM : قابليت ۱۰۰٫۰۰۰ بار نوشتن و پاک کردن (WRITE , ERASE)
– قفل برنامۀ FLASH و حفاظت دادۀ EEPROM
• قابليت ارتباط JTAG (IEEE Std.)
– برنامه ريزي برنامۀ FLASH ، EEPROM ، FUSE BITS و LOCK BITS از طريق ارتباط JTAG
• خصوصيات جانبي
– دو تايمر – کانتر (TIMER / COUNTER) 8 بيتي با PRESCALER مجزا و مُد COMPARE
– يک تايمر – کانتر (TIMER / COUNTER) 16 بيتي با PRESCALER مجزا و داراي مُدهاي COMPARE و CAPTURE
– 4 کانال PWM
– 8 کانال مبدل آنالوگ به ديجيتال ۱۰ بيتي

۸ کانال SINGLE – ENDED
داراي ۷ کانال تفاضلي در بسته بندي TQFP
داراي دو کانال تفاضلي با کنترل گين ۱۰x , 1x و ۲۰۰x
– يک مقايسه کننده آنالوگ داخلي .
– WATCHDOG قابل برنامه ريزي با اسيلاتور داخلي .

– قابليت ارتباط با پروتکل سريال دوسيمه (TWO – WIRE)
– قابليت ارتباط سريال (SERIAL PERIPHERAL INTERFACE) SPI به صورت MASTER يا SLAVE.
– USART سريال قابل برنامه ريزي
• خصوصيات ويژه ميکروکنترلر
– POWER-ON RESET CIRCUIT و BROWN-OUT قابل برنامه ريزي .
– داراي اسيلاتور RC داخلي کاليبره شده .
– داراي ۶ حالت
EXTENDED STANDBY , STANDBY , POWER – SAVE , IDLE , POWER-DOWN) SLEEP و (ADC NOISE REDUCTION
– منابع وقفه (ENTERRUBT) داخلي و خارجي .
– عملکرد کاملاً ثابت .
– توان مصرفي پايين و سرعت بالا توسط تکنولوژي CMOS
• توان مصرفي در ۲۵°c , 3v , 1mhz براي ATMEGA16L
– حالت فعال (ACTIVE MODE) 1.1mA
– در حالت بي کاري (IDLE MODE) 0.35mA
– در حالت ۱uA>:POWER-DOWN
• ولتاژهاي عملياتي (کاري)
– ۲٫۷v تا ۵٫۵v براي (Atmega16L)
– 4.5v تا ۵٫۵v براي (Atmega16)
• فرکانسهاي کاري
– ۰MHZ تا ۸MHZ براي (Atmega16L)
– 0MHZ تا ۱۶MHZ براي (Atmega16)
• خطوط I/O و انواع بسته بندي
– ۳۲ خط ورودي / خروجي (I/O) قابل برنامه ريزي .
– ۴۰ پايه ۴۴ , PDIP پايه TQFP و ۴۴ پايه MLF

• ترکيب پايه ها

DEFFAULT VALUE DESCRIPTION BIT

NO. FUSE HIGT BYTE
1 (UNPROGRAMMED , OCD ENABLE) ENABLE OCD 7 OCDEN
0 ( PROGRAMMED , JTSG ENABLE ) ENABLE JTAG 6 JTAGEN
0 (PROGRAMMED , SPI PROG.ENABLE)
ENABLE SERIAL PROGRAM AND DATA DOWNLOADING 5 SPIEN
1 (UNPROGRAMMED , SPI PROG.ENABLE) OSCILLATOR OPTIONS 4 CKOPT
1 (UNPROGRAMMED , EEPROM NOT PRESER VED) EEPROM MEMORY IS PRESER VEDTHROUGH THE CHIP ERASE 3 EESAVE
0 (PROGRAMMED) SELECT BOOT SIZE 2 BOOTSZ1
0 (PROGRAMMED) SELECT BOOT SIZE 1 BOOTSZ0
1 (UNPROGRAMMED) SELECT PESET VECTOR 0 BOOTRST
FUSE HIGT BYTE

FUSE LOW BYTE
DEFFAULT VALUE DESCRIPTION BIT

NO. FUSE HIGT BYTE
1 (UNPROGRAMMED ) BROWN OUT DETECTOR TRIGGER LEVEL 7 BODLEVEL
1 ( UNPROGRAMMED , BOD DISABLE) BROWN OUT DETECTOR ENABLE 6 BODEN
1 (UNPROGRAMMED ) SELECT START-UP TIME 5 SUT1
0 (PROGRAMMED ) SELECT START-UP TIME 4 SUT0
0 (PROGRAMMED ) SELECT CLOCK SOURCE 3 CKSEL3

۰ (PROGRAMMED ) SELECT CLOCK SOURCE 2 CKSEL2
0 (PROGRAMMED ) SELECT CLOCK SOURCE 1 CKSEL1
1 (UNPROGRAMMED) SELECT CLOCK SOURCE 0 CKSEL0

فيوز بيت ها با پاک کردن (ERASE) ميکرو تأثيري نمي بينند ولي مي توانند با برنامه ريزي بيت LB1 قفل شوند .منطق ۰ به معناي برنامه ريزي ريزي شدن و ۱ به معني برنامه
ريزي نشدن بيت است .
OCDEN : در صورتي که بيت هاي قفل برنامه ريزي نشده باشند برنامه ريزي اين بيت به همراه بيت قسمتهاي از ميکرو امکان ميدهد که در مودهاي SLEEP کار کنند که اين خود باعث افزايش مصرف سيستم مي گردد .اين بيت به صورت پيش فرض برنامه ريزي نشده (۱) است .
JTAGEN : بيتي براي فعالسازي برنامه ريزي ميکرو از طريق استاندارد ارتباطي (JTAG) IEEE که در حالت پيش فرض فعال است و ميکرو مي تواند از اين ارتباط براي برنامه ريزي خود استفاده نمايد .
SPIEN : در حالت پيش فرض برنامه ريزي شده و ميکرو از طريق سريال SPI برنامه ريزي مي شود .
CKOPT : انتخاب کلاک که به صورت پيش فرض برنامه ريزي نشده است . عملکرد اين بيت به بيت هاي CKSEL بستگي دارد که در بخش کلاک سيستم (۱) در انتهاي همين فصل آمده است .
EESAVE : در حالت پيش فرض برنامه ريزي نشده و در زمان پاک شدن (ERASE) ميکرو حافظه EEPROM پاک مي شود ولي در صورتي که برنامه ريزي شود محتويات EEPROM در زمان پاک شدن ميکرو محفوظ ميماند .
BOOTSZ0 , BOOTSZ1 : براي انتخاب مقدار حافظه BOOT طبق جدول زير
برنامه ريزي مي شوند و در زمان برنامه ريزي شدن فيوز بيت BOOTRST اجراي برنامه از آدرس حافظه BOOT آغاز خواهد شد .

Boot reset Address Boot flash
Addresses Application flash
Addresses page Boot
size
BOOTSZ0 BOOTSZ1
0x1f80 0x1f80-1fff 0x0000-0x1f 7f 2 128

 

words 1 1
0x1f00 0x1f00-1fff

۰x0000-0x1eff 4 256 words 0 1
0x1E00 0x1E00-x1fff 0x0000-x1Dff 8 512 words 1 0
0x1C00 0x1C00-x1fff 0x0000-0x1Bff 16 1024 words 0 0
جدول انتخاب مقدار حافظه BOOT توسط فيوز بيت هاي BOOTSZ 0,1

BOOTRST : بيتي براي انتخاب بردار ري ست BOOT که در حالت پيش فرض برنامه ريزي نشده و آدرس بردار ري ست $۰۰۰۰ است و در صورت برنامه ريزي آدرس بردار ري ست به آدرسي که فيوز بيت هاي BOOTSZ0 و BOOTSZ1 مشخص کرده اند تغيير مي يابد .
RESET ADDRES BOOTRST
RESET VECTOR = APPLICATION RESET(ADDRESS $0000) 1(UNPROGRAMMED)
RESET VECTOR = BOOT LOADER RESET 0(PROGRAMMED)
جدول انتخاب آدرس بردار ريست توسط فيوز بيت BOOTRST

BOODLAVEL : زماني که اين بيت برنامه ريزي نشده (پيش فرض ) باشد اگر ولتاژ پايه VCC از ۲٫۷v پايين تر شود ري ست داخلي ميکرو فعال شده و سيستم را ري ست
مي کند . زماني که اين بيت برنامه ريزي شده باشد اگر ولتاژ پايه VCC از ۴v پايين تر شود ري ست داخلي ميکرو فعال شده و ميکرو را ري ست مي کند
BODEN : براي فعال کردن عملکرد مدار BROWN-OUT اين بيت بايستي برنامه ريزي شده باشد . اين بيت به صورت پيش فرض برنامه ريزي نشده است .
BROWN – OUT DETECTION BOODEN , BODLEVEL
DISABLE 11
DISABLE 10
AT VCC = 2.7V 01
AT VCC = 4.0V 00
جدول انتخاب سطح ولتاژ براي مدار BROWN-OUT داخلي

SUT1, SUT0 : عملکرد اين دو بيت براي انتخلب زمان START-UP .
CKSEL3 … CKSEL0 : عملکرد اين بيت ها در انتهاي همين فصل کاملاً

توضيح داده شده است . مقدار پيش فرض INTERNAL RC OSCILLATOR @ 1MHZ است .

کلاک سيستم
توضيع کلاک
کلاک سيستم ميکرو طبق شکل زير توضيع شده است .
کلاکCPU- CLKcpu
اين کلاک براي انجام عمليات AVR به طور مثال رجيسترها استفاده ميشود .توقف و به مکث بردن اين کلاک باعث مي شود که عمليات و محاسبات AVR انجام نگيرد .

کلاک CLK I/0 – I/0
اين کلاک توسط بسياري از ماژول هاي I/0 به طور مثال تايمرها ، کانترها ، SPI و USART استفاده مي گردد.

کلاکFLASH CLKflash-
اين کلاک عمليات ارتباطي با حافظه FLASH را کنترل مي کند . کلاک FLASH معمولاً با کلاک CPU فعال مي شود .

کلاک غير همزمان تايمر –CLK ASY
با اين کلاک تايمر / کانتر به صورت غير همزمان توسط کريستال ساعت ۳۲۷۶۸ HZ کار مي کند حتي اکر سیستم در حالت SLEEP باشد .
کلاک CLK ADC – ADC
ADC از يک کلاک جداگانه حساس استفاده مي کند که باعث مي شود کلاک هاي CPU و I/0 به حالت ايست (HALT) تا نويز حاصل از مدار ديجيتال داخلي کاهش يافته و در نتيجه عمليات تبديل با دقت بيشتري انجام يابد .
منابع کلاک (CLOCK SOURCE)
ميکرو داراي انواع منابع کلاک اختياري است که مي توان انواع آن را به وسيله بيت هاي قابل برنامه ريزي (FLASH FUSE BITS)FLASH انتخاب کرد . کلاک انتخاب شده به عنوان ورودي کلاک AVR در نظر گرفته شده و کلاک مناسب به هر قسمت سيستم
در تمام جداول فيوز بيت ها ، ۰ به معناي بيت برنامه ريزي شده (PROGRAMMED) و ۱ به معناي بيت برنامه ريزي نشده (UNPROGRAMMED) است .

هنگامي که CPU از مُد POWER-DOWN یا POWER-SAVE خارج ميشود زماني به نام زمان شروع (START_UP) براي رسيدن کريستال به شرايط پايدار ايجاد و سپس دستورات برنامه اجرا مي شود و هنگامي که CPU از ريست شروع به کار ميکند، تأخيري اضافه (DELAY) براي رسيدن ولتاژ به سطح پايدار ايجاد شده و سپس اجراي برنامه آغاز مي شود . براي ايجاد زمانبندي هاي مذکور از اسيلاتور WATCHDOG استفاده مي گردد.
اسيلاتور کريستالي (EXTERNAL CTYSTAL / CERAMIC SESONATOR)
در اين حالت کريستال يا نوسانگر سراميکي (CERAMIC RESONATOR) يا کريستال کوارتز (QUARTZ CRYSTAL) . فيوز بيت CKOPT مي تواند براي دو حالت مختلف استفاده شود . زماني که محيط بسيار نويزي باشد ، اين بيت برنامه ريزي مي شود که رنج وسيعي از فرکانسها را شامل مي شود . برنامه ريزي نکردن CKOPT باعث کاهش مصرف شده و بر خلاف قبل رنج محدودي از فرکانسها را شامل مي شود .
خازن هاي C1 و C2 براي کريستال ها و نوسانگرها بايستي يک مقدار باشند و مقادير آنها بستگي به کريستال ، نوسانگر و نويزهاي الکترومغناطيسي محيط دارد . براي نوسانگري هاي سراميکي بايستي امقدار خازن هايي که توسط کارخانه پيشنهاد مي گردد استفاده شود .

شکل اتصال کريستال به ميکرو در
حالت اسيلاتور کريستالي

اسيلاتور کريستالي فرکانس پايين ( EXTERNAL_LOW FREQUENCY CRYSTAL )
براي استفاده از کريستال ساعت ۳۲٫۷۶۸KHZ فيوز بيت هاي CKSEL با ۱۰۰۱ برنامه ريزي مي شوند و کريستال طبق شکل صفحه ي قبل به پايه هاي XTAL1 و XTAL2 متصل مي شود .با برنامه ريزي کردن CKOPT مي توان خازن هاي داخلي را فعال نمود و در نتيجه خازن هاي خارجي را برداشت . مقدار نامي خازن هاي داخلي ۳۶PF است .
اسيلاتور RC خارجي EXTERNAL RC OCSILLATOR) (
فرکانس تقريبي توسط معادله f=1 / (3RC) به دست مي آيد . مقدار خازن بايستي حداقل ۲۲PF باشد . با برنامه ريزي کردن فيوز بيت CKOPT کاربر مي تواند خازن هاي داخلي ۳۶PF را بين XTAL1 وGND راه اندازي کند و در نتيجه نيازي به خازن خارجي نيست .

اسيلاتور RC کاليبره شده داخلي (CALIBRA TED INTERNAL RC SCILLATOR)
اسيلاتور RC کاليبره شده ي داخلي ، کلاک هاي نامي داخلي ۱ ، ۲ ، ۴ و ۸MHZ را در ولتاژ ۵v و ۲۵ °C توليد مي کند . اين کلاک با برنامه ريزي کردن بيت هاي CKSEL مي تواند به عنوان کلاک سيستم استفاده گردد که در اين حالت نيازي به مدار خارجي نيست.
زماني که از اين مُد استفاده مي گردد فيوز بيت CKOPT هميشه بايستي برنامه ريزي شده باشد .

NOMINAL RANGE (MHZ) CKSEL3..0

۱٫۰ ۰۰۰۱ (¹)
۲٫۰ ۰۰۱۰
۴٫۰ ۰۰۱۱
۸٫۰ ۰۱۰۰
براي ميکرو به صورت پيش فرض اين گزينه انتخاب شده است

کلاک خارجي (EXTERNAL CLOCK)
براي راه اندازي ميکرو توسط کلاک خارجي پايه XTAL1 بايستي وصل شود . براي کار در ايم مُد بيت هاي CKSEL با ۰۰۰۰ برنامه ريزي مي شوند . با برنامه ريزي کردن فيوز بيت CKOPT خازن داخلي ۳۶PF بين پايه هاي XTAL1 و GND فعال مي شود . در اين مُد بايد از تغييرات ناگهاني فرکانس کلاک خارجي براي اطمينان از انجام پايدار و صحيح عمليات ميکرو کنترلر (MCU) جلوگيري کرد . تغييرات بيشتر از ۲% در فرکانس کلاک خارجي ممکن است باعث رفتارهاي غير قابل انتظار ميکرو شود .
زماني که قصد تغيير فرکانس را داريد بايستي ميکرو در حالت RESET نگه داشته شود .
اسيلاتور تايمر / کانتر
براي ميکرو کنترلرهايي که داراي پايه TOSC1 و TOSc2 هستند ، کريستال ساعت ۳۲٫۷۶۸KHZ مستقيماً بين دو پايه قرار مي گيرد و تايمر / کانتر ۰ يا ۲ به صورت آسنکرون از اين دو پايه کلاک دريافت مي کند .
پيکره بندي و کار با امکانات AVR در BASCOM
امکانات تمام ميکروهاي AVR قبل از استفاده بايستي پيکره بندي (CONFIG) شوند . در اين فصل به پيکره بندي يا همان راه اندازي امکانات AVR پرداخته ايم . در ابتدا هر بخش رجيسترهاي وسيله شرح داده شده اند و سپس نحوه پيکره بندي و دستورات مربوط به وسيله کاملاً تشريح شده است و از آنجا که ارائۀ مثال در يادگيري بسيار مفيد است در انتها نيز مثالهايي براي درک بيشتر با کاربرد و نحوۀ کار با وسيله آماده است . در اين بخش سعي شده است که دستورات مربوط به امکانات AVR در کنار پيکره بندي قرار گيرد تا کاربر بتواند با مطالعه بخش مربوط به وسيله دلخواه بتواند به راحتي وسيله را راه اندازي و با آن کار کند .

 

پيکره بندي پورت ها
براي تعيين جهت پايه پورت ها از اين پيکره بندي استفاده مي نماييم . جهت يک پايه مي تواند فرودي يا خروجي باشد .
Config portx = state
Config pinx.y = state
Yو X بسته به ميکرو مي تواند به ترتيب پايه هاي ۰ تا ۷ پورت هاي A,B,C,D,E,F باشند . State نيز ميتواند يکي از گزينه هاي زير باشد :
INPUT يا ۰ : در اين حالت رجيستر جهت داده پايه يا پورت انتخاب شده صفر (۰) مي شود و پايه يا پورت به عنوانه ورودي استفاده مي شود .
OUTPUT يا ۱ : در ايم حالت رجيستر جهت داده پايه يا پرت انتخاب شده يک (۱) ميشود و پايه يا پرت به عنوان خروجي استفاده مي شود .