8/2/4K Bytes In-System Programmable Flash ပါရှိသော Atmel 8-bit AVR Microcontroller
အင်္ဂါရပ်များ
- စွမ်းဆောင်ရည်မြင့်၊ ပါဝါနိမ့် AVR® 8-Bit Microcontroller
- အဆင့်မြင့် RISC ဗိသုကာ
- 120 အားကောင်းတဲ့ညွှန်ကြားချက်များ - တစ်ခုတည်းနာရီစက်ဝိုင်းကွပ်မျက်ခြင်း
- 32 x 8 အထွေထွေရည်ရွယ်ချက်များအလုပ်လုပ်မှတ်ပုံတင်
- အပြည့်အဝတည်ငြိမ်သောစစ်ဆင်ရေး
- မတည်ငြိမ်သောအစီအစဉ်နှင့်ဒေတာမှတ်ဉာဏ်
- In-System Programmable Program Memory Flash ၏ ၂/2/4K Bytes
- ခံနိုင်ရည်- 10,000 ရေး/ဖျက်ခြင်း သံသရာ
- EEPROM မှ 128/256/512 bytes စနစ်
- ခံနိုင်ရည်- 100,000 ရေး/ဖျက်ခြင်း သံသရာ
- 128/256/512 Internal SRAM bytes
- Self-Programming Flash Program အတွက် Programming Lock နှင့် EEPROM Data Security
အရံပစ္စည်းများ
- Prescaler နှင့် PWM လိုင်းနှစ်လိုင်းနှင့်အတူ 8-bit Timer / Counter
- Separate Prescaler ဖြင့် ၈-bit မြန်သော Timer / ကောင်တာ
- 2 သီးခြားထွက်ရှိမှုနှင့်အတူမြင့်မားသောကြိမ်နှုန်း PWM ရလဒ်များမှတ်ပုံတင်နှိုင်းယှဉ်
- Programmable သေအချိန် Generator ကို
- USI - Start Condition Detector နှင့်အတူ Universal Serial Interface
- 10-bit ADC
4 လူပျိုအဆုံးသတ်လိုင်းများ
Programmable ရရှိမှုနှင့်အတူ Differential ADC Channel Pairs (2x, 1x)
အပူချိန်တိုင်းတာခြင်း။
သီးခြား On-chip လှိုနှင့်အတူ Programmable စောင့်ကြည့်ရေးအဖွဲ့ Timer
On-chip ကို Analog နှိုင်းယှဉ်
အထူး Microcontroller တွေ Features
debugWIRE On-chip ကို debug စနစ်
SPI Port မှတစ်ဆင့် In-System Programmable
ပြင်ပနှင့်ပြည်တွင်း Interrupt သတင်းရင်းမြစ်
Low Power Idle, ADC Noise Reduction, နှင့် Power-Down Mode များ
ပါဝါ -on ကိုပြန်လည်စတင်ပါ
Programmable ဘရောင်းထွက်ထောက်လှမ်းခြင်းတိုက်နယ်
Internal Calibrated လှို
I / O နှင့်အထုပ်များ
ခြောက်လ Programmable I / O လိုင်းများ
8-pin PDIP, 8-pin SOIC, 20-pad QFN / MLF နှင့် 8-pin TSSOP (သာ ATtiny45 / V)
လည်ပတ်မှုပမာဏtage
- ၁.၈ - ၅.၅ ဗို့အား ATtiny1.8V / 5.5V / 25V
- 2.7 - ATtiny5.5 / 25/45 အတွက် 85V
အမြန်နှုန်း
- ATtiny25V / 45V / 85V: 0 - 4 MHz @ 1.8 - 5.5V, 0 - 10 MHz @ 2.7 - 5.5V
- ATtiny25 / 45/85: 0 - 10 MHz @ 2.7 - 5.5V, 0 - 20 MHz @ 4.5 - 5.5V
စက်မှုအပူချိန်အတိုင်းအတာ
ပါဝါစားသုံးမှုနည်းပါးခြင်း။
သက်ဝင်မုဒ်
1 MHz, 1.8V: 300 μA
ပါဝါပိတ်စနစ်:
ပင်နံပါတ်ပြင်ဆင်မှုများ
Pinout ATtiny25 / 45/85
ပင်ထိုးဖော်ပြချက်များ
VCC- ထောက်ပံ့မှု အတွဲtage.
GND: မြေပြင်။
Port B (PB5:PB0) : Port B သည် အတွင်းပိုင်းဆွဲအား ခုခံမှု ပါ၀င်သော 6-bit bi-directional I/O port တစ်ခု (ဘစ်တစ်ခုစီအတွက် ရွေးချယ်ထားသည်)။ Port B output buffers များသည် မြင့်မားသော sink နှင့် source capability နှစ်ခုလုံးဖြင့် symmetrical drive လက္ခဏာများရှိသည်။ သွင်းအားစုများအနေနှင့်၊ ပြင်ပမှဆွဲထုတ်မှုနည်းသော Port B ပင်များသည် ဆွဲယူအားခုခံအားစနစ်ကို အသက်သွင်းပါက ရင်းမြစ် Current ပေါ်မည်ဖြစ်သည်။ နာရီမှလည်ပတ်ခြင်းမရှိသော်လည်း၊ ပြန်လည်သတ်မှတ်မှုအခြေအနေတစ်ခုတက်ကြွလာသောအခါ Port B pin များကို tri-stated ပေးသည်။
Port B သည်အောက်ဖော်ပြပါအတိုင်း ATtiny25 / 45/85 ၏အထူးအင်္ဂါရပ်အမျိုးမျိုးကိုလည်းလုပ်ဆောင်သည်
ATtiny25 တွင်၊ I / O portable PB3 နှင့် PB4 (pins 2 and 3) တို့သည်ပရိုဂရမ်မာသော I / O ports များကို ATtiny15 Compatibility Mode တွင် ATtiny15 နှင့်နောက်ပြန်လိုက်ဖက်သောပံ့ပိုးမှုများကိုဖလှယ်သည်။
RESET- ထည့်သွင်းမှုကို ပြန်လည်သတ်မှတ်ပါ။ အနိမ့်ဆုံးသွေးခုန်နှုန်းထက် ပိုရှည်သော ဤပင်နံပါတ်ရှိ အဆင့်နိမ့်သည် နာရီမလည်ပတ်ဘဲ ပြန်လည်သတ်မှတ်ရန်ပင်ကို ပိတ်ထားခြင်းမရှိပါက ပြန်လည်သတ်မှတ်မှုကို ထုတ်ပေးမည်ဖြစ်သည်။ အနိမ့်ဆုံး သွေးခုန်နှုန်းကို ပေးထားသည်။ ဇယား ၂-၄ စာမျက်နှာ 165 တွင်။ ပိုမိုတိုတောင်းသောပဲမျိုးစုံပြန်လည်သတ်မှတ်ရန်အာမခံချက်မရှိပါ။
ပြန်လည်သတ်မှတ် pin ကို (အားနည်းသော) I / O pin အနေဖြင့်လည်းအသုံးပြုနိုင်သည်။
ကျော်view
ATtiny25 / 45/85 သည် AVR ပိုမိုကောင်းမွန်သည့် RISC ဗိသုကာအပေါ် အခြေခံ၍ အားနည်းသော CMOS 8-bit microcontroller ဖြစ်သည်။ နာရီသံသရာတစ်ခုအတွင်း၌အားကောင်းသောညွှန်ကြားချက်များကိုလုပ်ဆောင်ခြင်းအားဖြင့်၊ ATtiny25 / 45/85 သည် MHz နှုန်း 1 MIPS သို့ချဉ်းကပ်မှုစွမ်းရည်ကိုရရှိသည်။
Block ပုံကြမ်း
AVR core သည်ကြွယ်ဝသောညွှန်ကြားချက်များနှင့်အထွေထွေရည်ရွယ်ချက်အလုပ်လုပ် registers ၃၂ ခုနှင့်ပေါင်းစပ်ထားသည်။ မှတ်ပုံတင် ၃၂ ခုလုံးသည် Arithmetic Logic Unit (ALU) နှင့်တိုက်ရိုက်ချိတ်ဆက်ထားကာ၊ clock cycle တစ်ခုတွင်ညွှန်ကြားချက်တစ်ခုတည်းတွင်သီးခြားလွတ်လပ်သောမှတ်ပုံတင်နှစ်ခုကိုဝင်ရောက်ခွင့်ပြုသည်။ သမားရိုးကျ CISC microcontroller များထက် throughput များကိုဆယ်ဆပိုမြန်သည်နှင့်အမျှရရှိလာသောဗိသုကာသည် code ကိုပိုမိုထိရောက်စေသည်။
ATtiny25 / 45/85 တွင်အောက်ဖော်ပြပါအချက်များပါဝင်သည်။ In-System Programmable Flash ၏ 2/4 / 8K bytes, 128/256/512 bytes EEPROM, 128/256/256 bytes SRAM, ယေဘုယျရည်ရွယ်ချက် I / O လိုင်း ၆ ခု၊ ရည်ရွယ်ချက်အလုပ်လုပ်သည့်မှတ်ပုံတင်များ၊ နှိုင်းယှဉ်ခြင်းပုံစံများနှင့်အတူ 6-bit Timer / Counter၊ ၈-bit မြန်သော Timer / Counter၊ Universal Serial Interface, Internal နှင့် External Interrupts၊ ၄-channel, 32-bit ADC, Programmable Watchdog Timer တို့ပါဝင်သည် လှိုနှင့် software ကို select လုပ်ပါစွမ်းအင်ချွေတာ mode ကို။ SRAM, Timer / Counter, ADC, Analog Comparator နှင့် Interrupt စနစ်များဆက်လက်လည်ပတ်ခွင့်ပြုစဉ် Idle mode သည် CPU ကိုရပ်တန့်စေသည်။ Power-down mode သည်မှတ်ပုံတင်ထားသောအခြေအနေများကိုသိမ်းဆည်းပေးပြီး၊ လာမည့် Interrupt သို့မဟုတ် Hardware Reset မတိုင်မီအထိ chip လုပ်ဆောင်ချက်အားလုံးကိုပိတ်ထားသည်။ ADC Noise Reduction mode သည် ADC မှ လွဲ၍ switching noise ကိုအနည်းဆုံးဖြစ်စေရန် CPC နှင့် ADC မှလွဲ၍ I / O module များအားလုံးကိုရပ်စေသည်။
ဒီပစ္စည်းကို Atmel ရဲ့သိပ်သည်းဆမတည်ငြိမ်သောမတည်ငြိမ်သောမှတ်ဉာဏ်နည်းပညာကို အသုံးပြု၍ ထုတ်လုပ်သည်။ On-chip ISP Flash သည် Program memory ကို SPI serial interface မှတဆင့်၊ သမားရိုးကျမတည်ငြိမ်သော memory programmer မှလည်းကောင်း၊ AVR core တွင်အလုပ်လုပ်သော On-chip boot ကုဒ်မှတစ်ဆင့် Program memory ကို In - System ကိုပြန်လည်ပရိုဂရမ်ပြန်လုပ်ရန်ခွင့်ပြုသည်။
ATtiny25 / 45/85 AVR ကိုပရိုဂရမ်နှင့်စနစ်ဖွံ့ဖြိုးတိုးတက်မှုဆိုင်ရာကိရိယာများအပြည့်အဝထည့်သွင်းထားပါသည်။ C ကွန်ပြူတာများ၊ မက္ကရိုတပ်ဆင်သူများ၊
အရင်းအမြစ်များအကြောင်း
ကျယ်ပြန့်သောဖွံ့ဖြိုးတိုးတက်မှုဆိုင်ရာကိရိယာများ၊ လျှောက်လွှာမှတ်စုများနှင့်အချက်အလက်စာရင်းများကိုဒေါင်းလုပ်ဆွဲယူနိုင်သည် http://www.atmel.com/avr.
Code အတထွamples
ဤမှတ်တမ်းတွင်ရိုးရှင်းသောကုဒ်ဟောင်းများပါ ၀ င်သည်amples ကိရိယာ၏အစိတ်အပိုင်းအမျိုးမျိုးကိုမည်သို့သုံးရမည်ကိုအကျဉ်းချုပ်ပြထားသည်။ ဒီကုဒ်တွေက examples သည် part specific header ဖြစ်သည်ဟု ယူဆသည်။ file စုစည်းမှုမတိုင်မီ ထည့်သွင်းထားသည်။ C compiler ရောင်းချသူအားလုံးသည် header တွင် bit အဓိပ္ပါယ်များမပါဝင်ကြောင်း သတိပြုပါ။ files နှင့် C တွင် interrupt ကိုင်တွယ်မှုသည် compiler ပေါ်တွင်မူတည်သည်။ နောက်ထပ်အသေးစိတ်အချက်အလက်များအတွက် C compiler စာရွက်စာတမ်းဖြင့် အတည်ပြုပါ။
တိုးချဲ့ထားသော I / O မြေပုံတွင်ရှိသော I / O Registers အတွက်“ IN”,“ OUT”,“ SBIS”,“ SBIC”,“ CBI” နှင့်“ SBI” ညွှန်ကြားချက်များကိုတိုးချဲ့ခွင့်ပြုသည့်ညွှန်ကြားချက်များဖြင့်အစားထိုးရမည်။ / အို။ ပုံမှန်အားဖြင့်၎င်းသည်“ LDS” နှင့်“ STS” ကို“ SBRS”,“ SBRC”,“ SBR” နှင့်“ CBR” တို့နှင့်ပေါင်းစပ်သည်။ သတိပြုရန်မှာ AVR ထုတ်ကုန်အားလုံးတွင်တိုးချဲ့ထားသော I / O မြေပုံပါရှိသည်။
Capacitive Touch Sensing
Atmel QTouch Library သည် Atmel AVR မိုက်ခရိုကွန်ထရိုလာများပေါ်တွင် ထိလွယ်ရှလွယ်သော အင်တာဖေ့စ်များအတွက် ရိုးရှင်းသောဖြေရှင်းချက်တစ်ခုကို ပေးပါသည်။ QTouch Library တွင် QTouch® နှင့် QMatrix® ဝယ်ယူမှုနည်းလမ်းများအတွက် ပံ့ပိုးမှု ပါဝင်သည်။
Touch Sensing များကို Touch Sensing ကိုမည်သည့် application တွင်မဆိုအလွယ်တကူထည့်သွင်းနိုင်သည်။ QTouch Library နှင့်ချိတ်ဆက်ခြင်းနှင့် touch channel နှင့် sensors များကိုသတ်မှတ်ရန်စာကြည့်တိုက်၏ Application Programing Interface (API) ကိုအသုံးပြုခြင်းဖြင့်လွယ်ကူစွာထည့်နိုင်သည်။ ထို့နောက် application သည် API ကိုခေါ်ဆိုကာရုပ်သံလိုင်း၏အချက်အလက်များကိုပြန်လည်ရယူရန်နှင့် touch sensor ၏အခြေအနေကိုဆုံးဖြတ်ရန်ဖြစ်သည်။
QTouch စာကြည့်တိုက်သည်အခမဲ့ဖြစ်ပြီး Atmel မှ download လုပ်နိုင်သည် website. ပိုမိုသောသတင်းအချက်အလက်များနှင့်အကောင်အထည်ဖော်မှုအသေးစိတ်အတွက် Atmel မှ QTouch Library အသုံးပြုသူလမ်းညွှန်ကိုကိုးကားပါ website.
ဒေတာထိန်းသိမ်းမှု
ယုံကြည်စိတ်ချရမှုအရည်အချင်းစစ်တမ်းရလဒ်အရခန့်မှန်းထားသည့်အချက်အလက်ထိန်းသိမ်းခြင်းပျက်ကွက်မှုနှုန်းသည်အနှစ် ၂၀ အတွင်း ၈၅ ဒီဂရီစင်တီဂရိတ်သို့မဟုတ်နှစ် ၁၀၀ ၂၅ ဒီဂရီစင်တီဂရိတ်တွင် ၁ PPM ထက်များစွာနည်းသည်ကိုပြသည်။
AVR CPU Core ဖြစ်သည်
နိဒါန်း
ဤအပိုင်းသည်ယေဘုယျအားဖြင့် AVR ၏အဓိကတည်ဆောက်ပုံကိုဆွေးနွေးထားသည်။ CPU ၏အဓိကလုပ်ဆောင်ချက်သည်မှန်ကန်သောအစီအစဉ်ကိုသေချာစေရန်ဖြစ်သည်။ ထို့ကြောင့် CPU သည်အမှတ်တရများကိုရယူနိုင်ခြင်း၊ တွက်ချက်မှုများပြုလုပ်နိုင်ခြင်း၊ အရံပစ္စည်းများကိုထိန်းချုပ်ခြင်းနှင့်ကြားဖြတ်ခြင်းကိုကိုင်တွယ်နိုင်ခြင်းရှိရမည်။
ဗိသုကာလက်ကျန်view
စွမ်းဆောင်ရည်နှင့်အပြိုင်တိုးမြှင့်မှုကိုတိုးမြှင့်နိုင်ရန် AVR သည်ပရိုဂရမ်နှင့်ဒေတာအတွက်သီးခြားအမှတ်တရများနှင့်ဘတ်စ်ကားများဖြင့်ဟားဗတ်ဗိသုကာကိုအသုံးပြုသည်။ ပရိုဂရမ်မှတ်ဉာဏ်ရှိညွှန်ကြားချက်များကိုတစ်ခုတည်းသောပိုက်လိုင်းဖြင့်လုပ်ဆောင်သည်။ ညွှန်ကြားချက်တစ်ခုစီကိုလုပ်ဆောင်နေစဉ်နောက်သင်ကြားမှုကိုပရိုဂရမ်မှတ်ဉာဏ်မှကြိုတင်ရယူထားသည်။ ဤအယူအဆသည်ညွှန်ကြားချက်များကိုနာရီသံသရာတိုင်းတွင်လုပ်ဆောင်စေနိုင်သည်။ Program Memory သည် In-System Reprogrammable Flash Memory ဖြစ်သည်။
အမြန်ဝင်ရောက် မှတ်ပုံတင်ပါ။ File 32 x 8-bit ယေဘူယျရည်ရွယ်ချက်ဖြင့် အလုပ်လုပ်သည့် မှတ်ပုံတင်များ ပါ၀င်သည် ၎င်းသည် စက်ဝိုင်းဂဏန်းသင်္ချာ Logic Unit (ALU) လည်ပတ်မှုကို ခွင့်ပြုသည်။ ပုံမှန် ALU လုပ်ဆောင်ချက်တစ်ခုတွင်၊ operand နှစ်ခုသည် Register မှ output ဖြစ်သည်။ Fileလုပ်ဆောင်ချက်ကို လုပ်ဆောင်ပြီး ရလဒ်ကို Register တွင် ပြန်လည်သိမ်းဆည်းထားသည်။ File- တစ်နာရီသံသရာ၌။
မှတ်ပုံတင် ၃၂ ခုအနက် ၆ ခုသည် Data Space addressing အတွက် 32-bit သွယ်ဝိုက်လိပ်စာမှတ်ပုံတင်အမှတ် (၃) ခုအဖြစ်သုံးနိုင်သည်။ Flash Program Memory တွင်ရှာဖွေရန်အတွက်ဤလိပ်စာအမှတ်အသားတစ်ခုအား address pointer တစ်ခုအဖြစ်လည်းအသုံးပြုနိုင်သည်။ ဤပေါင်းထည့်ထားသော function registers များသည် 16-bit X-, Y- နှင့် Z-register တို့ဖြစ်သည်။
ALU သည်မှတ်ပုံတင်များအကြားသို့မဟုတ်စဉ်ဆက်မပြတ်နှင့်မှတ်ပုံတင်အကြားဂဏန်းသင်္ချာနှင့်ယုတ္တိဗေဒလုပ်ဆောင်မှုများကိုထောက်ပံ့သည်။ တစ်ခုတည်းမှတ်ပုံတင်စစ်ဆင်ရေးကိုလည်း ALU အတွက်ကွပ်မျက်ခံရနိုင်ပါတယ်။ ဂဏန်းသင်္ချာလည်ပတ်မှုပြုလုပ်ပြီးသည့်နောက်၊ စစ်ဆင်ရေး၏ရလဒ်နှင့်ပတ်သက်သောသတင်းအချက်အလက်များကိုထင်ဟပ်စေရန်အခြေအနေမှတ်ပုံတင်ကိုအဆင့်မြှင့်သည်။
ပရိုဂရမ်စီးဆင်းမှုကိုခြုံငုံ။ ခြွင်းချက်မရှိသောခုန်။ ခေါ်ဆိုခြင်းညွှန်ကြားချက်များကထောက်ပံ့ပေးပြီး၊ လိပ်စာနေရာတစ်ခုလုံးကိုတိုက်ရိုက်ဖြေရှင်းနိုင်သည်။ AVR ညွှန်ကြားချက်အများစုတွင် 16-bit word format ရှိသည်။ သို့သော် 32-bit လမ်းညွှန်များလည်းရှိသည်။
interrupts နှင့် subroutine ခေါ်ဆိုမှုများအတွင်း၊ ပြန်လာသည့်လိပ်စာ Program Counter (PC) သည် Stack တွင်သိမ်းဆည်းထားသည်။ Stack ကိုအထွေထွေ data SRAM တွင်ထိရောက်စွာခွဲဝေချထားပေးနိုင်ပြီး Stack အရွယ်အစားကိုစုစုပေါင်း SRAM အရွယ်နှင့် SRAM အသုံးပြုမှုကသာကန့်သတ်ထားသည်။ အသုံးပြုသူပရိုဂရမ်များအားလုံးသည်ပြန်လည်စတင်သည့်လုပ်ထုံးလုပ်နည်းတွင် SP ကိုစတင်လုပ်ဆောင်ရမည်။ Stack Pointer (SP) သည် I / O နေရာတွင်ဖတ်နိုင်သည်။ ဒေတာ SRAM ကို AVR ဗိသုကာတွင်ထောက်ပံ့ထားသောကွဲပြားသောလိပ်စာငါးခုမှတစ်ဆင့်အလွယ်တကူဝင်ရောက်နိုင်သည်။
AVR ဗိသုကာရှိမှတ်ဉာဏ်နေရာများသည် linear နှင့်ပုံမှန် memory map များဖြစ်သည်။
ပြောင်းလွယ်ပြင်လွယ်သော interrupt module တစ်ခုသည် Status Register တွင်အပိုဆောင်း Global Interrupt Enable bit နှင့်အတူ I / O နေရာတွင်၎င်း၏ထိန်းချုပ်မှုမှတ်ပုံတင်ရှိသည်။ interrupt အားလုံးသည် Interrupt Vector table တွင်သီးခြား Interrupt Vector ရှိသည်။ Interrupt များသည် Interrupt Vector အနေအထားနှင့်အညီ ဦး စားပေးရမည်။ Interrupt Vector လိပ်စာနည်းလေလေ၊
I/O memory space တွင် Control Registers၊ SPI နှင့် အခြားသော I/O လုပ်ဆောင်ချက်များအဖြစ် CPU အရံလုပ်ဆောင်ချက်များအတွက် လိပ်စာ 64 ခု ပါရှိသည်။ I/O မမ်မိုရီကို တိုက်ရိုက်ဝင်ရောက်ကြည့်ရှုနိုင်သည် သို့မဟုတ် မှတ်ပုံတင်ထားသည့်နေရာများ၏နောက်တွင် Data Space တည်နေရာများအဖြစ် တိုက်ရိုက်ဝင်ရောက်နိုင်သည်။ File, 0x20 - 0x5F ။
ALU - ဂဏန်းသင်္ချာယုတ္တိဗေဒယူနစ်
အဆင့်မြင့်စွမ်းဆောင်ရည်ရှိသော AVR ALU သည်ယေဘူယျရည်ရွယ်ချက် 32 မှတ်ပုံတင်ထားသူအားလုံးနှင့်တိုက်ရိုက်ဆက်သွယ်မှုရှိသည်။ တစ်ခုတည်းသောနာရီသံသရာအတွင်း, ယေဘုယျရည်ရွယ်ချက်မှတ်ပုံတင်များအကြားသို့မဟုတ်မှတ်ပုံတင်နှင့်ချက်ချင်းအကြားဂဏန်းသင်္ချာစစ်ဆင်ရေးကွပ်မျက်ခံရနေကြသည်။ ALU လုပ်ဆောင်မှုများကိုဂဏန်းသင်္ချာ၊ ယုတ္တိနှင့် bit- လုပ်ဆောင်ချက်သုံးခုခွဲခြားထားသည်။ အချို့သောဗိသုကာဆိုင်ရာအကောင်အထည်ဖော်မှုများသည်လက်မှတ်ရေးထိုးခြင်း / လက်မှတ်မထိုးထားသောမြှောက်ခြင်းနှင့်ဒfractionမကိန်းပုံစံများကိုထောက်ပံ့သောအစွမ်းထက်သောမြှောက်ကိန်းများပေးသည်။ အသေးစိတ်ဖော်ပြချက်အတွက်“ ညွှန်ကြားချက်အစု” ကိုကြည့်ပါ။
အခြေအနေမှတ်ပုံတင်မည်
Status Register တွင်လတ်တလောကွပ်မျက်ထားသောဂဏန်းသင်္ချာညွှန်ကြားချက်၏ရလဒ်နှင့်ပတ်သက်သောသတင်းအချက်အလက်များပါရှိသည်။ ခြွင်းချက်စစ်ဆင်ရေးလုပ်ဆောင်နိုင်ရန်အတွက်ဤအချက်အလက်ကိုအစီအစဉ်စီးဆင်းမှုကိုပြောင်းလဲပစ်ရန်အသုံးပြုနိုင်သည်။ အဆိုပါညွှန်ကြားချက် Set ကိုးကားစရာအတွက်သတ်မှတ်ထားသောအတိုင်း, Status Register အားလုံး ALU စစ်ဆင်ရေးပြီးနောက် updated ကြောင်းသတိပြုပါ။ ၎င်းသည်များစွာသောကိစ္စများတွင်သီးခြားနှိုင်းယှဉ်မှုညွှန်ကြားချက်များအသုံးပြုရန်လိုအပ်သည်ကိုဖယ်ရှားပြီးပိုမိုမြန်ဆန်ပြီးပိုမိုကျစ်လစ်သောကုဒ်ကိုရရှိလိမ့်မည်။
Status Register သည် interrupt ပုံမှန်လုပ်သည့်အချိန်တွင်အလိုအလျောက်သိုလှောင်ထားခြင်းမရှိပါ၊ ၎င်းကို software ဖြင့်ကိုင်တွယ်ရမည်။
SREG - AVR အခြေအနေမှတ်ပုံတင်
AVR အခြေအနေမှတ်ပုံတင် - SREG - အဖြစ်သတ်မှတ်သည်။
နည်းနည်း | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3F | I | T | H | S | V | N | Z | C | SREG |
ဖတ်/ရေး | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
ကနဦးတန်ဖိုး | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
bit 7 - ငါ: Global Interrupt Enable လုပ်ပါ
Interrupts ကို enable ပြုလုပ်ရန်အတွက် Global Interrupt Enable bit ကိုသတ်မှတ်ရမည်။ တစ် ဦး ချင်းကြားဖြတ်ထိန်းချုပ်မှုထို့နောက်သီးခြားထိန်းချုပ်မှုမှတ်ပုံတင်များတွင်ဖျော်ဖြေသည်။ အကယ်၍ Global Interrupt Enable Register ကိုရှင်းပြီးပါက interrupt တစ်ခုချင်းစီ၏ setting ကို enable ပြုလုပ်ရန်အတွက် interrupts များကို enable မလုပ်နိုင်ပါ။ I-bit သည် Interrupt ကြားပြီးနောက် hardware အားဖြင့်ရှင်းလင်းပြီးနောက်ဆက်တွဲပြတ်တောက်မှုများကို enable လုပ်ရန် RETI ညွှန်ကြားချက်ဖြင့်သတ်မှတ်သည်။ ညွှန်ကြားချက်အစုရည်ညွှန်းတွင်ဖော်ပြထားသည့်အတိုင်း I-bit ကိုလည်း SEI နှင့် CLI ညွှန်ကြားချက်များဖြင့် application နှင့်ရှင်းလင်းပြီးရှင်းလင်းနိုင်သည်။
Bit 6 - T: Bit Copy Storage
Bit Copy ညွှန်ကြားချက် BLD (Bit LoaD) နှင့် BST (Bit STore) သည် T-bit ကိုလည်ပတ်နိုင်သော bit အတွက်အရင်းအမြစ် (သို့) ဦး တည်ရာအဖြစ်သုံးသည်။ Register တွင်မှတ်ပုံတင်ခြင်းမှအနည်းငယ် File BST ညွှန်ကြားချက်ဖြင့် T သို့ ကူးယူနိုင်ပြီး မှတ်ပုံတင်ရှိ မှတ်ပုံတင်ရှိ မှတ်ပုံတင်တစ်ခုတွင် T တွင် အနည်းငယ် ကူးယူနိုင်သည်။ File BLD ညွှန်ကြားချက်ဖြင့်
bit 5 - H ကို: တစ်ဝက်ကိုအလံသယ်
တစ်ဝက်သယ်ဆောင်သောအလံ H သည်ဂဏန်းသင်္ချာဆိုင်ရာလုပ်ဆောင်မှုများတွင်တစ်ဝက်ကိုသယ်ဆောင်ပါလိမ့်မည်။ Half Carry သည် BCD ဂဏန်းသင်္ချာအတွက်အသုံးဝင်သည်။ အသေးစိတ်အချက်အလက်များအတွက်“ ညွှန်ကြားချက်အစုံဖော်ပြချက်” ကိုကြည့်ပါ။
ဘစ် 4 – S- ဆိုင်းဘုတ်၊ S = N ⊕ V
S-bit သည်အထူးသီးသန့်ဖြစ်သည် (သို့) Negative Flag N နှင့် Two's Complement Overflow Flag V. အကြားအသေးစိတ်အချက်အလက်များအတွက်“ ညွှန်ကြားချက်အစုံဖော်ပြချက်” တွင်ကြည့်ပါ။
Bit 3 - V: Two's Complement Overflow အလံ
Two's Complement Overflow Flag V သည်နှစ်မျိုး၏ဂဏန်းသင်္ချာကိုထောက်ပံ့သည်။ အသေးစိတ်အချက်အလက်များအတွက်“ ညွှန်ကြားချက်အစုံဖော်ပြချက်” ကိုကြည့်ပါ။
bit 2 - N: အနုတ်လက္ခဏာအလံ
အနုတ်လက္ခဏာအလံ N သည်ဂဏန်းသင်္ချာသို့မဟုတ်ယုတ္တိဗေဒလည်ပတ်မှုတွင်အနှုတ်လက္ခဏာဆောင်သောရလဒ်ကိုဖော်ပြသည်။ အသေးစိတ်အချက်အလက်များအတွက်“ ညွှန်ကြားချက်အစုံဖော်ပြချက်” ကိုကြည့်ပါ။
Bit 1 - Z: သုညအလံ
သုညအလံ Z သည်ဂဏန်းသင်္ချာသို့မဟုတ်ယုတ္တိဗေဒလည်ပတ်မှုတွင်ရလဒ်လုံးဝမရှိကြောင်းဖော်ပြသည်။ အသေးစိတ်အချက်အလက်များအတွက်“ ညွှန်ကြားချက်အစုံဖော်ပြချက်” ကိုကြည့်ပါ။
bit 0 - C: အလံသယ်
Carry အလံ C သည်ဂဏန်းသင်္ချာသို့မဟုတ်ယုတ္တိဗေဒလုပ်ဆောင်မှုကိုသယ်ဆောင်သည်ကိုညွှန်ပြသည်။ အသေးစိတ်အချက်အလက်များအတွက်“ ညွှန်ကြားချက်အစုံဖော်ပြချက်” ကိုကြည့်ပါ။
အထွေထွေရည်ရွယ်ချက် မှတ်ပုံတင်ခြင်း။ File
မှတ်ပုံတင်သည်။ File AVR Enhanced RISC ညွှန်ကြားချက်အစုံအတွက် အကောင်းဆုံးဖြစ်အောင် ပြုလုပ်ထားသည်။ လိုအပ်သော စွမ်းဆောင်ရည်နှင့် လိုက်လျောညီထွေဖြစ်မှု ရရှိစေရန်အတွက် အောက်ပါ input/output အစီအစဉ်များကို မှတ်ပုံတင်ခြင်းဖြင့် ပံ့ပိုးပေးပါသည်။ File:
8-bit output operand တစ်ခုနှင့် 8-bit ရလဒ် input တစ်ခု
8-bit output operand နှစ်ခုနှင့် 8-bit ရလဒ် input တစ်ခု
8-bit output operand နှစ်ခုနှင့် 16-bit ရလဒ် input တစ်ခု
16-bit output operand တစ်ခုနှင့် 16-bit ရလဒ် input တစ်ခု
ပုံ ၂-၁ CPU ရှိလုပ်ငန်းသုံးမှတ်ပုံတင် ၃၂ ခု၏ဖွဲ့စည်းပုံကိုပြသည်။
တွင်ပြထားသည့်အတိုင်း ပုံ ၂-၁မှတ်ပုံတင်တစ်ခုစီသည်ဒေတာမှတ်ဥာဏ်လိပ်စာတစ်ခုကိုလည်းပေးထားပြီး၎င်းတို့အားသုံးစွဲသူဒေတာအာကာသ၏ပထမဆုံး ၃၂ နေရာကိုတိုက်ရိုက်ညွှန်ပြသည်။ SRAM တည်နေရာများအဖြစ် ရုပ်ပိုင်းဆိုင်ရာအရ အကောင်အထည်မဖော်သော်လည်း၊ ဤမှတ်ဉာဏ်အဖွဲ့အစည်းသည် မှတ်ပုံတင်မှုများကို ဝင်ရောက်ရာတွင် ကြီးမားသောပြောင်းလွယ်ပြင်လွယ်ပေးစွမ်းနိုင်သောကြောင့် X-, Y- နှင့် Z-pointer မှတ်ပုံတင်မှုများကို မှတ်ပုံတင်ရှိမည်သည့်စာရင်းကိုမဆို အညွှန်းအဖြစ်သတ်မှတ်နိုင်သည်။ fileRegister တွင် လုပ်ဆောင်နေသော လမ်းညွှန်ချက်အများစု File မှတ်ပုံတင်အားလုံးသို့တိုက်ရိုက်ဝင်ခွင့်ရှိသည်၊ ၎င်းတို့အများစုသည်ရိုးရှင်းသောသံသရာလမ်းညွှန်ချက်များဖြစ်သည်။
X-register, Y-register နှင့် Z-register
အဆိုပါမှတ်ပုံတင် R26..R31 သူတို့ရဲ့ယေဘုယျရည်ရွယ်ချက်အသုံးပြုမှုအချို့ထပ်တိုးလုပ်ဆောင်ချက်များကိုရှိသည်။ ဤရွေ့ကားမှတ်ပုံတင်ဒေတာအာကာသ၏သွယ်ဝိုက် addressing များအတွက် 16-bit နဲ့လိပ်စာ pointers ဖြစ်ကြသည်။ ဖော်ပြထားသည့်အတိုင်းသွယ်ဝိုက်လိပ်စာသုံးခုကို X, Y နှင့် Z တို့ကိုသတ်မှတ်သည် ပုံ ၂-၁.
မတူညီသောလိပ်စာပုံစံများတွင်ဤလိပ်စာမှတ်ပုံတင်များသည်ရွေ့လျားခြင်း၊ အလိုအလျောက်တိုးခြင်းနှင့်အလိုအလျောက်လျော့နည်းခြင်းစသည့်လုပ်ဆောင်ချက်များရှိသည် (အသေးစိတ်အတွက်ညွှန်ကြားချက်အစုကိုကြည့်ပါ) ။
pointer ပုံ
အဓိကအားဖြင့်ယာယီဒေတာများကိုသိုလှောင်ခြင်း၊ ဒေသတွင်း variable များကိုသိမ်းဆည်းခြင်းနှင့် interrupts နှင့် subroutine ခေါ်ဆိုမှုများနောက်မှပြန်လာသည့်လိပ်စာများကိုသိုလှောင်ခြင်းအတွက်အဓိကအားဖြင့်သုံးသည်။ Stack Pointer မှတ်ပုံတင်သည် Stack ၏ထိပ်ကိုအမြဲညွှန်ပြသည်။ သတိပြုရန်မှာ Stack သည်ပိုမိုမြင့်မားသောမှတ်ဉာဏ်နေရာများမှအနိမ့်မှတ်ဉာဏ်နေရာများသို့ကြီးထွားလာသည်နှင့်အမျှအကောင်အထည်ဖော်နေသည်။ ဤသည်ဆိုလိုသည်မှာ Stack PUSH command သည် Stack Pointer ကိုလျော့နည်းစေသည်။
အဆိုပါ Stack Pointer သည် Subroutine နှင့် Interrupt Stacks တည်ရှိရာ data SRAM Stack areaရိယာကိုညွှန်ပြသည်။ မည်သည့် subroutine ခေါ်ဆိုမှုများမပြုလုပ်မှီ (သို့) ကြားဖြတ်ဆက်သွယ်မှုကိုမလုပ်ဆောင်မီဒေတာ SRAM ရှိဤ Stack နေရာကိုပရိုဂရမ်မှသတ်မှတ်ရမည်။ Stack Pointer ကို 0x60 အထက်တွင်ထားရမည်။ PUSH ညွှန်ကြားချက်ဖြင့်အချက်အလက်များကို Stack ပေါ်သို့တွန်းလိုက်သောအခါ Stack Pointer သည်တစ်ခုအားလျော့သွားသည်။ return address ကို subroutine call သို့မဟုတ် interrupt ဖြင့် Stack သို့တွန်းလိုက်သောအခါနှစ်ခုအားလျော့သွားသည်။ Pack ညွှန်ကြားချက်နှင့်အတူ Stack မှဒေတာများပေါ်လာသောအခါဒေတာသည် Stack မှပေါ်လာသည်သို့မဟုတ် interrupt RETI မှပြန်လာသောအခါ Stack Pointer သည်တစ်ခုနှင့်တစ်ခုတိုးခြင်းဖြစ်သည်။
I / O အာကာသအတွင်း AVR Stack Pointer ကို 8-bit registers နှစ်ခုအနေနှင့်အကောင်အထည်ဖော်သည်။ အမှန်တကယ်အသုံးပြုသော bit အရေအတွက်သည်အကောင်အထည်ဖော်မှုအပေါ်မူတည်သည်။ သတိပြုရန်မှာ AVR ဗိသုကာ၏အချို့သောအကောင်အထည်ဖော်မှုများတွင်ဒေတာနေရာသည်အလွန်နည်းပါးသဖြင့် SPL သာလိုအပ်သည်။ ဤကိစ္စတွင် SPH မှတ်ပုံတင်မည်မဟုတ်ပါ။
SPH နှင့် SPL - Stack Pointer မှတ်ပုံတင်ပါ
နည်းနည်း | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | |
0x3E | SP15 | SP14 | SP13 | SP12 | SP11 | SP10 | SP9 | SP8 | SPH |
0x3D | SP7 | SP6 | SP5 | SP4 | SP3 | SP2 | SP1 | SP0 | SPL |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
ဖတ်/ရေး | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
ဖတ်/ရေး | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
ကနဦးတန်ဖိုး | အသံ | အသံ | အသံ | အသံ | အသံ | အသံ | အသံ | အသံ | |
ကနဦးတန်ဖိုး | အသံ | အသံ | အသံ | အသံ | အသံ | အသံ | အသံ | အသံ |
ညွှန်ကြားချက် Execution အချိန်ကိုက်
ဤအပိုင်းသည် ညွှန်ကြားချက်ကို အကောင်အထည်ဖော်ရန်အတွက် ယေဘူယျအသုံးပြုခွင့်အချိန်ကိုက်သဘောတရားများကို ဖော်ပြသည်။ AVR CPU ကို ချစ်ပ်အတွက် ရွေးချယ်ထားသော နာရီရင်းမြစ်မှ တိုက်ရိုက်ထုတ်ပေးသော CPU နာရီ clkCPU မှ မောင်းနှင်ပါသည်။ အတွင်းနာရီပိုင်းခွဲကို အသုံးမပြုပါ။
ပုံ ၂-၁ ဟားဗတ်ဗိသုကာနှင့် အမြန်ဝင်ရောက်ခွင့် မှတ်ပုံတင်ခြင်းမှ ဖွင့်ထားသည့် အပြိုင်ညွှန်ကြားချက်များနှင့် ညွှန်ကြားချက်များကို ကွပ်မျက်ခြင်းများကို ပြသသည် File အယူအဆ။ ဤသည်မှာ 1 MIPS နှုန်း MHz အထိ ကုန်ကျစရိတ်အလိုက် လုပ်ဆောင်ချက်များ၊ နာရီအလိုက် လုပ်ဆောင်ချက်များ နှင့် ပါဝါယူနစ်အလိုက် လုပ်ဆောင်ချက်များအတွက် သက်ဆိုင်သောထူးခြားသောရလဒ်များနှင့်အတူ XNUMX MIPS အထိ ရရှိရန် အခြေခံ ပိုက်လိုင်း အယူအဆဖြစ်သည်။
ပုံ ၄-၅။ Single Cycle ALU လုပ်ဆောင်ချက်
Reset နှင့် Interrupt Handling
AVR သည်မတူညီသောကြားဖြတ်အရင်းအမြစ်များစွာကိုထောက်ပံ့ပေးသည်။ ၄ င်း interrupts များနှင့်သီးခြား Reset Vector တစ်ခုစီသည် Program Memory Space တွင်သီးခြား Program Vector ရှိသည်။ interrupts များအားတစ်ခုချင်းစီအား enable လုပ်သော bit များသတ်မှတ်ထားသည်။ ၎င်းသည် interrupt ကို enable လုပ်ရန်အတွက် Status Register တွင် Global Interrupt Enable bit နှင့်အတူ Logic တစ်ခုကိုရေးရမည်။
ပရိုဂရမ်မှတ်ဉာဏ်နေရာ၏အနိမ့်ဆုံးလိပ်စာများကိုပုံမှန်အားဖြင့် Reset and Interrupt Vectors ဟုသတ်မှတ်သည်။ virus သယ်ဆောင်ရမည့်စာရင်းအပြည့်အစုံကိုပြသည် စာမျက်နှာ ၄၈ မှ“ ကြားဖြတ်” သည်။ စာရင်းသည်မတူညီသောကြားဖြတ်များ၏ ဦး စားပေးအဆင့်များကိုဆုံးဖြတ်သည်။ လိပ်စာနိမ့်လေလေအဆင့်မြင့်လေလေဖြစ်သည်။ RESET သည်အမြင့်ဆုံး ဦး စားပေးဖြစ်ပြီးနောက်တစ်ခုကတော့ INT0 - External Interrupt Request 0 ။
Interrupt တစ်ခုပေါ်လာတဲ့အခါ Global Interrupt Enable I-bit ကိုရှင်းလင်းပြီးအားလုံး interrupts ကို disable လုပ်တယ်။ အသုံးပြုသူဆော့ဖ်ဝဲလ်သည်အသွင်ကြားဖြတ်ခြင်းကိုဖွင့်ရန်ယုတ္တိတစ်ခုအား I-bit သို့ရေးနိုင်သည်။ အားလုံး enabled interrups ထို့နောက်လက်ရှိကြားဖြတ်လုပ်ရိုးလုပ်စဉ်ကြားဖြတ်နိုင်ပါတယ်။ RETI - Interrupt Interrupt ညွှန်ကြားချက် - RETI လုပ်ဆောင်သောအခါ I-bit သည်အလိုအလျောက်သတ်မှတ်သည်။
အခြေခံအားဖြင့်ပြတ်တောက်ခြင်းအမျိုးအစားနှစ်မျိုးရှိသည်။ ပထမအမျိုးအစားကို Interrupt Flag သတ်မှတ်သောဖြစ်ရပ်တစ်ခုမှအစပျိုးသည်။ ဤအနှောင့်အယှက်များအတွက် Program Counter သည် interrupt handling လုပ်ရိုးလုပ်စဉ်ကိုလုပ်ဆောင်ရန်အတွက်အမှန်တကယ် Interrupt Vector သို့ vectored ဖြစ်ပြီး hardware သည်သက်ဆိုင်ရာ Interrupt Flag ကိုရှင်းလင်းသည်။ Interrupt Flags အားရှင်းလင်းမည့်ရှင်းလင်းသော flag bit position (s) သို့ယုတ္တိဗေဒတစ်ခုအားရေးသားခြင်းဖြင့်လည်းရှင်းလင်းနိုင်သည်။ သက်ဆိုင်ရာ interrupt enable bit ကိုရှင်းလင်းနေစဉ် interrupt အခြေအနေပေါ်လာလျှင် Interrupt Flag ကိုသတ်မှတ်ပြီး interrupt သည် enable လုပ်သည်အထိ၊ သို့မဟုတ်အလံသည် software မှရှင်းလင်းသည်အထိသတိရလိမ့်မည်။ အလားတူပင်၊ Global Interrupt Enable bit အားရှင်းလင်းနေစဉ်တစ်ခုသို့မဟုတ်တစ်ခုထက်ပိုသောအနှောင့်အယှက်ဖြစ်စေသောအခြေအနေများပေါ်ပေါက်လာပါကသက်ဆိုင်ရာ Interrupt အလံ (မ်ား) ကိုသတ်မှတ်ပြီး Global Interrupt Enable bit မသတ်မှတ်မီသည်နှင့်အစဉ်လိုက်အမိန့် ပေး၍ စီရင်မည်။
Interrupts ၏ဒုတိယအမျိုးအစားသည် interrupt အနေဖြင့်ရှိနေသမျှကာလပတ်လုံးဖြစ်ပေါ်လိမ့်မည်။ ဤရွေ့ကားကြားဖြတ်အခြေခံအားဖြင့် Interrupt အလံရှိသည်မဟုတ်ကြဘူး။ အကယ်၍ interrupt သည်မဖွင့်မှီ interrupt အခြေအနေပျောက်သွားလျှင်၊ interrupt သည်အစပျိုးလိမ့်မည်မဟုတ်ပါ။
AVR သည်ကြားဖြတ်ခြင်းမှထွက်သွားသောအခါ၎င်းသည်အဓိကပရိုဂရမ်သို့အမြဲတမ်းပြန်သွားပြီးနောက်ဆိုင်းငံ့ထားသောကြားဖြတ်မ ၀ င်ခင်ညွှန်ကြားချက်တစ်ခုထပ်မံလုပ်ဆောင်လိမ့်မည်။
သတိပြုရန်မှာ Status Register သည်အနှောင့်အယှက်ပြုသည့်လုပ်ထုံးလုပ်နည်းတစ်ခုကိုအလိုအလျောက်ဝင်ရောက်သောအခါသိုမဟုတ်အလိုအလျောက်သိုလှောင်ထားခြင်းမဟုတ်၊ ၎င်းကို software ဖြင့်ကိုင်တွယ်ရမည်။
အနှောက်အယှက်များကိုပိတ်ရန် CLI ညွှန်ကြားချက်ကို အသုံးပြုသောအခါ၊ ကြားဖြတ်မှုများကို ချက်ချင်းပိတ်ပါမည်။ CLI ညွှန်ကြားချက်နှင့် တပြိုင်နက်တည်း ဖြစ်ပေါ်ပါက CLI ညွှန်ကြားချက်ပြီးနောက် မည်သည့်အနှောင့်အယှက်မှ လုပ်ဆောင်မည်မဟုတ်ပါ။ အောက်ပါ exampအချိန်သတ်မှတ်ထားသော EEPROM ရေးစဥ်စဉ်အတွင်း အနှောင့်အယှက်များကို ရှောင်ရှားရန် ၎င်းကို မည်သို့အသုံးပြုနိုင်ကြောင်း le ပြသည်။
Assembly Code Example |
r16 တွင် SREG ; SREG တန်ဖိုးကို သိမ်းဆည်းပါ။
cli ; သတ်မှတ်ချိန်အတွင်း အနှောင့်အယှက်များကို ပိတ်ပါ။ sbi EECR, EEMPE ; EEPROM ကိုစတင်ရေးသားပါ။ sbi EECR၊ EEPE SREG, r16 ; SREG တန်ဖိုး (I-bit) ကို ပြန်လည်ရယူပါ |
C Code အတထွample |
char cSREG;
cSREG = SREG; /* SREG တန်ဖိုးကို သိမ်းဆည်းပါ*/ /* အချိန်သတ်မှတ်ထားသော အစီအစဉ်အတွင်း အနှောင့်အယှက်များကို ပိတ်ပါ*/ _CLI (); EECR |= (1< EECR | = (1 < SREG = cSREG; /* SREG တန်ဖိုး (I-bit) */ ပြန်လည်ရယူပါ။ |
အနှောင့်အယှက်များကိုဖွင့်ရန် SEI ညွှန်ကြားချက်ကို အသုံးပြုသောအခါ၊ အောက်ပါ SEI ညွှန်ကြားချက်သည် ဤ ex တွင်ပြထားသည့်အတိုင်း ဆိုင်းငံ့ထားသည့်ကြားဖြတ်မှုများမတိုင်မီ လုပ်ဆောင်သွားမည်ဖြစ်သည်။ampလဲ့
Assembly Code Example |
sei ; Global Interrupt ကို Enable သတ်မှတ်ပါ။
အိပ်စက်; နှောင့်ယှက်ခြင်းကို စောင့်ဆိုင်းပြီး အိပ်စက်ခြင်းသို့ ဝင်ရောက်ပါ။ ; မှတ်ချက်။ ; ကြားဖြတ် (များ) |
C Code အတထွample |
_SEI(); /* Global Interrupt ကို Enable သတ်မှတ်ပါ */
_SLEEP(); /* နှောင့်ယှက်ခြင်းကို စောင့်ဆိုင်းပြီး အိပ်စက်ခြင်းသို့ ဝင်ပါ*/ / * မှတ်စု - ဆိုင်းငံ့ထားသောအနှောင့်အယှက်များမတိုင်မီအိပ်စက်ပါလိမ့်မည် * / |
တုံ့ပြန်မှုအချိန်ကြားဖြတ်
enable လုပ်ထားသော AVR interrupts အားလုံးအတွက် Interrupt execution response သည်အနည်းဆုံးလေးနာရီ cycles ဖြစ်သည်။ လေးနာရီသံသရာပြီးနောက်အမှန်တကယ်ပြတ်တောက်ကိုင်တွယ်ခြင်းလုပ်ရိုးလုပ်စဉ်များအတွက် Program Vector လိပ်စာ execute ဖြစ်ပါတယ်။ ဒီလေးနာရီကြာသံသရာကာလအတွင်း Program Counter ကို Stack ပေါ်သို့တွန်းပို့သည်။ Vector အားပုံမှန်အားဖြင့် interrupt လုပ်ရိုးလုပ်စဉ်သို့ခုန်လိုက်သည်။ multi-cycle ညွှန်ကြားချက်ကို execute လုပ်တဲ့အချိန်မှာ interrupt ဖြစ်ပေါ်လာတယ်ဆိုရင်၊ အကယ်၍ MCU သည် sleep mode တွင်ရှိလျှင် interrupt ဖြစ်ပေါ်ပါက၊ interrupt ကွပ်မျက်မှုတုန့်ပြန်မှုအချိန်သည် ၄ နာရီသံသရာဖြင့်တိုးလာသည်။ ဤတိုးမြှင့်မှုသည်ရွေးချယ်ထားသည့်အိပ်စက်ခြင်းစနစ်မှစတင်သည့်အချိန်အပြင်ပါလာသည်။
တစ် ဦး ကြားဖြတ်ကိုင်တွယ်လုပ်ရိုးလုပ်စဉ်ကနေပြန်လာလေးခုသံသရာကြာပါသည်။ ဤလေးနာရီပတ်လုံးစဉ်အတွင်း Program Counter (bytes နှစ်ခု) သည် Stack မှပြန်လည်ပေါ်ထွက်လာသည်။ Stack Pointer ကို ၂ ခုတိုး။ SREG ရှိ I-bit ကိုသတ်မှတ်သည်။
AVR အမှတ်တရများ
ဤအပိုင်းသည် ATtiny25 / 45/85 ရှိကွဲပြားခြားနားသောအမှတ်တရများကိုဖော်ပြသည်။ AVR ဗိသုကာတွင်အဓိကမှတ်ဥာဏ်နေရာနှစ်ခုဖြစ်သောဒေတာမှတ်ဉာဏ်နှင့်ပရိုဂရမ်မှတ်ဉာဏ်နေရာတို့ရှိသည်။ ထို့အပြင် ATtiny25 / 45/85 တွင်ဒေတာသိမ်းဆည်းရန် EEPROM Memory ပါရှိသည်။ Memory Space သုံးခုစလုံးသည်မှန်မှန်နှင့်ပုံမှန်ဖြစ်သည်။
In-System ကိုပြန်လည်ပရိုဂရမ်ပြုလုပ်နိုင်သည့် Flash Program Memory
ATtiny25 / 45/85 တွင် 2/4 / 8K bytes ပါဝင်ပြီး On-chip In-System Reprogrammable Flash memory ပါဝင်သည်။ AVR ညွှန်ကြားချက်အားလုံးသည် 16 သို့မဟုတ် 32 bits အကျယ်ရှိသဖြင့် Flash ကို 1024/2048/4096 x 16 အဖြစ်ဖွဲ့စည်းထားသည်။
Flash မှတ်ဉာဏ်သည်အနည်းဆုံး ၁၀,၀၀၀ ခန့်ရေးသား / ဖျက်ခြင်းသံသရာရှိသည်။ ATtiny10,000 / 25/45 Program Counter (PC) သည် 85/10/11 bits အကျယ်ရှိပြီး 12/1024/2048 Program memory memory တည်နေရာကိုဖော်ပြသည်။ “ Memory Program- စာမျက်နှာ 147 ရက်နေ့တွင် "ming SPI တံသင်ကို သုံး၍ Flash အချက်အလက်စီးရီးဒေါင်းလုပ်လုပ်ခြင်းနှင့် ပတ်သက်၍ အသေးစိတ်ဖော်ပြချက်ပါရှိသည်။
စဉ်ဆက်မပြတ်ဇယားကွက်များကို Program Memory လိပ်စာနေရာတစ်ခုလုံးအတွင်း၌ခွဲဝေချထားနိုင်သည် (LPM - Load Program memory memory လမ်းညွှန်ဖော်ပြချက်) ကိုကြည့်ပါ။
ပုံ 5-1 ။ ပရိုဂရမ်မှတ်ဉာဏ်မြေပုံ
SRAM ဒေတာမှတ်ဉာဏ်
ပုံ ၂-၁ ATtiny25 / 45/85 SRAM Memory ကိုဘယ်လိုဖွဲ့စည်းထားတယ်ဆိုတာပြတယ်။
အောက်ပိုင်း 224/352/607 Data memory တည်နေရာများသည် Register နှစ်ခုလုံးကို လိပ်စာပေးသည်။ FileI/O memory နှင့် internal data SRAM တို့။ ပထမဆုံးနေရာ ၃၂ ခုသည်မှတ်ပုံတင်ရန်လိပ်စာဖြစ်သည် Fileနောက် ၆၄ နေရာသည်စံ I/O မှတ်ဉာဏ်နှင့်နောက်ဆုံး ၁၂၈/၂၅၆/၅၁၂ နေရာများသည်အတွင်းပိုင်းဒေတာ SRAM ကိုဖြေရှင်းပေးသည်။
ဒေတာမှတ်ဉာဏ်အဖုံးအတွက် မတူညီသော လိပ်စာဖော်ပြမှုမုဒ်ငါးခု- တိုက်ရိုက်၊ လွှဲချမှုဖြင့်သွယ်ဝိုက်သော၊ သွယ်ဝိုက်သော၊ သွယ်ဝိုက်သော၊ Register ထဲမှာ FileR26 မှ R31 သည် သွယ်ဝိုက်လိပ်စာညွှန်ပြသည့် မှတ်ပုံတင်များ ပါ၀င်သည်။
Direct addressing သည် data space တစ်ခုလုံးသို့ရောက်ရှိသည်။
Indirect with Displacement mode သည် Y- သို့မဟုတ် Z- မှတ်ပုံတင်မှရရှိသောအခြေခံလိပ်စာမှလိပ်စာနေရာ ၆၃ ခုသို့ရောက်ရှိသည်။
register indirement နှင့် post-increment နှင့်မှတ်ပုံတင်ထားသောသွယ်ဝိုက်သောလိပ်စာပြုသည့်ပုံစံများကိုအသုံးပြုသောအခါလိပ်စာသည် X, Y နှင့် Z တို့ကိုမှတ်ပုံတင်သို့မဟုတ်တိုးခြင်းဖြစ်သည်။
ယေဘူယျအားဖြင့်ရည်ရွယ်ချက် ၃၂ ချက်အလုပ်လုပ်သည့်စာရင်းများ၊ ၆၄ I/O မှတ်ပုံတင်များနှင့် ATtiny32/64/128 ရှိပြည်တွင်းဒေတာ SRAM ၏ ၁၂၈/၂၅၆/၅၁၂ ဘိုက်များကိုဤလိပ်စာပုံစံများအားလုံးမှရရှိနိုင်ပါသည်။ မှတ်ပုံတင်သည်။ File တွင်ဖော်ပြထားသည်။ “ ဗိုလ်ချုပ် eral ရည်ရွယ်ချက်မှတ်ပုံတင်ပါ File” စာမျက်နှာ ၁၀.
ပုံ ၅-၂။ ဒေတာမှတ်ဉာဏ်မြေပုံ
Data Memory Access ကြိမ်
ဤကဏ္ဍသည် အတွင်းမှတ်ဉာဏ်ဝင်ရောက်ခွင့်အတွက် ယေဘူယျအသုံးပြုခွင့်အချိန်ကိုက်သဘောတရားများကို ဖော်ပြသည်။ အတွင်းပိုင်းဒေတာ SRAM အသုံးပြုခွင့်ကို ဖော်ပြထားသည့်အတိုင်း clkCPU သံသရာနှစ်ခုတွင် လုပ်ဆောင်သည်။ ပုံ ၂-၁.
ပုံ ၅-၃။ On-chip ဒေတာ SRAM အသုံးပြုခွင့် သံသရာများ EEPROM ဒေတာမှတ်ဉာဏ်
ATtiny25 / 45/85 တွင် 128/256/512 bytes data EEPROM memory ရှိသည်။ ၎င်းကိုသီးခြား data space အဖြစ်ဖွဲ့စည်းသည်။ တစ်ခုတည်းသော bytes များကိုဖတ်။ ရေးသားနိုင်သည်။ EEPROM သည်အနည်းဆုံး ၁၀၀,၀၀၀ ရေးသား / ဖျက်ခြင်းသံသယရှိသည်။ EEPROM နှင့် CPU အကြားဆက်သွယ်မှုကိုအောက်ပါတွင်ဖော်ပြထားသည်။ EEPROM Address Registers, EEPROM Data Register နှင့် EEPROM Control Register ကိုဖော်ပြသည်။ အသေးစိတ်ကိုကြည့်ပါ စာမျက်နှာ ၁၅၁ မှ“ Serial Download”.
EEPROM မှဖတ် / ရေးရန်ခွင့်ပြုချက်
EEPROM Access Registers သည် I / O နေရာတွင်ရှိသည်။
EEPROM အတွက်ရေးသားခွင့်ရရှိသည့်အချိန်ကိုဖော်ပြသည် စာမျက်နှာ 5 ရက်နေ့တွင်စားပွဲတင် 1-21. Self-timeing function သည် user software ကို နောက် byte ရေးနိုင်သည့်အခါတွင် သိရှိနိုင်စေပါသည်။ အသုံးပြုသူကုဒ်တွင် EEPROM ကိုရေးသော ညွှန်ကြားချက်များပါနေပါက၊ အချို့သော ကြိုတင်ကာကွယ်မှုများ ပြုလုပ်ရပါမည်။ ပြင်းထန်စွာ စစ်ထုတ်ထားသော ပါဝါထောက်ပံ့မှုတွင်၊ VCC သည် တက်လာနိုင်သည် သို့မဟုတ် တဖြည်းဖြည်း ကျဆင်းလာဖွယ်ရှိသည်။
ပါဝါတက်/ဆင်း။ ၎င်းသည်ကိရိယာအားအချိန်အတန်ကြာအောင်အသံတစ်ခုနှင့်လည်ပတ်စေသည်tage အသုံးပြုသော နာရီကြိမ်နှုန်းအတွက် အနိမ့်ဆုံးအဖြစ် သတ်မှတ်ထားသည်ထက် နိမ့်သည်။ ကြည့်ပါ။ စာမျက်နှာ ၁၉ ရှိ“ EEPROM အကျင့်ပျက်ခြစားမှုကိုကာကွယ်ခြင်း” ဤအခြေအနေများတွင်ပြproblemsနာများကိုရှောင်ရှားဖို့ဘယ်လိုအသေးစိတ်အတွက်။
မရည်ရွယ်ဘဲ EEPROM ရေးသားခြင်းကိုတားဆီးရန်အတွက်တိကျသောရေးသည့်လုပ်ထုံးလုပ်နည်းကိုလိုက်နာရမည်။ ရည်ညွှန်းကိုးကားပါ "အက်တမ် စာမျက်နှာ 17 ရက်နေ့တွင် byte Programming " နှင့် စာမျက်နှာ ၁၇ ရှိ“ Split Byte Programming” စာမျက်နှာ ဒီအပေါ်အသေးစိတ်သည်။
EEPROM ကိုဖတ်သည့်အခါ CPU သည်နောက်လာမည့်ညွှန်ကြားချက်မလုပ်ဆောင်မီနာရီလေးနာရီတွင်ရပ်တန့်သွားသည်။ EEPROM ကိုရေးသားသောအခါလာမည့်ညွှန်ကြားချက်မလုပ်ဆောင်မှီ CPU သည်နာရီသံသရာနှစ်ခုအတွက်ရပ်ဆိုင်းထားသည်။
အနုမြူ byte ပရိုဂရမ်
Atomic Byte Programming ကိုအသုံးပြုခြင်းသည်အရိုးရှင်းဆုံးနည်းလမ်းဖြစ်သည်။ EEPROM သို့ byte တစ်ခုရေးသားသောအခါအသုံးပြုသူသည် EEAR မှတ်ပုံတင်သို့နှင့် EEDR မှတ်ပုံတင်တွင်အချက်အလက်ထည့်ရမည်။ အကယ်၍ EEPMn-bits သည်သုညဖြစ်ပါက (EEMPE ရေးပြီးသည့်နောက်လေးထပ်အတွင်း) EEPE ကိုရေးသားခြင်းသည်ဖျက်ခြင်း / ရေးခြင်းလုပ်ငန်းကိုအစပျိုးလိမ့်မည်။ ဖျက်ခြင်းနှင့်ရေးခြင်းသံသရာနှစ်ခုလုံးကိုတစ်ခုတည်းလုပ်ဆောင်ပြီးပရိုဂရမ်စုစုပေါင်းအချိန်ကိုဖော်ပြသည် စာမျက်နှာ 5 ရက်နေ့တွင်စားပွဲတင် 1-21။ EEPE bit သည်ဖျက်ခြင်းနှင့်ရေးသားခြင်းလုပ်ငန်းများပြီးဆုံးသည်အထိသတ်မှတ်ထားသည်။ ကိရိယာသည်ပရိုဂရမ်းမင်းနှင့်အလုပ်ရှုပ်နေသော်လည်းအခြား EEPROM လုပ်ဆောင်မှုများကိုပြုလုပ်ရန်မဖြစ်နိုင်ပါ။
Split Byte Programming
ကွဲပြားသောလုပ်ဆောင်မှုနှစ်ခုတွင် ဖျက်ခြင်းနှင့် ရေးခြင်းစက်ဝန်းကို ပိုင်းခြားနိုင်သည်။ အချို့သော အချိန်ကန့်သတ်ကာလအတွက် စနစ်သည် အချိန်တိုအတွင်း ဝင်ရောက်ရန် လိုအပ်ပါက (ပုံမှန်အားဖြင့် ပါဝါထောက်ပံ့မှု voltagအီး) ကျရောက်သည်။ ကြိုယူနိုင်စေရန်၊ tage ဤနည်းလမ်းတွင်၊ ရေးသားရမည့်နေရာများကို မရေးမီ ဖျက်ပစ်ရန် လိုအပ်ပါသည်။ သို့သော်ဖျက်ခြင်းနှင့်ရေးခြင်းလုပ်ငန်းများကိုနှစ်ခြမ်းကွဲစေသောကြောင့် system သည်အချိန်-အရေးကြီးလုပ်ငန်းများကို (ပုံမှန်အားဖြင့်အားဖြည့်ပြီးနောက်) လုပ်ခွင့်ပြုနိုင်သည်။
ဖျက်ပါ။
က byte ကိုဖျက်ပစ်ရန်လိပ်စာကို EEAR သို့ရေးထားရမည်။ အကယ်၍ EEPMn-bits သည် 0b01 ဖြစ်ပါက EEPE ကိုရေးသားခြင်း (EEMPE ရေးသားပြီးနောက်သံသရာလေးခုအတွင်း) သည်ဖျက်ပစ်ခြင်းကိုသာအစပျိုးလိမ့်မည် (ပရိုဂရမ်းမင်းအချိန်ကိုဖော်ပြထားသည်။ အပေါ်စားပွဲတင် 5-1 စာမျက်နှာ ၈) ။ EEPE bit သည်ဖျက်ပစ်သည့်စစ်ဆင်ရေးပြီးဆုံးသည်အထိသတ်မှတ်ထားသည်။ စက်သည်အလုပ်ရှုပ်နေသောပရိုဂရမ်းမင်းဖြစ်သော်လည်းအခြား EEPROM လုပ်ဆောင်မှုများကိုပြုလုပ်ရန်မဖြစ်နိုင်ပါ။
ရေးပါ။
တည်နေရာတစ်ခုကိုရေးရန်အသုံးပြုသူသည်လိပ်စာကို EEAR သို့ထည့်ပြီးဒေတာကို EEDR သို့ရေးရမည်။ အကယ်၍ EEPMn-bits သည် 0b10 ဖြစ်ပါက EEPE ကိုရေးသားခြင်း (EEMPE ရေးပြီးသည့်နောက်လေးထပ်အတွင်း) ရေးသားမှုကိုသာအစပျိုးလိမ့်မည်။ စာမျက်နှာ 5 ရက်နေ့တွင်စားပွဲတင် 1-21) ။ ရေးသားမှုစစ်ဆင်ရေးပြီးဆုံးသည်အထိ EEPE bit ကိုသတ်မှတ်ထားသည်။ ရေးသားရမည့်နေရာကိုမရေးသားမီဖျက်သိမ်းခြင်းမရှိပါကသိမ်းဆည်းထားသည့်အချက်အလက်များကိုရှုံးနိမ့်သူအဖြစ်သတ်မှတ်ရမည်။ ကိရိယာသည်ပရိုဂရမ်းမင်းနှင့်အလုပ်ရှုပ်နေသော်လည်းအခြား EEPROM လုပ်ဆောင်မှုများကိုပြုလုပ်ရန်မဖြစ်နိုင်ပါ။
Eibrate လုပ်ထားသော Oscillator ကို EEPROM အသုံးပြုချိန်ကိုအသုံးပြုသည်။ လှိုကြိမ်နှုန်းမှာဖော်ပြထားတဲ့လိုအပ်ချက်များအတွင်းသေချာအောင်လုပ်ပါ စာမျက်နှာ ၃၁ ရှိ“ အော်စကာ - တုန်ခါမှုစံကိုက်ညှိမှတ်ပုံတင်”.
အောက်ပါကုဒ် examples သည် EEPROM ၏ဖျက်ရေး၊ ရေးရန်၊ သို့မဟုတ်အနုမြူဗုံးအတွက် C စည်းတစ်ခုကိုပြသည်။ ရည်းစားဟောင်းampကြားဖြတ်များကို ထိန်းချုပ်ထားသည် (ဥပမာ၊ ကမ္ဘာလုံးဆိုင်ရာ ကြားဖြတ်များကို ပိတ်ထားခြင်းဖြင့်) ဤလုပ်ဆောင်ချက်များကို လုပ်ဆောင်စဉ်တွင် ကြားဖြတ်တောက်ခြင်းမျိုး ဖြစ်ပေါ်လာမည်မဟုတ်ဟု ယူဆပါသည်။
Assembly Code Example |
EEPROM_write
; ယခင်ရေးသားမှုပြီးစီးရန်စောင့်ပါ sbic EECR၊EEPE rjmp EEPROM_write ; Programming mode ကိုသတ်မှတ်ပါ ldi r16, (0<<EEPM1)|(0<<EEPM0) EECR, r16 ထွက်သည်။ ; လိပ်စာမှတ်ပုံတင်အတွက်လိပ်စာ (r18: r17) ကို set up out EEARH, r18 EEARL, r17 ထွက်သည်။ ; ဒေတာမှတ်ပုံတင်ရန်ဒေတာ (r19) ရေးပါ EEDR, r19 ထွက်သည်။ ; ကျိုးကြောင်းဆီလျော်မှုကို EEMPE သို့ရေးပါ sbi EECR၊ EEMPE ; EEPE ကိုချိန်ညှိခြင်းဖြင့် eeprom write ကိုစတင်ပါ sbi EECR၊EEPE ret |
C Code အတထွample |
ပျက်ပြယ်သွားသော EEPROM_write(လက်မှတ်မထိုးထားသော char ucAddress၊ လက်မှတ်မထိုးထားသော char ucData)
{ /* ယခင်ရေးသားမှုပြီးစီးရန် စောင့်ပါ */ နေစဉ်(EECR & (1< ; /* ပရိုဂရမ်မုဒ်ကို သတ်မှတ်ပါ*/ EECR = (0 <။ ) / * လိပ်စာနှင့်အချက်အလက်စာရင်းသွင်းထားပါ * / EEAR = ucAddress; EEDR = ucData; /* EEMPE သို့ ယုတ္တိနည်းတစ်ခု ရေးပါ*/ EECR | = (1 < / * EEPE ကိုစတင်ခြင်းဖြင့် Eeprom ရေးခြင်းကိုစတင်ပါ။ * EECR | = (1 < } |
နောက်ကုဒ် exampES သည် EEPROM ကိုဖတ်ရန်အတွက် စုဝေးမှုနှင့် C လုပ်ဆောင်ချက်များကိုပြသသည်။ ရည်းစားဟောင်းampဤလုပ်ဆောင်ချက်များကို လုပ်ဆောင်နေစဉ်တွင် ကြားဖြတ်မှုများကို ထိန်းချုပ်ထားသည်ဟု ယူဆပါသည်။
Assembly Code Example |
EEPROM_ဖတ်သည်-
; ယခင်ရေးသားမှုပြီးစီးရန်စောင့်ပါ sbic EECR၊EEPE rjmp EEPROM_read ; လိပ်စာမှတ်ပုံတင်အတွက်လိပ်စာ (r18: r17) ကို set up out EEARH, r18 EEARL, r17 ထွက်သည်။ ; EERE ကိုရေးခြင်းဖြင့်ဖတ်ပါ sbi EECR၊ EERE ; ဒေတာမှတ်ပုံတင်မှဒေတာများကိုဖတ်ပါ r16၊EEDR တွင် ret |
C Code အတထွample |
လက်မှတ်မထိုးထားသော char EEPROM_read(လက်မှတ်မထိုးထားသော char ucAddress)
{ / * ယခင်ရေးသားမှုပြီးဆုံးသည်အထိစောင့်ပါ။ * / စဉ် (EECR & (1 <။ ) ; / * လိပ်စာမှတ်ပုံတင်ကို set up * / EEAR = ucAddress; /* EERE ကိုရေးခြင်းဖြင့်ဖတ်ပါ eeprom ကိုစတင်ပါ */ EECR | = (1 < / * အချက်အလက်မှတ်ပုံတင်မှဒေတာများကိုပြန်ပို့ပါ * / EEDR သို့ပြန်လာ; } |
EEPROM မှအကျင့်ပျက်ခြစားမှုကိုကာကွယ်ခြင်း
VCC နည်းပါးသည့်ကာလအတွင်း၊ ထောက်ပံ့မှုပမာဏကြောင့် EEPROM ဒေတာ ပျက်စီးသွားနိုင်သည်။tage သည် CPU နှင့် EEPROM ကောင်းစွာလည်ပတ်ရန်အတွက် အလွန်နည်းပါသည်။ ဤပြဿနာများသည် EEPROM ကိုအသုံးပြုသောဘုတ်အဖွဲ့အဆင့်စနစ်များနှင့်တူပြီးတူညီသောဖြေရှင်းနည်းများကိုကျင့်သုံးသင့်သည်။
Voltage က နည်းလွန်းတယ်။ ပထမဦးစွာ EEPROM အတွက် ပုံမှန်ရေးသည့် စီစဉ်တစ်ခုသည် အနည်းဆုံး vol တစ်ခု လိုအပ်သည်။tage မှန်ကန်စွာလည်ပတ်ရန်။ ဒုတိယအချက်မှာ၊ CPU ကိုယ်တိုင်က ထောက်ပံ့မှုပမာဏရှိပါက ညွှန်ကြားချက်များကို မှားယွင်းစွာလုပ်ဆောင်နိုင်သည်။tage က အရမ်းနည်းတယ်။
ဤဒီဇိုင်းထောက်ခံချက်ကိုလိုက်နာခြင်းဖြင့် EEPROM ဒေတာအကျင့်ပျက်ခြစားမှုများကိုအလွယ်တကူရှောင်ရှားနိုင်သည်။
ပါဝါထောက်ပံ့မှုပမာဏ မလုံလောက်သည့်ကာလများအတွင်း AVR RESET ကို တက်ကြွစွာထားပါ (နိမ့်သည်)tagင အတွင်းပိုင်း အညိုရောင်ထောက်လှမ်းခြင်း (BOD) ကို ဖွင့်ခြင်းဖြင့် ၎င်းကို လုပ်ဆောင်နိုင်သည်။ အတွင်း BOD ၏ ထောက်လှမ်းမှုအဆင့်သည် ၎င်းနှင့် မကိုက်ညီပါက၊
လိုအပ်သော ထောက်လှမ်းမှုအဆင့်၊ ပြင်ပအနိမ့်ဆုံး VCC ပြန်လည်သတ်မှတ်ကာကွယ်ရေးပတ်လမ်းကို အသုံးပြုနိုင်သည်။ စာရေးခြင်းလုပ်ဆောင်နေချိန်တွင် ပြန်လည်သတ်မှတ်မှုတစ်ခု ဖြစ်ပေါ်ပါက၊ ပါဝါထောက်ပံ့မှုပမာဏကို ပံ့ပိုးပေးသည့် လုပ်ဆောင်ချက်ကို ပြီးဆုံးစေမည်ဖြစ်သည်။tage လုံလောက်ပါတယ်။
I / O မှတ်ဉာဏ်
ATtiny25 / 45/85 ၏ I / O အာကာသဆိုင်ရာအဓိပ္ပာယ်ဖွင့်ဆိုချက်ကိုပြထားသည် စာမျက်နှာ ၂၀၀ မှ“ အကျဉ်းချုပ်မှတ်ပုံတင်ပါ”.
ATtiny25 / 45/85 I / Os နှင့်အရံပစ္စည်းများအားလုံးသည် I / O နေရာတွင်ရှိသည်။ I / O တည်နေရာများအားလုံးကို LD / LDS / LDD နှင့် ST / STS / STD ညွှန်ကြားချက်များဖြင့် ဝင်ရောက်၍ ယေဘူယျအားဖြင့်အလုပ်လုပ်သည့်မှတ်ပုံတင် ၃၂ နှင့် I / O အာကာသအတွင်းရှိအချက်အလက်များကိုလွှဲပြောင်းနိုင်သည်။ 32x0 - 00x0F လိပ်စာအကွာအဝေးအတွင်းရှိ I / O Registers သည် SBI နှင့် CBI ညွှန်ကြားချက်များကို အသုံးပြု၍ တိုက်ရိုက်နည်းနည်းသာသုံးနိုင်သည်။ ဤမှတ်ပုံတင်များတွင် SBIS နှင့် SBIC ညွှန်ကြားချက်များကို အသုံးပြု၍ တစ်ခုတည်း -bits ၏တန်ဖိုးကိုစစ်ဆေးနိုင်သည်။ အသေးစိတ်များအတွက်ညွှန်ကြားချက်အစုံအပိုင်းကိုဖတ်ရှုပါ။ I / O သီးခြား command များ IN နှင့် OUT ကိုအသုံးပြုသောအခါ 1x0 - 00x0F လိပ်စာများကိုအသုံးပြုရမည်။ LD နှင့် ST ညွှန်ကြားချက်များကို အသုံးပြု၍ I / O Registers ကို data space အဖြစ်အသုံးပြုတဲ့အခါ 3x0 ကိုဒီလိပ်စာများမှာထည့်ရမယ်။
နောင်လာမည့်စက်ကိရိယာများနှင့်လိုက်ဖက်မှုရှိရန်၊ အကယ်၍ အသုံးပြုပါကသီးသန့်ထားရှိသော bits များကိုသုညသို့ရေးသင့်သည်။ ကြိုတင်ကာကွယ်ထားသော I / O မှတ်ဉာဏ်လိပ်စာများကိုဘယ်တော့မှရေးသားရမည်မဟုတ်ပါ
အချို့သော Status Flags များကို၎င်းတို့အားယုတ္တိရှိရှိရေးသားခြင်းတစ်ခုဖြင့်ရေးသားပြီးရှင်းလင်းသွားသည်။ CBI နှင့် SBI ညွှန်ကြားချက်များသည်သတ်မှတ်ထားသော bit ပေါ်တွင်သာအလုပ်လုပ်မည်ဖြစ်ပြီးထိုအခြေအနေအလံများပါရှိသောမှတ်ပုံတင်တွင်သာအသုံးပြုနိုင်သည်။ CBI နှင့် SBI ညွှန်ကြားချက်များသည်မှတ်ပုံတင်များ 0x00 to 0x1F နှင့်သာအလုပ်လုပ်သည်။
I / O နှင့် Peripherals Control Registers များကိုနောက်ပိုင်းအခန်းများတွင်ရှင်းလင်းထားသည်။
ဖော်ပြချက်မှတ်ပုံတင်ရန်
EEARH - EEPROM လိပ်စာမှတ်ပုံတင်
နည်းနည်း | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1F | – | – | – | – | – | – | – | EEAR8 | နား |
ဖတ်/ရေး | R | R | R | R | R | R | R | R/W | |
ကနဦးတန်ဖိုး | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X/0 |
-bits 7: 1 - Res: Reserved-bits
ဤရွေ့ကား -bits အနာဂတ်အသုံးပြုမှုအတွက်သိုထားခြင်းနှင့်အစဉ်အမြဲသုညအဖြစ်ဖတ်ပါလိမ့်မယ်။
-bits 0 - EEAR8: EEPROM လိပ်စာ
ဤသည်သည်ထူးခြားထင်ရှားသော EEPROM ၏လိပ်စာ bit ATtiny85 ဖြစ်သည်။ EEPROM နည်းပါးသော ATtiny25 / ATtiny45 ရှိစက်များတွင်ဤ bit သည်ထိန်းသိမ်းထားပြီးအမြဲတမ်းသုညကိုဖတ်လိမ့်မည်။ EEPROM လိပ်စာမှတ်ပုံတင် (EEAR) ၏ကန ဦး တန်ဖိုးကိုသတ်မှတ်ခြင်းမရှိပဲထို့ကြောင့် EEPROM မဝင်ရောက်မီမှန်ကန်သောတန်ဖိုးကိုရေးသားရမည်။
EEARL - EEPROM လိပ်စာမှတ်ပုံတင်
နည်းနည်း
0x1E | EEAR7 | EEAR6 | EEAR5 | EEAR4 | EEAR3 | EEAR2 | EEAR1 | EEAR0 | Eear |
နောက် / ရေး | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
ကနဦးတန်ဖိုး | X | X | X | X | X | X | X | X |
bit 7 - EEAR7: EEPROM လိပ်စာ
ဤသည်သည် ATtiny45 ၏အရေးအကြီးဆုံး EEPROM address bit ဖြစ်သည်။ EEPROM နည်းသော ATtiny25 စက်ပစ္စည်းများတွင်ဤ bit သည်သီးသန့်ထားရှိပြီးအမြဲတမ်းသုညကိုဖတ်လိမ့်မည်။ EEPROM ၏လိပ်စာမှတ်ပုံတင် (EEAR) ၏ကန ဦး တန်ဖိုးကိုသတ်မှတ်မထားပါ။ ထို့ကြောင့် EEPROM မဝင်ရောက်မီသင့်လျော်သောတန်ဖိုးကိုရေးထားရမည်။
-bits 6: 0 - EEAR [6: 0]: EEPROM လိပ်စာ
ဤရွေ့ကား EEPROM လိပ်စာမှတ်ပုံတင်၏ (အနိမ့်) -bits ကိုဖြစ်ကြသည်။ EEPROM ၏အချက်အလက် bytes များကို 0 ((128/256 / 512-1) အတွင်းတွင်မျဉ်းဖြောင့်အတိုင်းဖြေရှင်းသည်။ EEAR ၏ကန ဦး တန်ဖိုးကိုသတ်မှတ်ခြင်းမရှိသောကြောင့် EEPROM ကိုမဝင်ရောက်မှီသင့်လျော်သောတန်ဖိုးကိုရေးသားရမည်။
EEDR - EEPROM ဒေတာမှတ်ပုံတင်
နည်းနည်း | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1D | EEDR7 | EEDR6 | EEDR5 | EEDR4 | EEDR3 | EEDR2 | EEDR1 | EEDR0 | EEDR |
ဖတ်/ရေး | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
ကနဦးတန်ဖိုး | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
EEPROM ရေးရန်စစ်ဆင်ရေးအတွက် EEDR မှတ်ပုံတင်က EEAR မှတ်ပုံတင်မှပေးသောလိပ်စာတွင် EEPROM သို့ရေးရန်အချက်အလက်များပါ ၀ င်သည်။ EEPROM ဖတ်စစ်ဆင်ရေးအတွက် EEDR တွင်ဖတ်ပြီးသောအချက်အလက်များပါ ၀ င်သည်
EEAR မှပေးသောလိပ်စာမှ EEPROM ။
5.5.4 EECR - EEPROM ထိန်းချုပ်ရေးမှတ်ပုံတင် |
|||||||||
bit 7 6 5 | 4 | 3 | 2 | 1 | 0 | ||||
၃၂x၄၁C – | – | EEPM1 | EEPM0 | အံသြစရာ | EEMPE | EEPE | ဒီမှာ | EECR | |
ဖတ် R / R ကို R / W ကိုဖတ်ပါ | R/W | R/W | R/W | R/W | R/W | ||||
ကန ဦး တန်ဖိုး 0 င် X ကို | X | 0 | 0 | X | 0 |
bit 7 - Res: Reserved Bit
ဒီ bit ဟာအနာဂတ်အတွက်အသုံးပြုရန်အတွက်သိုထားထားပြီး ATtiny0 / 25/45 တွင် 85 အဖြစ်အမြဲဖတ်ပါလိမ့်မည်။ အနာဂတ် AVR ကိရိယာများနှင့်လိုက်ဖက်ညီစေရန်ဤ bit ကိုသုညသို့အမြဲရေးပါ။ စာဖတ်ပြီးနောက်, ဒီ bit နဲ့ထွက်ဖုံးကွယ်။
bit 6 - Res: Reserved Bit
ဒီ bit ကို ATtiny25 / 45/85 မှာယူထားပြီးအမြဲတမ်းသုညအဖြစ်ဖတ်မယ်။
-bits 5: 4 - EEPM [1: 0]: EEPROM ပရိုဂရမ်လုပ်ခြင်းအပိုင်း
EEPROM Programming mode bits setting သည် EEPE ကိုရေးသားသည့်အခါမည်သည့်ပရိုဂရမ်လုပ်ဆောင်မှုကိုစတင်မည်ကိုသတ်မှတ်သည်။ ဒေတာတစ်ခုကိုအက်တမ်စစ်ဆင်ရေး (ပရိုဂရမ်ဟောင်းတစ်ခုကိုဖျက်ပစ်ခြင်းနှင့်တန်ဖိုးအသစ်ကိုပရိုဂရမ်ပြုလုပ်ခြင်း) တွင်ပရိုဂရမ်ဆွဲခြင်းသို့မဟုတ်ဖျက်ခြင်းနှင့်ရေးခြင်းလုပ်ငန်းများကိုနှစ်ခုခွဲခြားရန်ဖြစ်နိုင်သည်။ ကွဲပြားခြားနားသော Modes များအတွက် Programming အချိန်ကိုပြနေကြသည် ဇယား ၂-၄။ EEPE ကိုသတ်မှတ်ပြီးပါက EEPMn သို့မည်သည့်ရေးသားမှုကိုမဆိုလျစ်လျူရှုလိမ့်မည်။ ပြန်လည်သတ်မှတ်သည် EEPMM သည်အလုပ်များသောပရိုဂရမ်းမင်းမဟုတ်ပါက EEPMn bits သည် 0b00 သို့ပြန်လည်သတ်မှတ်လိမ့်မည်။
ဇယား 5-1 ။ EEPROM မုဒ် Bits
EEPM1 | EEPM0 | ပရိုဂရမ်ရေးချိန် | စစ်ဆင်ရေး |
0 | 0 | 3.4 ms | ခွဲစိတ်မှုတစ်ခု (Atomic Operation) တွင်ဖျက်ခြင်းနှင့်ရေးခြင်း |
0 | 1 | 1.8 ms | သာဖျက်ပါ |
1 | 0 | 1.8 ms | သာရေးပါ |
1 | 1 | – | နောင်အသုံးအတွက် သီးသန့်ထားပါ။ |
Bit 3 - EERIE: EEPROM Ready Interrupt Enable လုပ်ပါ
SERG ရှိ I-bit ကိုသတ်မှတ်ထားပါက EERIE တစ်ခုကိုတစ်ခုသို့ရေးသားခြင်းသည် EEPROM Ready Interrupt ကိုခွင့်ပြုသည်။ EERIE ကိုသုညသို့ရေးခြင်းသည်ကြားဖြတ်ခြင်းကိုပျက်ပြားစေသည်။ Non-volatile memory သည်ပရိုဂရမ်အတွက်အဆင်သင့်ဖြစ်လျှင် EEPROM Ready Interrupt ကအမြဲတမ်းပြတ်တောက်သည်။
Bit 2 - EEMPE: EEPROM Master Program ကို Enable လုပ်ပါ
EEMPE bit သည် EEPE တစ်ခုသို့ရေးသားခြင်းသည်အကျိုးသက်ရောက်မှုရှိ၊ မရှိဆုံးဖြတ်သည်။
EEMPE ကိုသတ်မှတ်ပြီးပါက EEPE ကိုလေးနာရီအတွင်းသတ်မှတ်ခြင်းသည် EEPROM ကိုရွေးချယ်ထားသောလိပ်စာအတိုင်းပရိုဂရမ်ပြုလိမ့်မည်။ အကယ်၍ EEMPE သည်သုညဖြစ်ပါက EEPE setting သည်အကျိုးသက်ရောက်မှုမရှိပါ။ EEMPE ကိုဆော့ဝဲလ်ဖြင့်ရေးသားပြီးသည့်နောက် ၄ နာရီသံသရာပြီးနောက် hardware သည် bit သို့သုညသို့ရှင်းလင်းသွားသည်။
Bit 1 - EEPE: EEPROM ပရိုဂရမ်ဖွင့်ပါ
EEPROM ပရိုဂရမ်သည် Enable Signal EEPE ဆိုသည်မှာ EEPROM ကိုပရိုဂရမ်ဖွင့်ရန်အချက်ပြခြင်းဖြစ်သည်။ EEPE ရေးသားသောအခါ EEPROM ကို EEPMn bits setting အရပရိုဂရမ်ပြုလိမ့်မည်။ ယုတ္တိနည်းကို EEPE သို့မရေးမီ EEMPE bit ကိုတ ဦး တည်းရေးရန်လိုသည်။ Write access time ကုန်သွားသောအခါ EEPE bit သည် hardware ဖြင့်ရှင်းလင်းသွားသည်။ EEPE ကိုသတ်မှတ်ပြီးသောအခါလာမည့်ညွှန်ကြားချက်ကိုမလုပ်ဆောင်မီ CPU သည်သံသရာနှစ်ခုဖြင့်ရပ်ဆိုင်းထားသည်။
Bit 0 - EERE: EEPROM Read Enable
EEPROM Read Enable Signal - EERE သည် EEPROM သို့ဖတ်သောအချက်ဖြစ်သည်။ EEAR မှတ်ပုံတင်တွင်မှန်ကန်သောလိပ်စာကိုသတ်မှတ်သောအခါ EERROM bit ကို EEPROM read ကိုအစပျိုးရန်တစ်ခုသို့ရေးရမည်။ EEPROM ဖတ်နိုင်ခွင့်သည်ညွှန်ကြားချက်တစ်ခုယူပြီးလိုအပ်သောအချက်အလက်များကိုချက်ချင်းရရှိနိုင်သည်။ EEPROM ကိုဖတ်သည့်အခါ CPU သည်နောက်လာမည့်ညွှန်ကြားချက်ကိုမလုပ်ဆောင်မီစက်ဘီး ၄ ခုရပ်ဆိုင်းထားသည်။ အသုံးပြုသူသည်ဖတ်ရှုခြင်းကိုမစတင်မှီ EEPE နည်းနည်းကိုစစ်တမ်းကောက်ယူသင့်သည်။ ရေးသားမှုတစ်ခုပြုလုပ်နေပါက EEPROM ကိုဖတ်ရန်၊ EEAR မှတ်ပုံတင်ကိုပြောင်းလဲရန်မဖြစ်နိုင်ပါ။
System Clock နှင့် Clock Options များ
နာရီစနစ်များနှင့်၎င်းတို့၏ဖြန့်ဖြူး
CPU နာရီ
CPU နာရီသည် AVR core ၏လည်ပတ်မှုနှင့်သက်ဆိုင်သော system အစိတ်အပိုင်းများသို့လမ်းကြောင်းပြောင်းသည်။ ထွampထိုကဲ့သို့သော မော်ဂျူးများသည် အထွေထွေ ရည်ရွယ်ချက် မှတ်ပုံတင်ခြင်း ဖြစ်သည်။ File၊ Stack Pointer ကိုကိုင်ဆောင်ထားသော အဆင့်အတန်း မှတ်ပုံတင်ခြင်းနှင့် ဒေတာမှတ်ဉာဏ်။ CPU နာရီအားရပ်ဆိုင်းခြင်းသည် core ကိုယေဘုယျစစ်ဆင်ရေးများနှင့်တွက်ချက်မှုများလုပ်ဆောင်ခြင်းမှတားဆီးပေးသည်။
I / O နာရီ - clkI / O
I / O နာရီကို Timer / Counter ကဲ့သို့သော I / O module အများစုမှအသုံးပြုသည်။ I / O clock ကို External Interrupt module မှလည်းအသုံးပြုသည်၊ သို့သော်အချို့သောပြင်ပ interrupts များသည်ပြတ်တောင်းပြတ်တောင်းယုတ္တိဗေဒဖြင့်ရှာဖွေတွေ့ရှိသည်၊ ၎င်းသည် I / O နာရီရပ်တန့်လျှင်ပင်ထိုကဲ့သို့ interrupts များကိုရှာဖွေတွေ့ရှိနိုင်သည်။
Flash နာရီ - clkFLASH
Flash နာရီသည် Flash interface ၏လည်ပတ်မှုကိုထိန်းချုပ်သည်။ Flash နာရီသည်ပုံမှန်အားဖြင့် CPU clock နှင့်အတူတကွအလုပ်လုပ်သည်။
ADC နာရီ - clkADC
ADC တွင်သီးသန့်နာရီဒိုမိန်းတစ်ခုပါရှိသည်။ ဒီဂျစ်တယ်ဆားကစ်မှထွက်ပေါ်လာသောဆူညံသံကိုလျှော့ချရန်၎င်းသည် CPU နှင့် I / O နာရီများကိုရပ်တန့်စေသည်။ ဤသည်ကပိုတိကျသော ADC ပြောင်းလဲခြင်းရလဒ်များကိုပေးသည်။
Fast Peripheral Clock Generation အတွက်ပြည်တွင်း PLL - clkPCK
ATtiny25 / 45/85 ရှိ internal PLL သည် clock frequency ကို 8x ပမာဏဖြစ်သော source input မှမြှောက်သည်။ ပုံမှန်အားဖြင့် PLL သည်အတွင်းဖြစ်သော 8.0 MHz RC လှိုကိုအရင်းအမြစ်အဖြစ်အသုံးပြုသည်။ တနည်းအားဖြင့် PLLCSR ၏ bit LSM ကိုသတ်မှတ်ပါက၎င်းသည် RC oscillator ၏ output ကိုနှစ်ပိုင်းခွဲပါလိမ့်မည်။ ထို့ကြောင့် PLL ၏ output သည်အရံမြန်နာရီသည် ၆၄ MHz ဖြစ်သည်။ အရံမြန်သောအရံနာရီသို့မဟုတ်၎င်းမှကြိုတင်တင်ထားသည့်နာရီကို Timer / Counter64 အတွက်သို့မဟုတ် system clock တစ်ခုအနေဖြင့်ရွေးချယ်နိုင်သည်။ ကြည့်ပါ ပုံ ၂-၁. PLLCSR ၏ LSM ကို သတ်မှတ်သောအခါ အမြန်အရံနာရီ၏ ကြိမ်နှုန်းကို နှစ်ပိုင်းခွဲကာ ရလဒ်မှာ နာရီကြိမ်နှုန်း 32 MHz ဖြစ်သည်။ PLLCLK ကို စနစ်နာရီအဖြစ် အသုံးပြုပါက LSM ကို သတ်မှတ်၍ မရပါ။
ပုံ ၆-၂။ PCK နာရီစနစ်။
အဆိုပါ PLL သည် RC လှိုအပေါ်သော့ခတ်ခြင်းနှင့် OSCCAL မှတ်ပုံတင်မှတဆင့် RC လှိုကိုညှိတစ်ချိန်တည်းမှာအစာရှောင်ခြင်းအရံနာရီကိုချိန်ညှိပါလိမ့်မယ်။ သို့သော် RC လှိုကို 8 MHz ထက်ပိုမိုမြင့်မားသောကြိမ်နှုန်းသို့ခေါ်ဆောင်သွားလျှင်ပင်အရံမြန်နာရီကြိမ်နှုန်းသည် ၈၅ MHz (အဆိုးဆုံးအခြေအနေ) တွင်ပြည့်နှက်နေပြီးအများဆုံးကြိမ်နှုန်းဖြင့်လှို့ကျန်နေဆဲဖြစ်သည်။ ဤကိစ္စတွင် PLL သည် RC oscillator clock နှင့်ကြာကြာမပိတ်တော့ကြောင်းသတိပြုသင့်သည်။ ထို့ကြောင့် PLL ကိုမှန်ကန်သောလည်ပတ်မှုအတိုင်းအတာတွင်ထိန်းသိမ်းထားနိုင်ရန်အတွက် OSCCAL ချိန်ညှိချက်များကို 85 MHz ထက်ပိုမိုမြင့်မားသောကြိမ်နှုန်းသို့မယူရန်အကြံပြုသည်။
အတွင်းပိုင်း PLL ကိုဖွင့်သောအခါ -
မှတ်ပုံတင် PLLCSR ရှိ PLLE bit ကိုသတ်မှတ်သည်။
CKSEL ဖျူးကို '0001' သို့ပရိုဂရမ်တင်သည်။
CKSEL ဖျူးကို '0011' သို့ပရိုဂရမ်တင်သည်။
PLL လော့ခ်ချသောအခါ PLLCSR ဘစ် PLOCK ကို သတ်မှတ်သည်။ အတွင်းပိုင်း RC oscillator နှင့် PLL နှစ်ခုလုံးကို power down နှင့် stand-by sleep မုဒ်များတွင် ပိတ်ထားသည်။
ATtiny15 လိုက်ဖက်တဲ့ mode မှာပြည်တွင်း PLL
ATtiny25 / 45/85 သည် ATtiny15 အသုံးပြုသူများအတွက်ရွှေ့ပြောင်းနိုင်သောကိရိယာတစ်ခုဖြစ်သောကြောင့်နောက်ပြန်လိုက်ဖက်သော ATtiny15 လိုက်ဖက်တဲ့စနစ်ရှိသည်။ ATtiny15 လိုက်ဖက်တဲ့နည်းလမ်းကို CKSEL ဖျူးများကို '0011' ကိုပရိုဂရမ်ရေးခြင်းဖြင့်ရွေးချယ်သည်။
ATtiny15 လိုက်ဖက်တဲ့စနစ်မှာ RC RC လှို့ကြိမ်နှုန်းကို ၆.၄ MHz အထိချိန်ညှိပြီး PLL ၏မြှောက်ကိန်း 6.4x သတ်မှတ်ထားတယ်။ ကြည့်ပါ ပုံ ၂-၁။ ဤချိန်ညှိမှုများနှင့်အတူ clocking system သည် ATtiny15 နှင့်လိုက်ဖက်ပြီးအရံမြန်သည့်အရံနာရီသည်ကြိမ်နှုန်း ၂၅.၆ MHz (ATtiny25.6 ကဲ့သို့) ဖြစ်သည်။
ပုံ ၆-၃။ ATtiny6 လိုက်ဖက်ညီသောမုဒ်တွင် PCK နာရီစနစ်။
နာရီအရင်းအမြစ်များ
အောက်ဖော်ပြပါအတိုင်း Flash Fuse bits ဖြင့်ရွေးချယ်နိုင်သောနာရီအရင်းအမြစ်ရွေးစရာများရှိသည်။ ရွေးချယ်ထားသည့်အရင်းအမြစ်မှနာရီသည် AVR နာရီမီးစက်ထဲသို့ထည့်ပြီးသင့်လျော်သော module များသို့ရောက်သွားသည်။
ဇယား ၆-၁။ Device Clocking Options ကို ရွေးချယ်ပါ။
ကိရိယာ Clocking Option ကို | CKSEL[3:0](၄) |
ပြင်ပနာရီ (ကြည့် စာမျက်နှာ ၈) | 0000 |
ကြိမ်နှုန်းမြင့် PLL နာရီ (ကြည့် စာမျက်နှာ ၈) | 0001 |
ပြည်တွင်းလှိုချိန်ညှိ (ကြည့် စာမျက်နှာ ၈) | 0010(၄) |
ပြည်တွင်းလှိုချိန်ညှိ (ကြည့် စာမျက်နှာ ၈) | 0011(၄) |
Internal 128 kHz လှို (ကြည့် စာမျက်နှာ ၈) | 0100 |
အနိမ့်ကြိမ်နှုန်း Crystal လှို (ကြည့် စာမျက်နှာ ၈) | 0110 |
Crystal လှို / ကြွေဆိုင်ရာပဲ့တင်ရိုက်ခတ်မှု (ကြည့် စာမျက်နှာ ၈) | 1000 – 1111 |
လက်ဝယ်ရှိတယ်။ | ၃၇း၈ |
အားလုံးဖျူးများအတွက် "1" ပရိုဂရမ်ကိုဆိုလိုသည်နေစဉ် "0" ပရိုဂရမ်ကိုဆိုလိုသည်။
ဒီရွေးစရာကိုဒီကိရိယာနဲ့တင်ပို့လိုက်ပါပြီ
၎င်းသည် system clock ကိုလေးပိုင်းခွဲခြားထားသော ATtiny15 Compatibility Mode ကိုရွေးချယ်လိမ့်မည်။ ၁.၆ MHz နာရီကြိမ်နှုန်းကိုရရှိလိမ့်မည်။ ပိုမိုသတင်းအချက်အလက်များအတွက်ကြည့်ပါ စာမျက်နှာ ၂၇ ရှိ“ အတွင်းတွန်းလှည့်ချိန်ညှိစက်”.
clocking option တစ်ခုစီအတွက်ရွေးချယ်မှုများကိုအောက်ပါကဏ္sectionsများတွင်ဖော်ပြထားသည်။ CPU သည် Power-down မှနှိုးလာသောအခါရွေးချယ်ထားသော clock source သည် start-up ကိုအချိန်အတိုင်းအတာတစ်ခုအထိအသုံးပြုသည်။ ညွှန်ကြားချက်ကွပ်မျက်မှုမစတင်မီတည်ငြိမ်သောလှို့လည်ပတ်မှုကိုသေချာစေသည်။ CPU သည်ပြန်လည်စတင်ခြင်းမှစတင်သောအခါပုံမှန်လည်ပတ်မှုမစတင်မီပါဝါတည်ငြိမ်သောအဆင့်သို့ရောက်ရှိရန်အပိုဆောင်းနှောင့်နှေးမှုရှိသည်။ Watchdog Oscillator သည်ဤအချိန်နှင့်တပြေးညီစတင်ချိန်၏အချိန်ကိုက်ရန်အသုံးပြုသည်။ အချိန်ကုန်ချိန်တိုင်းအတွက်အသုံးပြုသော WDT လှိုသံသရာအရေအတွက်ကိုပြထားသည် ဇယား ၂-၄.
ဇယား ၆-၂။ Watchdog Oscillator Cycles အရေအတွက်
ကြာချိန်ကိုရိုက်ပါ | သံသရာအရေအတွက် |
4 ms | 512 |
64 ms | 8K (8,192) |
ပြင်ပနာရီ
စက်ကိုပြင်ပနာရီအရင်းအမြစ်မှမောင်းထုတ်ရန်၊ ပုံ ၂-၁။ စက်ကိုပြင်ပနာရီပေါ်တွင်လည်ပတ်ရန် CKSEL ဖျူးများကို“ 00” ဟုသတ်မှတ်ရမည်။
ပုံ ၆-၄။ ပြင်ပနာရီ ဒရိုက်ဗ် ဖွဲ့စည်းမှု
ဒီနာရီအရင်းအမြစ်ကိုရွေးချယ်သောအခါ start-up အချိန်များကိုပြထားသည့်အတိုင်း SUT Fuse များကဆုံးဖြတ်သည် ဇယား ၂-၄.
ဇယား ၆-၃။ ပြင်ပနာရီရွေးချယ်မှုအတွက် စတင်ချိန်များ
SUT[1:0] | Power-down မှ Start-up အချိန် | ပြန်လည်စတင်မှအပိုဆောင်းနှောင့်နှေး | အသုံးပြုမှုကို အကြံပြုထားသည်။ |
00 | ၆ CK | 14CK | BOD ကိုဖွင့်ထားသည် |
01 | ၆ CK | 14CK + 4 ms | လျှင်မြန်စွာမြင့်တက်နေသောစွမ်းအား |
10 | ၆ CK | 14CK + 64 ms | ဖြည်းဖြည်းချင်းမြင့်တက်ပါဝါ |
11 | လက်ဝယ်ရှိတယ်။ |
ပြင်ပနာရီတစ်ခုကိုအသုံးပြုသောအခါ MCU ၏တည်ငြိမ်သောလည်ပတ်မှုသေချာစေရန်လျှောက်ထားထားသောနာရီအကြိမ်ရေကိုရုတ်တရက်ပြောင်းလဲခြင်းကိုရှောင်ရှားရန်လိုအပ်သည်။ တစ်နာရီသံသရာမှနောက်တစ်ခုသို့ ၂% ထက် ပို၍ သောကြိမ်နှုန်းပြောင်းလဲခြင်းသည်ခန့်မှန်းရခက်သည့်အပြုအမူကိုဖြစ်ပေါ်စေသည်။ နာရီအကြိမ်ရေပြောင်းလဲမှုအတွင်း MCU ကို Reset တွင်ထားရှိရန်သေချာရန်လိုအပ်သည်။
သတိပြုရမည်မှာ System Clock Presale သည်အတွင်းနာရီ၏ကြိမ်နှုန်းကိုအချိန်နှင့်တပြေးညီပြောင်းလဲမှုများကိုတည်ငြိမ်သောလည်ပတ်မှုသေချာစေရန်ပြုလုပ်နိုင်သည်။ ရည်ညွှန်းကိုးကားပါ စာမျက်နှာ ၃၁ ရှိ“ စနစ်နာရီ Prescaler” အသေးစိတ်အတွက်
ကြိမ်နှုန်းမြင့် PLL နာရီ
Peripheral Timer / Counter64 နှင့် system clock source များအတွက် RC Oscillator တွင်သော့ခတ်ထားသော 1 MHz နာရီနှုန်းသည် RC Oscillator တွင်သော့ခတ်ထားသော internal PLL တစ်ခုရှိသည်။ System clock အရင်းအမြစ်အဖြစ်ရွေးချယ်သောအခါ CKSEL ဖျူးများကိုပရိုဂရမ်ဖြင့် '0001' သို့ပြောင်းခြင်းဖြင့်၎င်းကိုပြသထားသည့်အတိုင်းလေးခုဖြင့်ပိုင်းခြားသည်။ ဇယား ၂-၄.
ဇယား ၆-၄။ မြင့်မားသောကြိမ်နှုန်း PLL နာရီလည်ပတ်မှုမုဒ်များ
CKSEL[3:0] | အမည်ခံကြိမ်နှုန်း |
0001 | 16 MHz |
ဒီ clock source ကိုရွေးချယ်တဲ့အခါ start-up time ကို SUT fuse များကဆုံးဖြတ်တယ် ဇယား ၂-၄.
ဇယား ၆-၅။ ကြိမ်နှုန်းမြင့် PLL နာရီအတွက် စတင်ချိန်များ
SUT[1:0] | Power Down မှ Start-up အချိန် | Power-On Reset မှ နောက်ထပ်နှောင့်နှေးမှု (VCC = 5.0V) | အသုံးပြုမှုကို အကြံပြုထားသည်။ |
00 | 14CK + 1K (1024) CK + 4 ms | 4 ms | BOD ကိုဖွင့်ထားသည် |
ဇယား ၆-၅။ ကြိမ်နှုန်းမြင့် PLL နာရီအတွက် စတင်ချိန်များ
SUT[1:0] | Power Down မှ Start-up အချိန် | Power-On Reset မှ နောက်ထပ်နှောင့်နှေးမှု (VCC = 5.0V) | အသုံးပြုမှုကို အကြံပြုထားသည်။ |
01 | 14CK + 16K (16384) CK + 4 ms | 4 ms | လျှင်မြန်စွာမြင့်တက်နေသောစွမ်းအား |
10 | 14CK + 1K (1024) CK + 64 ms | 4 ms | ဖြည်းဖြည်းချင်းမြင့်တက်ပါဝါ |
11 | 14CK + 16K (16384) CK + 64 ms | 4 ms | ဖြည်းဖြည်းချင်းမြင့်တက်ပါဝါ |
ပြည်တွင်းလှိုချိန်ညှိ
ပုံမှန်အားဖြင့်၊ Internal RC Oscillator သည် ခန့်မှန်းခြေ 8.0 MHz နာရီကို ပေးဆောင်သည်။ voltage နှင့် အပူချိန် ပေါ်မူတည်၍ ဤနာရီကို အသုံးပြုသူမှ အလွန်တိကျစွာ ချိန်ညှိနိုင်ပါသည်။ ကြည့်ပါ။ “ RC RC Oscillator Accu- စံကိုက်ညှိခြင်း။ စာမျက်နှာ 164 အပေါ် "racy နှင့် စာမျက်နှာ 192 တွင် "အတွင်းရှိလှိုမြန်" အသေးစိတ်အတွက် ဒီကိရိယာကို CKDIV8 Fuse ပရိုဂရမ်ဖြင့်တင်ပို့သည်။ ကြည့်ပါ စာမျက်နှာ ၃၁ ရှိ“ စနစ်နာရီ Prescaler” အသေးစိတ်အချက်အလက်များအတွက်
ဤနာရီကိုပြသထားသည့် CKSEL ဖျူးများကိုပရိုဂရမ်ရေးခြင်းဖြင့် system clock အဖြစ်ရွေးချယ်နိုင်သည် စာမျက်နှာပေါ်တွင်စားပွဲတင် 6-6
27။ အကယ်၍ ရွေးချယ်ပါက၎င်းသည်ပြင်ပအစိတ်အပိုင်းများမပါ ၀ င်ပါ။ ပြန်လည်စတင်ချိန်တွင် hardware သည်ကြိုတင်စီစဉ်ထားသည့်စံကိုက်ညှိတန်ဖိုးကို OSCCAL မှတ်ပုံတင်သို့ထည့်ပြီး RC Oscillator ကိုအလိုအလျောက်ချိန်ညှိသည်။ ဒီစံကိုက်ညှိခြင်း၏တိကျမှန်ကန်မှုကိုစက်ရုံစံကိုက်ညှိခြင်းအဖြစ်ပြသသည် စာမျက်နှာ 21 ရက်နေ့တွင်စားပွဲတင် 2-164.
SW မှ OSCCAL မှတ်ပုံတင်ကိုပြောင်းလဲခြင်းအားကြည့်ပါ စာမျက်နှာ ၃၁ ရှိ“ အော်စကာ - တုန်ခါမှုစံကိုက်ညှိမှတ်ပုံတင်”စက်ရုံစံကိုက်ညှိခြင်းကိုအသုံးပြုခြင်းထက်စံကိုက်ညှိတိကျမှန်ကန်မှုကိုရရှိနိုင်သည်။ ဒီစံကိုက်ညှိခြင်း၏တိကျမှန်ကန်မှုကိုအသုံးပြုသူ၏စံကိုက်ညှိခြင်းအဖြစ်ပြသသည် စာမျက်နှာ 21 ရက်နေ့တွင်စားပွဲတင် 2-164.
ဒီလှိုကိုနာရီနာရီအဖြစ်အသုံးပြုသောအခါ Watchdog လှိုသည်စောင့်ကြည့်လေ့လာသူ၏အချိန်ကာလနှင့်ပြန်လည်ချိန်ညှိချိန်များအတွက်အသုံးပြုဆဲဖြစ်သည်။ ကြိုတင်စီစဉ်ထားထားသည့်စံကိုက်ညှိတန်ဖိုးနှင့် ပါတ်သက်၍ အသေးစိတ်အချက်အလက်ကိုအပိုင်းတွင်ကြည့်ပါ "Cali- စာမျက်နှာ 150 ရက်နေ့တွင် bration Bytes ".
အတွင်းလှိုကိုလည်း CKSEL ဖျူးများကို“ 6.4” သို့ရေးခြင်းဖြင့် 0011 MHz နာရီကိုထောက်ပံ့ပေးနိုင်သည်။ ဇယား ၂-၄ အောက်တွင်ဖော်ပြထားသည်။ ဤချိန်ညှိခြင်းကို ATtiny15 Compatibility Mode အဖြစ်ရည်ညွှန်းပြီး ATtiny6.4 ကဲ့သို့ 15 MHz ရှိချိန်ကိုက်နာရီအရင်းအမြစ်ကိုပေးရန်ရည်ရွယ်သည်။ ATtiny15 Compatibility Mode တွင် PLL သည် Timer / Counter6.4 အတွက် ၂၅.၆ MHz အရံနာရီအချက်ပြထုတ်ပေးရန် 25.6 MHz တွင်အလုပ်လုပ်သောအတွင်းလှိုကိုအသုံးပြုသည်။ အတွက် "8-bit နဲ့ Timer / Counter1 စာမျက်နှာ 15 ရက်နေ့တွင် ATtiny95 Mode ကို ") ။ သတိပြုရန်မှာဤလုပ်ငန်းလည်ပတ်မှုတွင် ၆.၄ MHz နာရီအချက်ပြမှုသည် ၄ ချက်ဖြင့်ကွဲပြားပြီး ၁.၆ MHz စနစ်နာရီကိုပေးသည်။
ဇယား ၆-၆။ အတွင်းပိုင်း Calibrated RC Oscillator လည်ပတ်မှုမုဒ်များ
CKSEL[3:0] | အမည်ခံကြိမ်နှုန်း |
0010(၄) | 8.0 MHz |
0011(၄) | 6.4 MHz |
ဒီရွေးစရာကိုဒီကိရိယာနဲ့တင်ပို့လိုက်ပါပြီ
ဤချိန်ညှိမှုသည် ၁.၆ MHz နာရီကြိမ်နှုန်းဖြစ်ပေါ်စေသည့်စနစ်နာရီကိုလေးပိုင်းခွဲခြားထားသော ATtiny15 Compatibility Mode ကိုရွေးချယ်လိမ့်မည်။
ချိန်ညှိထားသော 8 MHz အတွင်းဘက်လှည့်ကိုနာရီအရင်းအမြစ်အဖြစ်ရွေးချယ်သောအခါ start-up အချိန်ကို SUT Fuse များမှဆုံးဖြတ်သည်။ ဇယား ၂-၄ အောက်တွင်။
ဇယား ၆-၇။ Internal Calibrated RC Oscillator Clock အတွက် စတင်ချိန်များ
SUT[1:0] | Power-down မှ Start-up အချိန် | ပြန်လည်သတ်မှတ်ခြင်းမှ ထပ်လောင်းနှောင့်နှေးခြင်း (VCC = 5.0V) | အသုံးပြုမှုကို အကြံပြုထားသည်။ |
00 | ၆ CK | 14CK(၄) | BOD ကိုဖွင့်ထားသည် |
01 | ၆ CK | 14CK + 4 ms | လျှင်မြန်စွာမြင့်တက်နေသောစွမ်းအား |
10(၄) | ၆ CK | 14CK + 64 ms | ဖြည်းဖြည်းချင်းမြင့်တက်ပါဝါ |
11 | လက်ဝယ်ရှိတယ်။ |
၁။ အကယ်၍ RSTDISBL ဖျူးကိုပရိုဂရမ်သွင်းထားပါက၊ ဤပရိုဂရမ်မုဒ်ကို ၀ င်ရောက်နိုင်ရန်သေချာစေရန်ဤစတင်ချိန်ကို 1CK + 14 ms အထိတိုးလိမ့်မည်။
2. ဒီကိရိယာကိုရွေးပါဒီ option နှင့်အတူတင်ပို့နေသည်။
ATtiny15 Compatibility Mode တွင်စတင်ချိန်ကို SUT fuse များဖြင့်ဆုံးဖြတ်သည် ဇယား ၂-၄ အောက်တွင်။
ဇယား ၆-၈။ Internal Calibrated RC Oscillator Clock အတွက် စတင်ချိန်များ (ATtiny6 မုဒ်တွင်)
SUT[1:0] | Power-down မှ Start-up အချိန် | ပြန်လည်သတ်မှတ်ခြင်းမှ ထပ်လောင်းနှောင့်နှေးခြင်း (VCC = 5.0V) | အသုံးပြုမှုကို အကြံပြုထားသည်။ |
00 | ၆ CK | 14CK + 64 ms | |
01 | ၆ CK | 14CK + 64 ms | |
10 | ၆ CK | 14CK + 4 ms | |
11 | ၆ CK | 14CK(၄) |
မှတ်ချက်- RSTDISBL fuse ကို ပရိုဂရမ်ရေးဆွဲထားပါက၊ ပရိုဂရမ်းမင်းမုဒ်သို့ ဝင်ရောက်နိုင်စေရန် သေချာစေရန် ဤစတင်ချိန်ကို 14CK + 4 ms သို့ တိုးမြှင့်မည်ဖြစ်သည်။
အချုပ်အားဖြင့်ဆိုရသော်၊ အပေါ် "ဆိပ်ကမ်း B ကို (PB5: PB0)" စာမျက်နှာ ၈, စာမျက်နှာ ၂၄ ရှိ“ ATtiny15 သဟဇာတဖြစ်မှုစနစ်အတွင်းရှိ PLL”, ontiny8 Mode ရှိ“ 1-bit Timer / Counter15” စာမျက်နှာ ၈, စာမျက်နှာ ၁၄၀ ရှိ“ debugWIRE ၏ကန့်သတ်ချက်များ”, စာမျက်နှာ ၁၅၀ ရှိ“ စံကိုက်ညှိ Bytes” နှင့်စားပွဲပေါ်မှာ "နာရီ Prescaler စာမျက်နှာ 33 ရှိ "ကိုရွေးချယ်ပါ.
Internal 128 kHz လှို
128 kHz အတွင်းပိုင်း Oscillator သည် 128 kHz နာရီကို ပေးစွမ်းသည့် ပါဝါနိမ့် Oscillator ဖြစ်သည်။ ကြိမ်နှုန်းသည် 3V နှင့် 25°C တွင် အမည်ခံဖြစ်သည်။ CKSEL Fuses ကို “0100” သို့ ပရိုဂရမ်ပြုလုပ်ခြင်းဖြင့် ဤနာရီကို စနစ်နာရီအဖြစ် ရွေးချယ်နိုင်ပါသည်။
ဒီနာရီအရင်းအမြစ်ကိုရွေးချယ်သောအခါ start-up အချိန်များကိုပြထားသည့်အတိုင်း SUT Fuse များကဆုံးဖြတ်သည် ဇယား ၂-၄.
ဇယား ၆-၉။ 6 kHz အတွင်းပိုင်း Oscillator အတွက် စတင်ချိန်များ
SUT[1:0] | Power-down မှ Start-up အချိန် | ပြန်လည်စတင်မှအပိုဆောင်းနှောင့်နှေး | အသုံးပြုမှုကို အကြံပြုထားသည်။ |
00 | ၆ CK | 14CK(၄) | BOD ကိုဖွင့်ထားသည် |
01 | ၆ CK | 14CK + 4 ms | လျှင်မြန်စွာမြင့်တက်နေသောစွမ်းအား |
10 | ၆ CK | 14CK + 64 ms | ဖြည်းဖြည်းချင်းမြင့်တက်ပါဝါ |
11 | လက်ဝယ်ရှိတယ်။ |
မှတ်ချက်- RSTDISBL fuse ကို ပရိုဂရမ်ရေးဆွဲထားပါက၊ ပရိုဂရမ်းမင်းမုဒ်သို့ ဝင်ရောက်နိုင်စေရန် သေချာစေရန် ဤစတင်ချိန်ကို 14CK + 4 ms သို့ တိုးမြှင့်မည်ဖြစ်သည်။
အနိမ့်ကြိမ်နှုန်း Crystal လှို
32.768 kHz နာရီပုံဆောင်ခဲကိုစက်ပစ္စည်းအတွက်နာရီအရင်းအမြစ်အဖြစ်အသုံးပြုရန်အတွက် CKSEL ဖျူးများကို '0110' အဖြစ်သတ်မှတ်ခြင်းဖြင့်အနိမ့်ကြိမ်နှုန်း Crystal လှိုကိုရွေးချယ်ရမည်။ မှာပြထားတဲ့အတိုင်းကြည်လင်ချိတ်ဆက်ရပါမည် ပုံ ၂-၁။ 32.768 kHz crysal အတွက်သင့်လျော်သော load capacitance ကိုရှာဖွေရန်ထုတ်လုပ်သူ၏အချက်အလက်ဇယားကို ကျေးဇူးပြု၍ စုံစမ်းပါ။
ဒီလှိုရွေးချယ်မှုကိုရွေးချယ်သောအခါ start-up အချိန်များကိုပြထားသည့်အတိုင်း SUT ဖျူးများကဆုံးဖြတ်သည် ဇယား ၂-၄.
ဇယား ၆-၁၀။ Low Frequency Crystal Oscillator Clock ရွေးချယ်မှုအတွက် စတင်ချိန်များ
SUT[1:0] | Power Down မှ Start-up အချိန် | ပြန်လည်သတ်မှတ်ခြင်းမှ ထပ်လောင်းနှောင့်နှေးခြင်း (VCC = 5.0V) | အသုံးပြုမှုကို အကြံပြုထားသည်။ |
00 | 1k (1024) CK(၄) | 4 ms | အစာရှောင်ခြင်းမြင့်တက်ပါဝါသို့မဟုတ် BOD enabled |
01 | 1k (1024) CK(၄) | 64 ms | ဖြည်းဖြည်းချင်းမြင့်တက်ပါဝါ |
10 | 32k (32768) CK | 64 ms | start-up မှာတည်ငြိမ်ကြိမ်နှုန်း |
11 | လက်ဝယ်ရှိတယ်။ |
မှတ်ချက်- စတင်မှုတွင် ကြိမ်နှုန်းတည်ငြိမ်မှုသည် အရေးမကြီးပါက ဤရွေးချယ်စရာများကို အသုံးပြုသင့်သည်။
အနိမ့်ကြိမ်နှုန်း Crystal လှိုကြည့်ရှုအတွင်းပိုင်းဝန် capacitance ပေးပါသည် ဇယား ၂-၄ တစ်ခုချင်းစီကို TOSC pin ကိုမှာ။
ဇယား ၆-၁၁။ Low-Frequency Crystal Oscillator ၏ စွမ်းဆောင်ရည်
ကိရိယာ | 32 kHz Osc ။ အမျိုးအစား | ဦး ထုပ် (Xtal1 / Tosc1) | ဦး ထုပ် (Xtal2 / Tosc2) |
ATtiny25 / 45/85 | System Osc ။ | 16 pF | 6 pF |
Crystal လှို / ကြွေဆိုင်ရာပဲ့တင်ရိုက်ခတ်မှု
XTAL1 နှင့် XTAL2 သည် input နှင့် output အသီးသီးဖြစ်ပြီး ပြောင်းပြန်လှန်ခြင်းတစ်ခုဖြစ်သည်။ ampပုံတွင်ပြထားသည့်အတိုင်း On-chip Oscillator အဖြစ်သုံးရန်စီစဉ်နိုင်သည့် lifier ပုံ ၂-၁။ တစ် ဦး လင်းကျောက် crystal သို့မဟုတ်ကြွေပဲ့တင်ရိုက်ခတ်မှုဖြစ်စေသုံးနိုင်ပါသည်။
C1 နှင့် C2 သည် crystals နှင့် resonator နှစ်ခုလုံးအတွက် အမြဲတန်းတူဖြစ်သင့်သည်။ capacitors များ၏ အကောင်းဆုံးတန်ဖိုးသည် အသုံးပြုနေသည့် crystal သို့မဟုတ် resonator၊ stray capacitance ပမာဏနှင့် ပတ်ဝန်းကျင်၏ လျှပ်စစ်သံလိုက်သံလိုက်သံအပေါ် မူတည်သည်။ crystals များနှင့်အသုံးပြုရန်အတွက် capacitors ရွေးချယ်ခြင်းအတွက် ကနဦးလမ်းညွှန်ချက်အချို့ကို ပေးထားသည်။ ဇယား ၂-၄ အောက်တွင်ဖော်ပြထားသည်။ ထုတ်လုပ်သူမှပေးသော capacitor တန်ဖိုးများကိုကြွေထည်ပဲ့တင်ရိုက်စက်များတွင်အသုံးပြုသင့်သည်။
ဇယား ၆-၁၂။ Crystal Oscillator လည်ပတ်မှုမုဒ်များ
CKSEL[3:1] | ကြိမ်နှုန်း (MHz) | Crystals နှင့်အသုံးပြုရန် Capacitors C1 နှင့် C2 အတွက်အကြံပြုထားသည့်အကွာအဝေး (pF) |
100(၄) | 0.4 – 0.9 | – |
101 | 0.9 – 3.0 | 12 – 22 |
110 | 3.0 – 8.0 | 12 – 22 |
111 | ၁၁ – | 12 – 22 |
မှတ်ချက်များ- ဤရွေးချယ်မှုကို ကြွေထည်သံပြန်ကြားစက်များဖြင့်သာ crystals များဖြင့် အသုံးမပြုသင့်ပါ။
လှိုသည်မတူညီသောသုံးမျိုးဖြင့်လည်ပတ်နိုင်သည်။ တစ်ခုစီသည်သတ်မှတ်ထားသောကြိမ်နှုန်းအတွက်အကောင်းဆုံးဖြစ်သည်။ ပုံမှာပြထားတဲ့အတိုင်း operating mode ကိုဖျူး CKSEL [3: 1] ကရွေးချယ်သည် ဇယား ၂-၄.
CKSEL0 ဖျူးသည် SUT [1: 0] ဖျူးများနှင့်အတူပြသထားသော start-up ကြိမ်များကိုရွေးချယ်သည် ဇယား ၂-၄.
ဇယား ၆-၁၃။ Crystal Oscillator Clock ရွေးချယ်မှုအတွက် စတင်ချိန်များ
CKSEL0 | SUT[1:0] | Power-down မှ Start-up အချိန် | ပြန်လည်စတင်မှအပိုဆောင်းနှောင့်နှေး | အသုံးပြုမှုကို အကြံပြုထားသည်။ |
0 | 00 | ၆ CK(၄) | 14CK + 4 ms | ကြွေထည်ဆိုင်ရာပဲ့တင်ရိုက်ခတ်မှု၊ မြန်ဆန်သောမြင့်တက်မှု |
0 | 01 | ၆ CK(၄) | 14CK + 64 ms | ကြွေထည်ဆိုင်ရာပဲ့တင်ရိုက်ခတ်မှု, တဖြည်းဖြည်းမြင့်တက်ပါဝါ |
0 | 10 | 1k (1024) CK(၄) | 14CK | ကြွေပဲ့တင်ရိုက်စက်, BOD enabled |
0 | 11 | 1k (1024) CK(၄) | 14CK + 4 ms | ကြွေထည်ဆိုင်ရာပဲ့တင်ရိုက်ခတ်မှု၊ မြန်ဆန်သောမြင့်တက်မှု |
1 | 00 | 1k (1024) CK(၄) | 14CK + 64 ms | ကြွေထည်ဆိုင်ရာပဲ့တင်ရိုက်ခတ်မှု, တဖြည်းဖြည်းမြင့်တက်ပါဝါ |
1 | 01 | 16k (16384) CK | 14CK | Crystal လှို, BOD enabled |
1 | 10 | 16k (16384) CK | 14CK + 4 ms | Crystal လှို, မြန်ဆန်မြင့်တက်ပါဝါ |
1 | 11 | 16k (16384) CK | 14CK + 64 ms | Crystal လှို, တဖြည်းဖြည်းပါဝါမြင့်တက် |
မှတ်စုများ
ဤရွေးချယ်မှုများကိုစက်၏အမြင့်ဆုံးကြိမ်နှုန်းနှင့်မနီးမဝေးတွင်သာအသုံးပြုသင့်သည်၊ ၎င်းသည်စတင်ရန်အတွက်ကြိမ်နှုန်းတည်ငြိမ်မှုသည်အသုံးချခြင်းအတွက်သာမဟုတ်ပါ။ ဤရွေးချယ်မှုများသည် crystals များအတွက်မသင့်တော်ပါ။
ဤရွေးချယ်မှုများသည်ကြွေထည်မြေထည်ပစ္စည်းများတွင်အသုံးပြုရန်ရည်ရွယ်ပြီး start-up တွင်အကြိမ်ရေတည်ငြိမ်မှုကိုသေချာစေသည်။ ၄ င်းတို့ကို crystals များနှင့်လည်းသုံးနိုင်ပြီး device ၏အမြင့်ဆုံးကြိမ်နှုန်းနှင့်မနီးစပ်ပါက start-up တွင်အကြိမ်ရေတည်ငြိမ်မှုသည်အသုံးမပြုနိုင်ပါ။
ပုံမှန်နာရီအရင်းအမြစ်
စက်ပစ္စည်းကို CKSEL = “0010”၊ SUT = “10” နှင့် CKDIV8 ပရိုဂရမ်ဖြင့် တင်ပို့ထားသည်။ မူလနာရီရင်းမြစ်ဆက်တင်သည် 8 MHz တွင် အကြာဆုံးစတင်သည့်အချိန်နှင့် ကနဦးစနစ်နာရီကို 8 ထက်သာလွန်စေသည့် Internal RC Oscillator သည် 1.0 MHz စနစ်နာရီဖြစ်လာသည်။ ဤမူလဆက်တင်သည် အသုံးပြုသူအားလုံးသည် In-System သို့မဟုတ် High-volt ကို အသုံးပြု၍ ၎င်းတို့၏အလိုရှိသော နာရီရင်းမြစ်ဆက်တင်ကို ပြုလုပ်နိုင်စေရန် သေချာစေသည်tage ပရိုဂရမ်မာ။
System ကိုနာရီ Prescaler
ATtiny25 / 45/85 system clock ကိုချိန်ညှိခြင်းအားဖြင့်ပိုင်းခြားနိုင်သည် စာမျက်နှာ ၃၂ ရှိ“ CLKPR - Clock Prescale Register”. လုပ်ဆောင်ခြင်းပါဝါလိုအပ်ချက်နည်းပါးသောအခါ ပါဝါသုံးစွဲမှုကို လျှော့ချရန် ဤအင်္ဂါရပ်ကို အသုံးပြုနိုင်သည်။ ၎င်းကို နာရီရင်းမြစ်ရွေးချယ်စရာများအားလုံးတွင် အသုံးပြုနိုင်ပြီး၊ ၎င်းသည် CPU ၏ နာရီကြိမ်နှုန်းနှင့် ထပ်တူကျသော အရံအတားများအားလုံးအပေါ် သက်ရောက်မှုရှိမည်ဖြစ်သည်။ clkI/O၊ clkADC၊ clkCPU နှင့် clkFLASH ကို တွင်ပြထားသည့်အတိုင်း အချက်တစ်ခုဖြင့် ပိုင်းခြားထားသည်။ စာမျက်နှာ 6 ရက်နေ့တွင်စားပွဲတင် 15-33.
အချိန်ပြောင်းခြင်း။
Prescaler ဆက်တင်များအကြား switching သောအခါ၊ System Clock Prescaler သည် clock system တွင် glitches မဖြစ်ပေါ်စေရန်နှင့်ကြားခံအကြိမ်ရေသည်ယခင် setting နှင့်သက်ဆိုင်သော clock frequency နှင့် setting အသစ်နှင့်သက်ဆိုင်သည့် clock frequency တို့ထက်မမြင့်ကြောင်းသေချာစေသည်။
prescaler ကိုအကောင်အထည်ဖော်သည့်ဂယက်ထနေသောကောင်တာသည် CPU ၏ clock frequency ထက်ပိုမိုမြန်ဆန်သော individed clock ၏ကြိမ်နှုန်းဖြင့်အလုပ်လုပ်သည်။ ထို့ကြောင့်၊ ၎င်းသည်ဖတ်နိုင်သော်လည်း၎င်းသည်နာရီခွဲတစ်ခုမှတစ်ခုသို့ပြောင်းရန်ကြာသောအချိန်အတိအကျကိုအတိအကျခန့်မှန်း။ မရနိုင်ပါက၎င်းကိုကြိုတင်တွက်ချက်သည့်အခြေအနေကိုဆုံးဖြတ်ရန်မဖြစ်နိုင်ပါ။
CLKPS တန်ဖိုးများကိုရေးသောအချိန်ကတည်းကနာရီအသစ် Frequency မလှုပ်ရှားမီ T1 + T2 နှင့် T1 + 2 * T2 အကြားကြာပါသည်။ ဒီကြားကာလ၌, 2 တက်ကြွနာရီအနားထုတ်လုပ်နေကြသည်။ ဤတွင် T1 သည်ယခင် clock period ဖြစ်ပြီး T2 သည် prescaler setting အသစ်နှင့်သက်ဆိုင်သောအချိန်ကာလဖြစ်သည်။
နာရီ Output Buffer
စက်သည်နာရီကို CLKO pin (XTAL2 pin မသုံးပါက) တွင်ထုတ်နိုင်သည်။ output ကို enable လုပ်ဖို့, CKOUT ဖျူးပရိုဂရမ်ခံရဖို့ရှိပါတယ်။ system clock ရှိအခြား circuit များအားမောင်းနှင်ရန် chip clock ကိုအသုံးပြုသောအခါဤ mode သည်သင့်လျော်ပါသည်။ ပြန်လည်သတ်မှတ်ချိန်အတွင်းနာရီသည်ထုတ်လွှတ်လိမ့်မည်မဟုတ်ပါနှင့်ဖျူးပရိုဂရမ်ပြုလုပ်သောအခါ I / O pin ၏ပုံမှန်လည်ပတ်မှုကိုဖျက်ပစ်လိမ့်မည်။ Internal RC Oscillator, WDT Oscillator, PLL နှင့်ပြင်ပနာရီ (CLKI) ကို CLKO တွင်ထုတ်သောအခါရွေးနိုင်သည်။ Crystal လှို (XTAL1, XTAL2) CLKO အပေါ်နာရီ output ကိုများအတွက်အသုံးပြုမရနိုင်ပါ။ အကယ်၍ System Clock Prescaler ကိုအသုံးပြုပါက၎င်းသည်ခွဲထားသော system clock ဖြစ်သည်။
ဖော်ပြချက်မှတ်ပုံတင်ရန်
အော်စကာ - လှိုစံကိုက်ညှိမှတ်ပုံတင်
နည်းနည်း | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
က0x31 | CAL7 | CAL6 | CAL5 | CAL4 | CAL3 | CAL2 | CAL1 | CAL0 | အော်စကာ |
ဖတ်/ရေး | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
-bits 7: 0 - Cal [7: 0]: လှိုစံကိုက်ညှိတန်ဖိုး
oscillator စံကိုက်ညှိမှတ်ပုံတင်ကို oscillator ကြိမ်နှုန်းမှဖြစ်စဉ်များပြောင်းလဲမှုများကိုဖယ်ရှားရန်အတွက် Calibrated Internal RC Oscillator ကိုချုံ့ရန်အသုံးပြုသည်။ ကြိုတင်စီစဉ်ထားသည့်စံကိုက်ညှိတန်ဖိုးကို Chip reset လုပ်စဉ်အတွင်းဤမှတ်ပုံတင်သို့အလိုအလျောက်ရေးသားပြီးစက်ရုံမှသတ်မှတ်ထားသောအတိုင်းကြိမ်နှုန်းကိုချိန်ညှိနိုင်သည် စာမျက်နှာ 21 ရက်နေ့တွင်စားပွဲတင် 2-164။ oscillator ကြိမ်နှုန်းကိုပြောင်းလဲရန် application software သည်ဤမှတ်ပုံတင်ကိုရေးနိုင်သည်။ အတွက်သတ်မှတ်ထားသောအဖြစ်လှိုကြိမ်နှုန်းမှချိန်ညှိနိုင်ပါတယ် စာမျက်နှာ 21 ရက်နေ့တွင်စားပွဲတင် 2-164။ ကြောင်းအကွာအဝေးအပြင်ဘက်တွင်စံကိုက်ညှိအာမခံမပေးပါ။
သတိပြုရန်မှာဤ oscillator ကို EEPROM နှင့် Flash write access များအချိန်တွင်အသုံးပြုသည်၊ ဤရေးသည့်အချိန်သည်အကျိုးသက်ရောက်လိမ့်မည်။ အကယ်၍ EEPROM သို့မဟုတ် Flash ကိုရေးသားခဲ့လျှင်၊ ၈.၈ MHz ထက် ပို၍ မချိန်ညှိပါနှင့်။ ဒီလိုမှမဟုတ်ရင် EEPROM (သို့) Flash write ပျက်ကွက်နိုင်တယ်။
အဆိုပါ CAL7 bit နဲ့လှိုများအတွက်စစ်ဆင်ရေး၏အကွာအဝေးဆုံးဖြတ်သည်။ ဒီ bit ကို 0 ထားခြင်းကအနိမ့်ဆုံးကြိမ်နှုန်းကိုပေးတယ်၊ တနည်းအားဖြင့် OSCCAL = 1x0F ၏ setting သည် OSCCAL = 7x0 ထက်ပိုမိုမြင့်မားသောကြိမ်နှုန်းကိုပေးသည်။
CAL [6: 0] bits သည်ကြိမ်နှုန်းကိုရွေးချယ်ထားသောအကွာအဝေးအတွင်းညှိရန်အသုံးပြုသည်။ 0x00 သတ်မှတ်ချက်သည်၎င်းအကွာအဝေးအတွင်းအနိမ့်ဆုံးကြိမ်နှုန်းနှင့် 0x7F သတ်မှတ်ချက်သည်အကွာအဝေးအတွင်းအမြင့်ဆုံးကြိမ်နှုန်းကိုပေးသည်။
MCU ၏တည်ငြိမ်သောလည်ပတ်မှုသေချာစေရန်အတွက်စံကိုက်ညှိတန်ဖိုးကိုသေးငယ်စွာပြောင်းလဲသင့်သည်။ ကြိမ်နှုန်းတစ်ခု၏ ၂ ကြိမ်ထက် ပို၍ ပြောင်းလဲမှုနှုန်းသည်သံသရာတစ်ခုမှနောက်တစ်ခုသို့ပြောင်းလဲခြင်းသည်ခန့်မှန်းရခက်သည့်အပြုအမူကိုဖြစ်ပေါ်စေသည်။ OSCCAL ၏ပြောင်းလဲမှုများသည်စံကိုက်ညှိတစ်ခုစီအတွက် ၀xx2 ထက်မပိုစေသင့်ပါ။ နာရီအကြိမ်ရေပြောင်းလဲမှုအတွင်း MCU ကို Reset တွင်ထားရှိရန်သေချာရန်လိုအပ်သည်
ဇယား ၆-၁၄။ အတွင်းပိုင်း RC Oscillator Frequency Range
အော်စကာတန်ဖိုး | Nominal Frequency ကိုလေးစားခြင်းဖြင့်ပုံမှန်အနည်းဆုံးကြိမ်နှုန်း | Nominal Frequency ကိုလေးစားခြင်းနှင့်အတူပုံမှန်အမြင့်ဆုံးကြိမ်နှုန်း |
က0x00 | 50% | 100% |
0x3F | 75% | 150% |
0x7F | 100% | 200% |
CLKPR - နာရီကြိုတင်စာရင်းသွင်းခြင်းမှတ်ပုံတင်ခြင်း
နည်းနည်း | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
က0x26 | CLKPCE | – | – | – | CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | CLKPR |
ဖတ်/ရေး | R/W | R | R | R | R/W | R/W | R/W | R/W |
ကန ဦး တန်ဖိုး 0 0 0 0 Bit ဖော်ပြချက်ကိုကြည့်ပါ
Bit 7 - CLKPCE: Clock Prescaler ပြောင်းလဲခြင်းကို Enable လုပ်ပါ
CLKPS bits ၏ပြောင်းလဲမှုကို enable လုပ်ရန် logic တစ်ခုအား CLKPCE bit ကိုရေးသားရမည်။ CLKPCE နည်းနည်းကိုတစ်ပြိုင်နက်တည်းသုညသို့ရေးသောအခါ CLKPCE bit သည် update လုပ်သည်။ CLKPCE သည် hardware သို့မဟုတ် CLKPS-bits ရေးသားပြီးသည့်နောက် hardware လေးခုဖြင့်ရှင်းလင်းသည်။ ဤအချိန်ကုန်အချိန်ကာလအတွင်း CLKPCE bit ကိုပြန်လည်ရေးသားခြင်းသည်အချိန်ကာလကိုတိုးချဲ့ခြင်းမဟုတ်သလို CLKPCE bit ကိုရှင်းလင်းခြင်းလည်းမရှိပါ။
-bits 6: 4 - Res: Reserved-bits
အဆိုပါ bits များသည် ATtiny25 / 45/85 တွင် bits လုပ်ထားပြီးအမြဲတမ်းသုညအဖြစ်ဖတ်မည်။
bits 3: 0 - CLKPS [3: 0]: Clock Prescaler အပိုင်း ၃ - ၀ ကိုရွေးချယ်ပါ
ဤရွေ့ကား bits သည်ရွေးချယ်ထားသည့်နာရီအရင်းအမြစ်နှင့်အတွင်းပိုင်းစနစ်နာရီအကြားခွဲခြားသည့်အချက်ကိုသတ်မှတ်သည်။ လျှောက်လွှာလိုအပ်ချက်များနှင့်ကိုက်ညီရန်အချိန်အပိုင်းအခြားအမျိုးမျိုးကွဲပြားစေရန်ဤအပိုင်းများကိုအချိန်ဇယားရေးနိုင်သည်။ divider အချက်အလက်များအသုံးပြုသောအခါ divider သည် MCU သို့ master clock input ကိုခွဲဝေသောအခါ synchronous peripherals အားလုံး၏အမြန်နှုန်းကိုလျှော့ချပေးသည်။ အဆိုပါဌာနခွဲအချက်များအတွက်ပေးအပ်ထားတယ် ဇယား ၂-၄.
နာရီအကြိမ်ရေမရည်ရွယ်ဘဲပြောင်းလဲမှုများကိုရှောင်ရှားရန် CLKPS-bits ကိုပြောင်းလဲရန်အထူးရေးသားနည်းကိုလိုက်နာရမည်။
Clock Prescaler Change Enable (CLKPCE) bit နှင့်တစ်ခုချင်းစီသို့ CLKPR ရှိအခြား bits အားလုံးကိုသုညသို့ရေးပါ။
လေးသံသရာအတွင်း, CLKPCE သုညရေးသားနေစဉ်, CLKPS မှလိုချင်သောတန်ဖိုးကိုရေးပါ။
ရေးသည့်လုပ်ထုံးလုပ်နည်းပြတ်တောက်ခြင်းမရှိစေရန်သေချာစေရန် prescaler ချိန်ညှိခြင်းကိုပြောင်းလဲသောအခါကြားဖြတ်ခြင်းကိုပိတ်ထားရမည်။
CKDIV8 Fuse သည် CLKPS ဘစ်များ၏ ကနဦးတန်ဖိုးကို ဆုံးဖြတ်သည်။ CKDIV8 ကို အစီအစဉ်မချပါက၊ CLKPS ဘစ်များကို “0000” သို့ ပြန်လည်သတ်မှတ်ပါမည်။ CKDIV8 ကို ပရိုဂရမ်လုပ်ထားလျှင် CLKPS ဘစ်များကို "0011" သို့ ပြန်လည်သတ်မှတ်ပြီး စတင်ချိန်တွင် အပိုင်းခွဲရှစ်ခုကို ပေးသည်။ ရွေးချယ်ထားသော နာရီရင်းမြစ်သည် လက်ရှိလည်ပတ်မှုအခြေအနေတွင် စက်၏အမြင့်ဆုံးအကြိမ်နှုန်းထက် ကြိမ်နှုန်းပိုမိုမြင့်မားပါက ဤအင်္ဂါရပ်ကို အသုံးပြုသင့်သည်။ CKDIV8 Fuse ဆက်တင်နှင့်မသက်ဆိုင်ဘဲ မည်သည့်တန်ဖိုးကို CLKPS ဘစ်များသို့ စာရေးနိုင်သည်ကို သတိပြုပါ။ အပလီကေးရှင်းဆော့ဖ်ဝဲသည် လုံလောက်သော ပိုင်းခြားမှုအချက်တစ်ခုဖြစ်ကြောင်း သေချာစေရမည်။
ရွေးချယ်ထားသည့်နာရီအရင်းအမြစ်သည်လက်ရှိလည်ပတ်မှုအခြေအနေများတွင်စက်၏အမြင့်ဆုံးကြိမ်နှုန်းထက်ပိုမိုမြင့်မားသောကြိမ်နှုန်းရှိပါကရွေးချယ်သည်။ ဒီကိရိယာကို CKDIV8 Fuse ပရိုဂရမ်ဖြင့်တင်ပို့သည်။
ဇယား ၆-၁၅။ နာရီ Prescaler ကို ရွေးပါ။
CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | နာရီဌာနခွဲအချက် |
0 | 0 | 0 | 0 | 1 |
0 | 0 | 0 | 1 | 2 |
0 | 0 | 1 | 0 | 4 |
0 | 0 | 1 | 1 | 8 |
0 | 1 | 0 | 0 | 16 |
0 | 1 | 0 | 1 | 32 |
0 | 1 | 1 | 0 | 64 |
0 | 1 | 1 | 1 | 128 |
1 | 0 | 0 | 0 | 256 |
1 | 0 | 0 | 1 | လက်ဝယ်ရှိတယ်။ |
1 | 0 | 1 | 0 | လက်ဝယ်ရှိတယ်။ |
1 | 0 | 1 | 1 | လက်ဝယ်ရှိတယ်။ |
1 | 1 | 0 | 0 | လက်ဝယ်ရှိတယ်။ |
1 | 1 | 0 | 1 | လက်ဝယ်ရှိတယ်။ |
1 | 1 | 1 | 0 | လက်ဝယ်ရှိတယ်။ |
1 | 1 | 1 | 1 | လက်ဝယ်ရှိတယ်။ |
မှတ်ချက်- ကြိုတင်စကေးကိရိယာကို ATtiny15 လိုက်ဖက်ညီသောမုဒ်တွင် ပိတ်ထားပြီး CLKPR သို့ စာမရေးဘဲ၊ CKDIV8 ဖျူးစ်ကို ပရိုဂရမ်ရေးဆွဲခြင်းသည် စနစ်နာရီ (အမြဲတမ်း 1.6 MHz) ပေါ်တွင် မည်သည့်အကျိုးသက်ရောက်မှုမှ မရှိပါ။
ပါဝါစီမံခန့်ခွဲမှုနှင့်အိပ်စက်ခြင်းနည်းလမ်းများ
စွမ်းဆောင်ရည်မြင့်ခြင်းနှင့်စက်မှုလုပ်ငန်း ဦး ဆောင်သောကုဒ်ထိရောက်မှုသည် AVR microcontroller များကိုစွမ်းအားနည်းသော application များအတွက်အကောင်းဆုံးရွေးချယ်မှုဖြစ်စေသည်။ ထို့အပြင် sleep mode များသည် application ကို MCU ရှိအသုံးမပြုသော modules များကိုပိတ်ပစ်စေပြီး power ချွေတာစေသည်။ AVR သည်အိပ်စက်ခြင်းပုံစံအမျိုးမျိုးကိုထောက်ပံ့ပေးသည်။ အသုံးပြုသူသည်စွမ်းအင်သုံးစွဲမှုကိုလျှောက်လွှာ၏လိုအပ်ချက်များနှင့်လိုက်လျောညီထွေဖြစ်စေနိုင်သည်။
အိပ်စက်ခြင်းနည်းလမ်းများ
စာမျက်နှာ 6 အပေါ် 1-23 ပုံ ကွဲပြားခြားနားသောနာရီစနစ်များနှင့်၎င်းတို့ဖြန့်ဝေခြင်းကို ATtiny25 / 45/85 တွင်ဖော်ပြထားသည်။ သင့်လျော်သောအိပ်စက်ခြင်းစနစ်ကိုရွေးချယ်ရာတွင်ဤကိန်းဂဏန်းသည်အထောက်အကူပြုသည်။ ဇယား ၂-၄ ကွဲပြားခြားနားသောအိပ်စက်ခြင်းစနစ်များနှင့်၎င်းတို့၏နိုးထရင်းမြစ်များပြသသည်။
ဇယား ၇-၁။ ကွဲပြားခြားနားသော အိပ်စက်မှုမုဒ်များတွင် Active Clock Domains နှင့် Wake-up Sources
Active နာရီဒိုမိန်းများ | Oscillator များ | နိုးထသတင်းရင်းမြစ် | ||||||||||
အိပ်မုဒ် | clkCPU | clkFLASH | clkIO | clkADC | clkPCK | အဓိကနာရီရင်းမြစ်ဖွင့်ထားသည် | INT0 နှင့် Pin ပြောင်းလဲမှု | SPM / EEPROM
အဆင်သင့် |
USI စတင်အခြေအနေ |
ADC | အခြား I/O | ကင်းစောင့် နှောက်ယှက်သည်။ |
ဘာမှမလုပ်ဘူး။ | X | X | X | X | X | X | X | X | X | X | ||
ADC ဆူညံသံလျှော့ချခြင်း | X | X | X(၄) | X | X | X | X | |||||
ပါဝါချပါ | X(၄) | X | X |
မှတ်ချက်- INT0 အတွက်၊ အဆင့်နှောင့်ယှက်ခြင်းသာ။
အိပ်စက်ခြင်းသုံးမျိုးထဲမှတစ်ခုခုကိုဝင်ရောက်ရန် MCUCR ရှိ SE bit ကို logic one တစ်ခုသို့ရေးပြီး SLEEP ညွှန်ကြားချက်ကိုလုပ်ဆောင်ရမည်။ MCUCR Register တွင် SM [1: 0] bits သည် SLEEP ညွှန်ကြားချက်ဖြင့်မည်သည့်အိပ်စက်ခြင်းစနစ် (Idle, ADC Noise Reduction or Power-down) ကိုရွေးချယ်သည်။ ကြည့်ပါ ဇယား ၂-၄ အကျဉ်းချုပ်သည်။
MCU သည် အိပ်စက်ခြင်းမုဒ်တွင် ရှိနေစဉ်တွင် ဖွင့်ထားသော အနှောင့်အယှက်တစ်ခု ဖြစ်ပေါ်ပါက၊ MCU သည် နိုးလာပါသည်။ ထို့နောက် MCU သည် စတင်သည့်အချိန်အပြင် လေးကြိမ်တိုင်တိုင် ရပ်နားထားကာ နှောင့်ယှက်သည့်လုပ်ရိုးလုပ်စဉ်ကို လုပ်ဆောင်ကာ SLEEP ပြီးနောက် ညွှန်ကြားချက်မှ လုပ်ဆောင်မှုကို ပြန်လည်စတင်သည်။ မှတ်ပုံတင်ခြင်း၏ အကြောင်းအရာများ File နှင့် SRAM သည်စက်မှနိုးသောအခါမပြောင်းလဲပါ။ အိပ်စက်ခြင်းပုံစံတွင်ပြန်လည်သတ်မှတ်မှုဖြစ်ပေါ်ပါက MCU သည်နိုးလာပြီး Reset Vector မှလုပ်ဆောင်သည်။
မှတ်ချက်- နှိုးဆွရန်အတွက် အစပျိုးထားသော ကြားဖြတ်အဆင့်ကို အသုံးပြုပါက MCU ကိုနှိုးရန် (နှင့် MCU သည် ကြားဖြတ်ဝန်ဆောင်မှုလုပ်ရိုးလုပ်စဉ်သို့ ဝင်ရောက်ရန်အတွက်) ပြောင်းလဲထားသောအဆင့်ကို အချိန်အတိုင်းအတာတစ်ခုအထိ ထိန်းသိမ်းထားရမည်ဖြစ်သည်။ ကြည့်ပါ။ စာမျက်နှာ ၄၉ မှ“ ပြင်ပမှကြားဖြတ်ခြင်း” အသေးစိတ်အတွက်
ပျင်းရိ mode
SM[1:0] ဘစ်များကို 00 သို့ရေးသောအခါ၊ SLEEP ညွှန်ကြားချက်သည် MCU အား Idle မုဒ်သို့ ဝင်ရောက်စေပြီး CPU ကို ရပ်တန့်စေသော်လည်း Analog Comparator၊ ADC၊ USI၊ Timer/Counter၊ Watchdog နှင့် ကြားဖြတ်စနစ်အား ဆက်လက်လုပ်ဆောင်ရန် ခွင့်ပြုသည်။ စားနေသည်။ ဤအိပ်စက်ခြင်းမုဒ်သည် အခြေခံအားဖြင့် clkCPU နှင့် clkFLASH တို့ကို ရပ်တန့်စေပြီး အခြားနာရီများကိုလည်ပတ်ခွင့်ပေးသည်။
Idle mode သည် MCU အားပြင်ပအစပျိုးမှုပြတ်တောက်မှုများနှင့် Timer Overflow ကဲ့သို့သောအတွင်းပိုင်းများမှနိုးထစေသည်။ အကယ်၍ Analog Comparator မှအနှိုးမှမလိုအပ်ပါက၎င်း Analog Comparator ကို ACD bit တွင်ထားခြင်းအားဖြင့်နှိမ့်ချနိုင်သည်။ စာမျက်နှာ ၁၂၀ ရှိ“ ACSR - Analog နှိုင်းယှဉ်ထိန်းချုပ်မှုနှင့်အခြေအနေမှတ်ပုံတင်ခြင်း”။ ဒါက Idle mode မှာပါဝါစားသုံးမှုကိုလျှော့ချလိမ့်မယ် အကယ်၍ ADC ကို enable လုပ်ထားပါကဤ mode ကို ၀ င်သောအခါပြောင်းလဲခြင်းသည်အလိုအလျောက်စတင်သည်။
ADC ဆူညံသံလျှော့ချနည်း
SM[1:0] bits များကို 01 သို့ရေးသောအခါ၊ SLEEP ညွှန်ကြားချက်သည် MCU အား ADC Noise Reduction mode သို့ဝင်ရောက်စေပြီး CPU ကိုရပ်တန့်စေသော်လည်း ADC၊ ပြင်ပအနှောင့်အယှက်များနှင့် Watchdog ကို ဆက်လက်လည်ပတ်စေသည် (ဖွင့်ထားလျှင်)။ ဤအိပ်စက်ခြင်းမုဒ်သည် အခြားနာရီများကိုလည်ပတ်ခွင့်ပေးနေစဉ် clkI/O၊ clkCPU နှင့် clkFLASH တို့ကို ရပ်တန့်စေသည်။
၎င်းသည် ADC အတွက်ဆူညံသံပတ် ၀ န်းကျင်ကိုပိုမိုကောင်းမွန်စေပြီးပိုမိုမြင့်မားသော resolution တိုင်းတာမှုများပြုလုပ်နိုင်သည်။ အကယ်၍ ADC ကို enable လုပ်ထားပါကဤ mode ကို ၀ င်သောအခါပြောင်းလဲခြင်းသည်အလိုအလျောက်စတင်သည်။ အပြင် ADC ကူးပြောင်းခြင်းပြီးပြည့်စုံသော interrupt အပြင် Exet Reset၊ Watchdog Reset၊ Brown-out Reset၊ SPM / EEPROM အဆင်သင့်ဖြစ်သော interrupt၊ INT0 ပေါ်ရှိ external level တစ်ခုသို့မဟုတ် pin change change သည်သာ MCU ကို ADC Noise Reduction မှနိုးထစေနိုင်သည်။ mode ကို။
Power-down Mode ပါ
SM [1: 0] -bits ၁၀ ခုကိုရေးသောအခါ SLEEP ညွှန်ကြားချက်သည် MCU အား Power-down mode ထဲသို့ဝင်စေသည်။ ဒီ mode မှာ, Oscillator, ရပ်တန့်နေသည်, ပြင်ပ interrupts, အ USI စတင်အခြေအနေရှာဖွေတွေ့ရှိခြင်းနှင့်စောင့်ကြည့်ရေးအဖွဲ့ (enabled လျှင်) ဆက်လက်အလုပ်လုပ်နေစဉ်။ External Reset၊ Watchdog Reset၊ Brown-out Reset၊ USI start condition interrupt၊ INT10 အပေါ် external level interrupt သို့မဟုတ် pin change interrupt တို့သည် MCU ကိုနှိုးနိုင်သည်။ ဤ sleep mode သည်ထုတ်လုပ်လိုက်သောနာရီများအားလုံးကိုရပ်တန့်စေပြီး၊
Software BOD ကို Disable လုပ်ပါ
အညိုရောင်ရှာဖွေစက် (BOD) ကို BODLEVEL ဖျူးများဖြင့်ဖွင့်သောအခါ (ကြည့်ပါ) စာမျက်နှာ 20 ရက်နေ့တွင်စားပွဲတင် 4-148) BOD သည် ထောက်ပံ့မှုပမာဏကို တက်ကြွစွာ စောင့်ကြည့်နေပါသည်။tage အိပ်ချိန်အတွင်း။ အချို့သောစက်ပစ္စည်းများတွင် Power-Down အိပ်စက်ခြင်းမုဒ်တွင် ဆော့ဖ်ဝဲလ်ဖြင့် BOD ကိုပိတ်ခြင်းဖြင့် ပါဝါချွေတာနိုင်သည်။ ထို့နောက် BOD ကို တစ်ကမ္ဘာလုံးအတိုင်းအတာဖြင့် fuses များဖြင့်ပိတ်ထားသောအခါတွင် အိပ်စက်ခြင်းမုဒ်ပါဝါသုံးစွဲမှုသည် တူညီသောအဆင့်တွင်ရှိလိမ့်မည်။
BOD ကို software ဖြင့်ပိတ်ထားပါက၊ အိပ်စက်ခြင်းမုဒ်သို့ဝင်ရောက်ပြီးနောက် BOD လုပ်ဆောင်ချက်ကိုချက်ချင်းပိတ်သွားပါမည်။ အိပ်ရာမှ နိုးလာသောအခါ BOD ကို အလိုအလျောက် ပြန်ဖွင့်သည်။ အိပ်စက်ချိန်အတွင်း VCC အဆင့်ကျဆင်းသွားသောအခါတွင် ၎င်းသည် လုံခြုံသောလုပ်ဆောင်မှုကို သေချာစေသည်။
BOD ကိုပိတ်ထားပါက sleep mode မှနိုးထချိန်သည် RESET မှနိုးလာသည့်အချိန်နှင့်အတူတူဖြစ်သည်။ အသုံးပြုသူအနေဖြင့် bandgap ရည်ညွှန်းချက်စတင်ရန်အချိန်ရှိပြီး MCU ကုဒ်ကိုမဆက်မလုပ်မီ BOD သည်မှန်ကန်စွာအလုပ်လုပ်နိုင်အောင်နိုးထသည့်အချိန်ကိုကိုယ်တိုင်ပြုပြင်ရမည်။ ဇယားတွင် SUT [1: 0] နှင့် CKSEL [3: 0] fuse bits ကိုကြည့်ပါ စာမျက်နှာ 149 ရှိ "ဖျူးအနိမ့် byte"
BOD disable ကို MCU Control Register ၏ BODS (BOD Sleep) bit ဖြင့်ကြည့်သည် “ MCUCR - MCU ထိန်းချုပ်မှု စာမျက်နှာ 37 တွင်မှတ်ပုံတင်ပါ။ ဒီနည်းနည်းကိုတစ်ခုသို့ရေးခြင်းအား Power-Down တွင် BOD ကိုပိတ်ထားပြီးသုညတစ်ခုရေးသားခြင်းသည် BOD ကိုဆက်လက်ရှင်သန်စေသည်။ default setting သည်သုညဖြစ်သည်။ ဆိုလိုသည်မှာ BOD active ဖြစ်သည်။
BODS bit ကိုရေးသားခြင်းကိုအချိန်ကာလအပိုင်းအခြားတစ်ခုနှင့် enable bit တစ်ခုဖြင့်ထိန်းချုပ်ထားသည် “ MCUCR - MCU ထိန်းချုပ်မှုမှတ်ပုံတင်ခြင်း။ စာမျက်နှာ 37 ရက်နေ့တွင် Ter ".
ကန့်သတ်ချက်များ
အောက်ပါစက်ပစ္စည်းများ၌လုပ်ဆောင်နိုင်မှုကို BOD ပိတ်ထားသည်။
ATtiny25, ပြင်ဆင်မှုအီးနှင့်အသစ်များ
ATtiny45, တည်းဖြတ်မူ: D နှင့်အသစ်များ
ATtiny85, တည်းဖြတ်မူ C, နှင့်အသစ်
တည်းဖြတ်မူများကိုစက်အထုပ်တွင်မှတ်သားထားပြီးအောက်ပါအတိုင်းတွေ့နိုင်သည် -
packages များ၏အောက်ခြေအခြမ်း 8P3 နှင့် 8S2
အထုပ် 20M1 ၏ထိပ်တန်း
ပါဝါလျှော့ချရေးမှတ်ပုံတင်
ပါဝါလျှော့ချရေးမှတ်ပုံတင် (PRR) ကိုကြည့်ပါ စာမျက်နှာ ၃၈ ရှိ“ PRR - ပါဝါလျှော့ချရေးမှတ်ပုံတင်”တစ် ဦး ချင်းစီအရံပစ္စည်းများမှနာရီကိုရပ်တန့်ခြင်းဖြင့်စွမ်းအင်သုံးစွဲမှုကိုလျှော့ချရန်နည်းလမ်းကိုထောက်ပံ့ပေးသည်။ လက်ရှိအရံပစ္စည်းသည်အေးခဲသွားပြီး I / O မှတ်ပုံတင်များကိုဖတ်။ မရေးသားနိုင်ပါ။ နာရီကိုရပ်တန့်သည့်အခါအရံပစ္စည်းအသုံးပြုသောအရင်းအမြစ်များကို ဆက်လက်၍ သိမ်းထားလိမ့်မည်။ ထို့ကြောင့်ရံဖန်ရံခါအရံပစ္စည်းများသည်နာရီကိုမပိတ်မီပိတ်ထားသင့်သည်။ PRR ရှိ bit ကိုရှင်းလင်းခြင်းဖြင့်ပြုလုပ်သော module တစ်ခုကိုနှိုးခြင်းသည် module ကို shutdown မပြုမီနှင့်အတူတူပင်ဖြစ်သည်။
Module shutdown ကို Idle mode နှင့် Active mode တွင် သုံး၍ power သုံးစွဲမှုကိုသိသိသာသာလျှော့ချနိုင်သည်။ အခြားအိပ်စက်ခြင်းပုံစံအားလုံးတွင်နာရီကိုရပ်တန့်ထားသည်။ ကြည့်ပါ စာမျက်နှာ ၁၇၇ ရှိ“ I / O module များ၏ supply current” ဖြစ်သည် ex အတွက်amples
အနည်းဆုံးပါဝါစားသုံးမှု
AVR ထိန်းချုပ်ထားသောစနစ်တွင်ပါဝါစားသုံးမှုကိုအနည်းဆုံးဖြစ်အောင်ကြိုးစားသည့်အခါထည့်သွင်းစဉ်းစားရမည့်ပြseveralနာများစွာရှိသည်။ ယေဘုယျအားဖြင့်အိပ်စက်ခြင်းစနစ်များကိုတတ်နိုင်သမျှများများအသုံးပြုသင့်သည်၊ ကိရိယာ၏လုပ်ဆောင်မှုအနည်းဆုံးများလည်ပတ်နိုင်စေရန်အိပ်စက်ခြင်းစနစ်ကိုရွေးချယ်သင့်သည်။ မလိုအပ်သောလုပ်ဆောင်ချက်အားလုံးကိုပိတ်ထားသင့်သည်။ အထူးသဖြင့်အနိမ့်ဆုံးစွမ်းအင်သုံးစွဲမှုကိုရရှိရန်ကြိုးစားသောအခါအောက်ပါ module များသည်အထူးထည့်သွင်းစဉ်းစားရန်လိုအပ်သည်။
Analog မှ Digital Converter
အကယ်၍ ဖွင့်ပါကအိပ်စက်ခြင်းပုံစံအားလုံးတွင် ADC ကို enable လုပ်လိမ့်မည်။ ပါဝါချွေတာရန်အတွက်မည်သည့် sleep mode မ ၀ င်မီ ADC ကိုပိတ်ထားသင့်သည်။ ADC ကိုပိတ်ပြီးပြန်ဖွင့်တဲ့အခါ၊ နောက်ပြောင်းလဲမှုကတိုးချဲ့ပြောင်းလဲမှုဖြစ်လိမ့်မယ်။ ရည်ညွှန်းကိုးကားပါ စာမျက်နှာ ၁၂၂ ရှိ“ ဒစ်ဂျစ်တယ်ပြောင်းသူနှင့် Analogue” ADC စစ်ဆင်ရေးအပေါ်အသေးစိတ်သည်။
analog နှိုင်းယှဉ်
Idle မုဒ်သို့ဝင်ရောက်သောအခါ၊ အသုံးမပြုပါက Analog Comparator ကိုပိတ်ထားသင့်သည်။ ADC ဆူညံသံလျှော့ချရေးမုဒ်သို့ဝင်ရောက်သောအခါ၊ Analog Comparator ကိုပိတ်ထားသင့်သည်။ အခြားသော အိပ်စက်ခြင်းမုဒ်များတွင်၊ Analog Comparator ကို အလိုအလျောက် ပိတ်ထားသည်။ သို့သော်၊ အကယ်၍ Internal Vol ကိုအသုံးပြုရန် Analog Comparator ကိုသတ်မှတ်ထားသည်။tage ထည့်သွင်းမှုအဖြစ် အကိုးအကား၊ Analog Comparator ကို အိပ်မုဒ်အားလုံးတွင် ပိတ်သင့်သည်။ မဟုတ်ရင် Internal Voltage ရည်ညွှန်းချက်ကို ဖွင့်ထားမည်ဖြစ်ပြီး၊ အိပ်စက်ခြင်းမုဒ်မှ သီးခြားဖြစ်သည်။ ကိုးကားပါ။ စာမျက်နှာ ၁၁၉ ရှိ“ analog နှိုင်းယှဉ်” အဆိုပါ Analog နှိုင်းယှဉ် configure ဖို့ဘယ်လိုအသေးစိတ်အတွက်။
အညိုရောင်ထွက် detector
လျှောက်လွှာတွင် Brown-out Detector မလိုအပ်ပါကဤ module ကိုပိတ်ထားသင့်သည်။ အကယ်၍ Brown-out Detector ကို BODLEVEL Fuses များအသုံးပြုထားပါက၎င်းသည်အိပ်စက်ခြင်းစနစ်အားလုံးတွင် enable လုပ်ထားသည့်အတွက်အမြဲတမ်းပါဝါကိုလောင်ကျွမ်းစေသည်။ ပိုမိုနက်ရှိုင်းသောအိပ်စက်ခြင်းစနစ်များတွင်၎င်းသည်လက်ရှိသုံးစွဲမှုကိုသိသိသာသာအထောက်အကူပြုလိမ့်မည်။ ကြည့်ပါ "အညိုရောင်ထွက် Detec- စာမျက်နှာ 41 ရက်နေ့တွင် " နှင့် စာမျက်နှာ ၃၅ မှ“ Software BOD Disable” အညိုရောင်ထွက် detector ကိုဘယ်လိုပြုပြင်မလဲဆိုတာအသေးစိတ်။
ပြည်တွင်းရေးထယ်tage အကိုးအကား
Internal Voltage Brown-out Detection၊ Analog Comparator သို့မဟုတ် ADC မှ လိုအပ်သည့်အခါ အကိုးအကားကို ဖွင့်ပေးပါမည်။ အထက်ပါကဏ္inများတွင်ဖော်ပြထားသည့်အတိုင်းဤ modules များကိုပိတ်ထားလျှင် internal voltage ရည်ညွှန်းချက်ကိုပိတ်ထားမည်ဖြစ်ပြီး၎င်းသည်ပါဝါကိုကုန်မည်မဟုတ်ပါ။ တစ်ဖန်ပြန်ဖွင့်သောအခါအထွက်ကိုအသုံးမပြုမီသုံးစွဲသူသည်ရည်ညွှန်းချက်ကိုစတင်ခွင့်ပြုရမည်။ ရည်ညွှန်းချက်ကို sleep mode တွင်ထားလျှင် output ကိုချက်ချင်းသုံးနိုင်သည်။ ကိုးကားပါ "ပြည်တွင်းရေး Voltagစာမျက်နှာ ၄၂ တွင် ကိုးကား start-up, အချိန်အပေါ်အသေးစိတ်သည်။
Watchdog Timer
Application တွင် Watchdog Timer မလိုအပ်ပါကဤ module ကိုပိတ်ထားသင့်သည်။ အကယ်၍ Watchdog Timer ကိုဖွင့်ထားပါက၎င်းသည်အိပ်စက်ခြင်းစနစ်အားလုံးတွင်ဖွင့်ထားပါလိမ့်မည်။ ပိုမိုနက်ရှိုင်းသောအိပ်စက်ခြင်းစနစ်များတွင်၎င်းသည်လက်ရှိသုံးစွဲမှုကိုသိသိသာသာအထောက်အကူပြုလိမ့်မည်။ ရည်ညွှန်းကိုးကားပါ စာမျက်နှာ ၄၂ ရှိ“ Watchdog Timer” Watchdog Timer ကိုမည်သို့ configure လုပ်ရမည်ကိုအသေးစိတ်အတွက်။
ဆိပ်ကမ်းတံသင်
အိပ်စက်ခြင်းမုဒ်သို့ ဝင်ရောက်သည့်အခါ အနည်းဆုံးပါဝါကို အသုံးပြုရန် ပို့တ်ပင်များအားလုံးကို ပြင်ဆင်သတ်မှတ်ရပါမည်။ အရေးကြီးဆုံးအချက်မှာ pins များသည် resistive loads များမမောင်းရကြောင်း သေချာစေရန်ဖြစ်သည်။ I/O နာရီ (clkI/O) နှင့် ADC နာရီ (clkADC) နှစ်ခုလုံးကို ရပ်တန့်ထားသည့် အိပ်စက်မှုမုဒ်များတွင်၊ စက်၏ ထည့်သွင်းမှုကြားခံများကို ပိတ်ထားပါမည်။ ဒါမှ ဓာတ်အားမကုန်ဘူးဆိုတာ သေချာပါတယ်။
မလိုအပ်သည့်အခါ input ကိုယုတ္တိဗေဒအားဖွငျ့ဖွစျသညျ။ အချို့ဖြစ်ရပ်များတွင်၊ နိုးထမှုအခြေအနေများကိုစစ်ဆေးရန် input logic လိုအပ်သည်
ထို့နောက်ဖွင့်ပါလိမ့်မည်။ အပိုင်းကိုရည်ညွှန်းသည် စာမျက်နှာ ၅၇ ရှိ“ ဒီဂျစ်တယ် Input Enable နှင့် Sleep Modes” ပင်နံပါတ်များကို ဖွင့်ထားပုံအသေးစိတ်အတွက် input buffer ကိုဖွင့်ထားပြီး input signal သည် လွင့်နေပါက သို့မဟုတ် VCC/2 နှင့်နီးစပ်သော analog signal အဆင့်တစ်ခုရှိနေပါက၊ input buffer သည် ပါဝါအလွန်အကျွံသုံးပါမည်။
Analog input pins များအတွက်၊ digital input buffer ကို အချိန်တိုင်း ပိတ်ထားသင့်သည်။ input pin တစ်ခုရှိ VCC/2 နှင့် နီးကပ်သော analog signal အဆင့်သည် တက်ကြွသောမုဒ်တွင်ပင် သိသာထင်ရှားသော Current ကို ဖြစ်စေနိုင်သည်။ Digital Input Disable Register (DIDR0) သို့ စာရေးခြင်းဖြင့် ဒစ်ဂျစ်တယ်ထည့်သွင်းမှုကြားခံများကို ပိတ်နိုင်သည်။ ကိုးကားပါ။ စာမျက်နှာ ၁၂၁ ရှိ DIDR0 - ဒစ်ဂျစ်တယ် Input အားမှတ်ပုံတင်ခြင်း 0 ကိုပိတ်ပါ အသေးစိတ်အတွက်
ဖော်ပြချက်မှတ်ပုံတင်ရန်
MCUCR - MCU ထိန်းချုပ်မှုမှတ်ပုံတင်
MCU ထိန်းချုပ်မှုမှတ်ပုံတင်တွင်ပါဝါစီမံခန့်ခွဲမှုအတွက် control bit များပါရှိသည်။
နည်းနည်း | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
က0x35 | BODS | PUD | SE | SM1 | SM0 | ဘော်ဒီ | ISC01 | ISC00 | MCUCR |
ဖတ်/ရေး | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
ကနဦးတန်ဖိုး | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 7 - BODS: BOD Sleep
BOD သည်လုပ်ဆောင်နိုင်စွမ်းကိုအချို့ကိရိယာများတွင်သာရရှိနိုင်သည်။ ကြည့်ပါ စာမျက်နှာ ၃၆ မှ“ ကန့်သတ်ချက်များ”.
အိပ်ပျော်နေစဉ်အတွင်း BOD ကို disable လုပ်ရန် (ကြည့်ပါ စာမျက်နှာ 7 ရက်နေ့တွင်စားပွဲတင် 1-34) အ BODS နည်းနည်းယုတ္တိဗေဒတ ဦး တည်းမှရေးသားရပါမည် ၎င်းကို MCUCR ရှိအချိန်ကာလအပိုင်းအခြားနှင့် enable bit, BODSE တို့ကထိန်းချုပ်ထားသည်။ ပထမ ဦး စွာ BODS နှင့် BODSE နှစ်ခုလုံးကိုတစ်ခုထားရမည်။ ဒုတိယအချက်အနေဖြင့်၊ လေးနာရီအတွင်း BODS တစ်ခုကိုသတ်မှတ်ရပြီး BODSE ကိုသုညအဖြစ်သတ်မှတ်ရမည်။ BODS bit သည်သတ်မှတ်ပြီးနောက်သုံးနာရီသံသရာလည်ပတ်သည်။ အမှန်တကယ်အိပ်စက်ခြင်းမုဒ်အတွက် BOD ကိုပိတ်ပစ်ရန် BODS တက်ကြွနေစဉ်အိပ်ပျော်ခြင်းညွှန်ကြားချက်ကိုလုပ်ဆောင်ရမည်။ သုံးနာရီသံသရာပြီးနောက် BODS bit သည်အလိုအလျောက်ရှင်းလင်းသွားသည်။
Sleeping BOD ကိုအကောင်အထည်မဖော်နိုင်သည့်ကိရိယာများတွင်ဤနည်းသည်အသုံးမပြုပါ။ အမြဲတမ်းသုညစာဖတ်သည်။
Bit 5 - SE: Sleep Enable လုပ်ပါ
SLEEP ညွှန်ကြားချက်ကို အကောင်အထည်ဖော်သောအခါ MCU သည် အိပ်စက်ခြင်းမုဒ်သို့ ဝင်ရောက်စေရန် SE ဘစ်ကို လော့ဂျစ်တစ်ခုအဖြစ် ရေးသားရမည်ဖြစ်ပါသည်။ MCU သည် ပရိုဂရမ်မာ၏ ရည်ရွယ်ချက်မဟုတ်ပါက အိပ်စက်ခြင်းမုဒ်သို့ ဝင်ရောက်ခြင်းကို ရှောင်ရှားရန်၊ အိပ်စက်ခြင်းညွှန်ကြားချက်ကို မလုပ်ဆောင်မီတွင် Sleep Enable (SE) ကို တစ်နည်းနည်းနှင့် ရေးသားရန်နှင့် နိုးထပြီးနောက် ချက်ချင်းရှင်းလင်းရန် အကြံပြုထားသည်။
Bits 4: 3 - SM [1: 0] Sleep Mode အပိုင်း ၁ နှင့် ၀၀ ကိုရွေးချယ်ပါ
ဤရွေ့ကား bits ကိုပြထားတဲ့အတိုင်းရရှိနိုင်ပါအိပ်စက်ခြင်း mode ကိုသုံးခုအကြားရွေးချယ်ပါ ဇယား ၂-၄.
ဇယား ၇-၂။ အိပ်စက်ခြင်းမုဒ်ကို ရွေးချယ်ပါ။
SM1 | SM0 | အိပ်မုဒ် |
0 | 0 | ဘာမှမလုပ်ဘူး။ |
0 | 1 | ADC ဆူညံသံလျှော့ချခြင်း |
1 | 0 | ပါဝါချပါ |
1 | 1 | လက်ဝယ်ရှိတယ်။ |
Bit 2 - BODSE: BOD Sleep Enable လုပ်ပါ
BOD သည်လုပ်ဆောင်နိုင်စွမ်းကိုအချို့ကိရိယာများတွင်သာရရှိနိုင်သည်။ ကြည့်ပါ စာမျက်နှာ ၃၆ မှ“ ကန့်သတ်ချက်များ”.
BODS bit ဖော်ပြချက်တွင်ရှင်းပြထားသကဲ့သို့ BODSE bit သည် BODS control bit ကိုချိန်ညှိနိုင်သည်။ BOD ကိုပိတ်ထားခြင်းကိုအချိန်ကာလအတိုင်းအတာဖြင့်ထိန်းချုပ်သည်။
ဒီ bit ဟာဆော့ဖ်ဝဲ BOD disable မဖြစ်သေးတဲ့ devices များမှာအသုံးမပြုနိူင်ပါ။
PRR - စွမ်းအင်လျှော့ချရေးမှတ်ပုံတင်
လျှပ်စစ်ဓာတ်အားလျှော့ချမှုမှတ်ပုံတင်သည်အရံနာရီနာရီအချက်ပြစနစ်ကိုပိတ်ထားခြင်းအားဖြင့်စွမ်းအင်သုံးစွဲမှုကိုလျှော့ချရန်နည်းလမ်းကိုထောက်ပံ့ပေးသည်။
နည်းနည်း | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
က0x20 | – | – | – | – | PRTIM1 | PRTIM0 | PRUSI | PRADC | PRR |
ဖတ်/ရေး | R | R | R | R | R/W | R/W | R/W | R/W | |
ကနဦးတန်ဖိုး | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
-bits 7: 4 - Res: Reserved-bits
အဆိုပါ bits များသည် ATtiny25 / 45/85 တွင် bits လုပ်ထားပြီးအမြဲတမ်းသုညအဖြစ်ဖတ်မည်။
Bit 3 - PRTIM1: Power Reduction Timer / Counter1
ယုတ္တိဗေဒတစ်ခုကိုဤနည်းဖြင့်ရေးသားခြင်းသည် Timer / Counter1 module ကိုပိတ်ပစ်လိုက်သည်။ Timer / Counter1 ကို enable လုပ်ပြီးသောအခါ shutdown / shutdown မပိတ်မှီဆက်လက်လုပ်ဆောင်မည်။
Bit 2 - PRTIM0: Power Reduction Timer / Counter0
ယုတ္တိဗေဒတစ်ခုကိုဤနည်းဖြင့်ရေးသားခြင်းသည် Timer / Counter0 module ကိုပိတ်ပစ်လိုက်သည်။ Timer / Counter0 ကို enable လုပ်ပြီးသောအခါ shutdown / shutdown မပိတ်မှီဆက်လက်လုပ်ဆောင်မည်။
bit 1 - PRUSI: စွမ်းအင်လျှော့ချရေး USI
ယုတ္တိဗေဒတစ်ခုအရဤနည်းအားရေးသားခြင်းသည် USI ကိုနာရီအား module သို့ပြောင်းခြင်းဖြင့်ပိတ်လိုက်သည်။ USI ကိုပြန်နှိုးသောအခါ USI ကိုပြန်လည်လည်ပတ်သင့်သည်။
bit 0 - PRADC: Power Reduction ADC
ယုတ္တိဗေဒတစ်ခုအားဤနည်းဖြင့်ရေးသားခြင်းသည် ADC ကိုပိတ်လိုက်သည်။ မပိတ်ခင် ADC ကိုပိတ်ထားရမယ်။ သတိပြုရန်မှာ ADC နာရီကို analog နှိုင်းယှဉ်မှု၏အချို့အစိတ်အပိုင်းများတွင်လည်းအသုံးပြုသည်၊ ဆိုလိုသည်မှာ၎င်း bit သည်မြင့်မားသောအခါ analogue comparator ကိုအသုံးမပြုနိုင်ပေ။
System ကိုထိန်းချုပ်ခြင်းနှင့်ပြန်လည်စတင်
AVR ကိုပြန်လည်သတ်မှတ်ခြင်း
ပြန်လည်စတင်နေစဉ်အတွင်း၊ I / O Registers အားလုံးသည်သူတို့၏ကန ဦး တန်ဖိုးများနှင့်သတ်မှတ်ပြီးအစီအစဉ်သည် Reset Vecor မှစတင်အလုပ်လုပ်သည်။ Reset Vector တွင်ထားရှိသောညွှန်ကြားချက်သည်ပြန်လည်စတင်ကိုင်တွယ်ခြင်းလုပ်ရိုးလုပ်စဉ်အတွက် RJMP - Relative Jump - ညွှန်ကြားချက်ဖြစ်ရမည်။ အကယ်၍ ပရိုဂရမ်သည်အနှောင့်အယှက်ပေးသောအရင်းအမြစ်ကိုဘယ်သောအခါမျှမဖွင့်နိုင်ပါက၊ Interrupt Vectors ကိုအသုံးမပြုပါ၊ အတွက်တိုက်နယ်ပုံ ပုံ ၂-၁ ပြန်လည်စတင်ယုတ္တိဗေဒပြသထားတယ်။ ပြန်လည်စတင် circuit ကို၏လျှပ်စစ် parameers အတွက်ပေးထားကြသည် စာမျက်နှာ ၁၆၅ ရှိ“ စနစ်နှင့်ပြန်လည်သတ်မှတ်ခြင်းလက္ခဏာများ”.
ပုံ 8-1 လော့ဂျစ်ကို ပြန်လည်သတ်မှတ်ပါ။
AVR ၏ I / O ports များသည် reset source တက်ကြွသွားသောအခါသူတို့၏မူလအခြေအနေသို့ချက်ချင်းပြန်လည်ရောက်ရှိသွားသည်။ ၎င်းသည်မည်သည့်နာရီအရင်းအမြစ်ကို run ရန်မလိုအပ်ပါ။
အားလုံးပြန်လည်စတင်သတင်းရင်းမြစ်မလှုပ်သွားပါပြီးနောက်ပြည်တွင်းရေးပြန်လည်စတင်ချဲ့, တစ် ဦး နှောင့်နှေးကောင်တာ invoked ဖြစ်ပါတယ်။ ၎င်းသည်ပုံမှန်လည်ပတ်မှုမစတင်မီပါဝါအားတည်ငြိမ်သောအဆင့်သို့ရောက်ရှိရန်ခွင့်ပြုသည်။ delay ကောင်တာ၏အချိန်ကုန်အချိန်ကာလကိုအသုံးပြုသူမှ SUT နှင့် CKSEL Fuse များမှတဆင့်သတ်မှတ်သည်။ နှောင့်နှေးကာလအတွက်ကွဲပြားခြားနားသောရွေးချယ်မှုအတွက်တင်ပြနေကြသည် နာရီ စာမျက်နှာ ၂၅ မှရင်းမြစ်များ.
အရင်းအမြစ်များကိုပြန်လည်စတင်ပါ
ATtiny25 / 45/85 တွင်ပြန်လည်စတင်ခြင်းရင်းမြစ် ၄ ခုရှိသည်။
ပါဝါဖွင့်ပြီး ပြန်လည်သတ်မှတ်ပါ။ ထောက်ပံ့မှုပမာဏသည် MCU အား ပြန်လည်သတ်မှတ်သည်။tage သည် Power-on Reset အဆင့် (VPOT) အောက်တွင် ရှိသည်။
ပြင်ပပြန်လည်သတ်မှတ်။ အနိမ့်ဆုံး Pulse အရှည်ထက်ပိုရှည်များအတွက် RESET pin ကိုအပေါ်တစ် ဦး အနိမ့်အဆင့်ကိုပစ္စုပ္ပန်အခါ MCU ပြန်လည်စတင်သည်။
စောင့်ကြည့်စာရင်းပြန်လည်သတ်မှတ် Watchdog Timer အချိန်ကာလကုန်သွားပြီး Watchdog ကို enable လုပ်သောအခါ MCU သည်ပြန်လည်စတင်သည်။
အညို-အထွက် Reset ။ Supply Voltage VCC သည် Brown-out Reset threshold (VBOT) အောက်တွင်ရှိပြီး Brown-out Detector ကို ဖွင့်ထားသည်။
Power-on ကိုပြန်လည်စတင်
Power-on Reset (POR) Pulse ကို On-chip detectors မှထုတ်လုပ်သည်။ Detection level ကိုသတ်မှတ်ပါတယ် "Sys- စာမျက်နှာ 165 အပေါ် tem နှင့်ဝိသေသလက္ခဏာများ Reset ". VCC သည် ထောက်လှမ်းမှုအဆင့်အောက်ရောက်တိုင်း POR ကို အသက်သွင်းသည်။ POR circuit ကို Start-up Reset ကို အစပျိုးရန် နှင့် supply vol တွင် ချို့ယွင်းချက်ကို သိရှိရန် အသုံးပြုနိုင်သည်။tage.
Power-on Reset (POR) circuit သည် စက်ပစ္စည်းအား ပါဝါဖွင့်ခြင်းမှ ပြန်လည်သတ်မှတ်ကြောင်း သေချာစေသည်။ ပါဝါဖွင့်ခြင်း ပြန်လည်သတ်မှတ်မှုအဆင့်သို့ ရောက်ရှိခြင်း။tage သည် VCC တက်လာပြီးနောက် စက်ပစ္စည်းအား RESET တွင် မည်မျှကြာကြာထားရှိမည်ကို ဆုံးဖြတ်ပေးသည့် နှောင့်နှေးကောင်တာအား ခေါ်ဆိုသည်။ VCC ထောက်လှမ်းမှုအဆင့်အောက် လျော့နည်းသွားသောအခါ RESET အချက်ပြမှု နှောင့်နှေးမှုမရှိဘဲ နောက်တစ်ကြိမ် အသက်ဝင်လာပါသည်။
ပုံ ၈-၂။ MCU စတင်ခြင်း၊ VCC နှင့် ချိတ်ဆက်ပြီး ပြန်လည်သတ်မှတ်ပါ။
အတွင်းပိုင်း ပြန်လည်သတ်မှတ်ခြင်း
ပုံ ၈-၃။ MCU စတင်ခြင်း၊ ပြင်ပတွင် တိုးချဲ့သတ်မှတ်ခြင်းကို ပြန်လည်သတ်မှတ်ပါ။
ပြင်ပပြန်လည်သတ်မှတ်
အကယ်၍ External Reset ကို enable လုပ်ထားပါက RESET pin ပေါ်ရှိနိမ့်အဆင့်မှထုတ်လုပ်သည်။ အနိမ့်ဆုံး Pulse အကျယ်ထက်ပိုများသော Pulse Reset (ကြည့်ပါ) စာမျက်နှာ ၁၆၅ ရှိ“ စနစ်နှင့်ပြန်လည်သတ်မှတ်ခြင်းလက္ခဏာများ”) နာရီသည် အလုပ်မလုပ်လျှင်ပင် ပြန်လည်သတ်မှတ်မှုကို ထုတ်ပေးလိမ့်မည်။ တိုတောင်းသော ပဲမျိုးစုံများကို ပြန်လည်သတ်မှတ်ရန် အာမခံချက်မရှိပါ။ အသုံးပြုထားသော signal သည် Reset Threshold Vol သို့ရောက်ရှိသောအခါtage – VRST – ၎င်း၏အပြုသဘောဆောင်သောအနားတွင်၊ Time-out ကာလကုန်ဆုံးပြီးနောက် နှောင့်နှေးသည့်ကောင်တာသည် MCU ကို စတင်သည်။
ပုံ ၈-၄။ လည်ပတ်နေစဉ်အတွင်း ပြင်ပကို ပြန်လည်သတ်မှတ်ပါ။
အညိုရောင်ထွက်ထောက်လှမ်းခြင်း
ATtiny25/45/85 တွင် သတ်မှတ်ထားသော trigger အဆင့်နှင့် နှိုင်းယှဉ်ခြင်းဖြင့် လည်ပတ်နေစဉ် VCC အဆင့်ကို စောင့်ကြည့်ရန်အတွက် On-chip Brown-out Detection (BOD) ဆားကစ်တစ်ခု ရှိသည်။ BOD အတွက် အစပျိုးအဆင့်ကို BODLEVEL Fuses မှ ရွေးချယ်နိုင်ပါသည်။ အစပျိုးအဆင့်တွင် အညိုရောင်ကင်းသော ထောက်လှမ်းမှုကို သေချာစေရန် hysteresis တစ်ခုရှိသည်။ ထောက်လှမ်းမှုအဆင့်ရှိ hysteresis ကို VBOT+ = VBOT + VHYST/2 နှင့် VBOT- = VBOT – VHYST/2 ဟု အဓိပ္ပာယ်ဖွင့်ရပါမည်။
BOD ကိုဖွင့်ထားသောအခါတွင်၊ VCC သည် trigger အဆင့် (VBOT- in) အောက်တန်ဖိုးသို့ ကျဆင်းသွားသည်။ ပုံ ၂-၁) Brown- out Reset သည် ချက်ချင်း အသက်ဝင်သည်။ VCC သည် trigger အဆင့်ထက်တိုးလာသောအခါ (VBOT+ in ပုံ ၂-၁) Time-out ကာလ tTOUT ကုန်ဆုံးပြီးနောက် နှောင့်နှေးကောင်တာသည် MCU ကို စတင်သည်။
vol ရှိပါက BOD circuit သည် VCC ကျဆင်းသွားသည်ကိုသာ သိရှိနိုင်မည်ဖြစ်သည်။tage သည် tBOD တွင်ပေးထားသည့်ထက် ပိုကြာအောင် trigger အဆင့်အောက်တွင် ရှိနေသည်။ စာမျက်နှာ ၁၆၅ ရှိ“ စနစ်နှင့်ပြန်လည်သတ်မှတ်ခြင်းလက္ခဏာများ”.
စောင့်ကြည့်စာရင်းပြန်လည်သတ်မှတ်
Watchdog အချိန်ကုန်သွားသောအခါ၊ ၎င်းသည် CK လည်ပတ်ချိန်တစ်ခု၏ တိုတောင်းသော ပြန်လည်သတ်မှတ်မှုခုန်နှုန်းကို ထုတ်ပေးလိမ့်မည်။ ဤသွေးခုန်နှုန်း၏ကျဆင်းနေသောအစွန်းတွင်၊ နှောင့်နှေးသောအချိန်တိုင်းကိရိယာသည် Time-out ကာလ tTOUT ကို စတင်ရေတွက်သည်။ ကိုးကားပါ။ စာမျက်နှာ ၄၂ ရှိ“ Watchdog Timer” အဆိုပါ Watchdog Timer ၏စစ်ဆင်ရေးအပေါ်အသေးစိတ်သည်။
ထယ်၊tage အကိုးအကား အချက်ပြမှုများနှင့် စတင်ချိန်ကို ဖွင့်ပါ။
voltage ရည်ညွှန်းချက်တွင် ၎င်းကိုအသုံးပြုသင့်သည့်နည်းလမ်းကို လွှမ်းမိုးနိုင်သည့် စတင်သည့်အချိန်တစ်ခုရှိသည်။ စတင်ချိန်ကို ပေးထားသည်။ စာမျက်နှာ ၁၆၅ ရှိ“ စနစ်နှင့်ပြန်လည်သတ်မှတ်ခြင်းလက္ခဏာများ”။ ပါဝါကိုချွေတာရန်, ရည်ညွှန်းအမြဲဖွင့်သည်မဟုတ်။ အောက်ပါအခြေအနေများတွင်မှီငြမ်းမှုကိုဖော်ပြသည်။
အဆိုပါ BOD (ထို BODLEVEL [2: 0] ဖျူး -bits ပရိုဂရမ်အားဖြင့်) ကိုဖွင့်သောအခါ။
bandgap ကိုကိုးကားသည့် Analog Comparator နှင့်ချိတ်ဆက်သောအခါ (ACSR ရှိ ACBG bit အားချိန်ညှိခြင်းအားဖြင့်) ။
ADC ကို enable လုပ်တဲ့အခါ။
ထို့ကြောင့် BOD သည် ACBG bit သို့မဟုတ် ADC ကို enable လုပ်ပြီးသောအခါ၊ အသုံးပြုသူသည် Analog Comparator (သို့) ADC မှ output ကိုအသုံးမပြုမီရည်ညွှန်းချက်ကိုစတင်ရန်ခွင့်ပြုရမည်။ Power-down mode တွင်ပါ ၀ င်သောသုံးစွဲမှုကိုလျှော့ချရန်အသုံးပြုသူသည်အထက်ပါအခြေအနေသုံးမျိုးအားရှောင်ရှားနိုင်ပြီး Power-down mode သို့မဝင်မီရည်ညွှန်းချက်အားပိတ်ထားသည်။
Watchdog Timer
Watchdog Timer သည် 128 kHz နှုန်းဖြင့် On-chip Oscillator မှအလုပ်လုပ်သည်။ Watchdog Timer prescaler ကိုထိန်းချုပ်ခြင်းအားဖြင့်၊ ပုံတွင်ပြထားသည့်အတိုင်း Watchdog Reset interval ကိုချိန်ညှိနိုင်သည် စာမျက်နှာ 8 ရက်နေ့တွင်စားပွဲတင် 3-46။ WDR - Watchdog Reset - ညွှန်ကြားချက်သည် Watchdog Timer ကိုပြန်လည်သတ်မှတ်ပေးသည်။ Watchdog Timer သည် ၄ င်းကို disable လုပ်သည့်အချိန်နှင့် Chip Reset ဖြစ်ပေါ်သည့်အခါတွင်လည်းပြန်လည်သတ်မှတ်သည်။ ပြန်လည်သတ်မှတ်သည့်ကာလကိုဆုံးဖြတ်ရန်ကွဲပြားခြားနားသောနာရီသံသရာကာလ ၁၀ ခုကိုရွေးချယ်နိုင်သည်။ အကယ်၍ ပြန်လည်သတ်မှတ်သည့်အချိန်ကာလသည်အခြား Watchdog ပြန်လည်သတ်မှတ်ခြင်းမရှိဘဲသက်တမ်းကုန်ဆုံးပါက ATtiny25 / 45/85 သည် Reset Vector မှပြန်လည်စတင်ပြီးလုပ်ဆောင်ပေးသည်။ Watchdog ပြန်လည်သတ်မှတ်ခြင်းနှင့်ပတ်သက်သည့်အသေးစိတ်အချက်အလက်များအတွက်ရည်ညွှန်းကိုးကားပါ စာမျက်နှာ 8 ရက်နေ့တွင်စားပွဲတင် 3-46.
Watchdog Timer ကိုပြန်လည်သတ်မှတ်ခြင်းအစားအနှောင့်အယှက်ဖြစ်စေရန်လည်းစီစဉ်နိုင်သည်။ Power-down မှနိုးလာရန် Watchdog ကိုအသုံးပြုသောအခါ၎င်းသည်အလွန်အထောက်အကူပြုနိုင်သည်။
စောင့်ကြည့်အကဲဖြတ်ခြင်းကိုမရည်ရွယ်ဘဲပိတ်ခြင်းသို့မဟုတ်ကြိုတင်သတ်မှတ်ထားသောအချိန်ကုန်အချိန်ကာလပြောင်းလဲခြင်းကိုတားဆီးရန်အတွက်ကွဲပြားသောဘေးကင်းလုံခြုံရေးအဆင့်နှစ်ခုကိုဖျူး WDTON မှရွေးချယ်ထားပါသည်။ ဇယား ၂-၄ ကိုးကားပါ။ “ ပြောင်းလဲမှုအတွက်အချိန်အပိုင်းအခြားများ စာမျက်နှာ ၄၃ မှစောင့်ကြည့်လေ့လာသူ၏အချိန်ကာလကိုပုံဖော်ခြင်း အသေးစိတ်အတွက်
ဇယား ၈-၁။ WDTON ၏ Fuse ဆက်တင်များ၏ လုပ်ဆောင်ချက်တစ်ခုအနေဖြင့် WDT ဖွဲ့စည်းမှုပုံစံ
WDTON | ဘေးကင်းရေးအဆင့် | WDT ကန ဦး ပြည်နယ် | WDT ကိုဘယ်လိုပိတ်ရမလဲ | အချိန်ဘယ်လိုပြောင်းလဲ |
ပရိုဂရမ် | 1 | မသန်စွမ်း | အချိန်အပိုင်းအခြား | ကန့်သတ်ချက်မရှိပါ။ |
အစီအစဉ်ချထားသည်။ | 2 | ဖွင့်ထားသည်။ | အမြဲတမ်းဖွင့်ထားတယ် | အချိန်အပိုင်းအခြား |
ပုံ ၈-၇။ Watchdog Timer
Watchdog Timer ၏ဖွဲ့စည်းပုံကိုပြောင်းလဲရန်အချိန်ကာလများ
configuration ကိုပြောင်းလဲမှုအတွက် sequence ကိုနှစ်ခုလုံခြုံရေးအဆင့်ဆင့်အကြားအနည်းငယ်ကွဲပြားသည်။ သီးခြားလုပ်ထုံးလုပ်နည်းများအဆင့်တစ်ခုချင်းစီအတွက်ဖော်ပြထားပါသည်။
ဘေးကင်းရေး အဆင့် 1- ဤမုဒ်တွင်၊ Watchdog Timer ကို အစပိုင်းတွင် ပိတ်ထားသော်လည်း ကန့်သတ်ချက်မရှိဘဲ WDE ဘစ်ကို တစ်ခုသို့ စာရေးခြင်းဖြင့် ဖွင့်နိုင်သည်။ ဖွင့်ထားသည့် Watchdog Timer ကို ပိတ်သည့်အခါ အချိန်သတ်မှတ်ထားသော အတွဲတစ်ခု လိုအပ်ပါသည်။ ဖွင့်ထားသည့် Watchdog Timer ကိုပိတ်ရန်၊ အောက်ပါလုပ်ငန်းစဉ်များကို လိုက်နာရပါမည်-
တူညီသောလုပ်ငန်းလည်ပတ်မှုတွင် WDCE နှင့် WDE သို့ယုတ္တိဗေဒတစ်ခုကိုရေးပါ။ ယုတ္တိဗေဒတစ်ခုသည် WDE bit ၏ယခင်တန်ဖိုးလျော့နည်းသော်လည်း WDE သို့ရေးရမည်။
လာမည့်နာရီလေးပတ်အတွင်းတွင်ပင်တူညီသောလုပ်ဆောင်မှုတစ်ခုတွင် WDE နှင့် WDP bits များကိုလိုချင်သည့်အတိုင်းရေးပါ။ သို့သော် WDCE bit ရှင်းလင်းပြီးဖြစ်သည်။
ဘေးကင်းရေး အဆင့် 2- ဤမုဒ်တွင်၊ Watchdog Timer ကို အမြဲဖွင့်ထားပြီး WDE ဘစ်ကို အမြဲတမ်း တစ်ခုအဖြစ် ဖတ်နေပါမည်။ Watchdog Time-out ကာလကို ပြောင်းလဲသည့်အခါ အချိန်သတ်မှတ်ထားသော အတွဲတစ်ခု လိုအပ်ပါသည်။ Watchdog Time-out ကိုပြောင်းလဲရန်၊ အောက်ပါလုပ်ငန်းစဉ်များကို လိုက်နာရပါမည်-
တူညီသောလုပ်ငန်းလည်ပတ်မှုတွင် WDCE နှင့် WDE သို့ယုတ္တိရှိသည့်အရာတစ်ခုရေးပါ။ WDE ကိုအမြဲတမ်းသတ်မှတ်ထားသော်လည်းအချိန်ကာလကိုစတင်ရန် WDE ကိုရေးသားရမည်။
လာမည့်နာရီလေးပတ်အတွင်းတွင်ပင်တူညီသောလုပ်ဆောင်မှုတစ်ခုတွင် WDP-bit ကိုလိုချင်သည့်အတိုင်းရေးပါ။ သို့သော် WDCE bit ရှင်းလင်းပြီးဖြစ်သည်။ WDE bit တွင်ရေးထားသောတန်ဖိုးသည်မသက်ဆိုင်ပါ။
Code အတထွample
အောက်ပါကုဒ် example သည် WDT ကိုပိတ်ရန်အတွက် တပ်ဆင်မှုတစ်ခုနှင့် C လုပ်ဆောင်ချက်တစ်ခုကို ပြသသည်။ ရည်းစားဟောင်းampကြားဖြတ်များကို ထိန်းချုပ်ထားသည်ဟု ယူဆသည် (ဥပမာ၊ ကမ္ဘာလုံးဆိုင်ရာ ကြားဖြတ်များကို ပိတ်ခြင်းဖြင့်) ဤလုပ်ဆောင်ချက်များကို လုပ်ဆောင်နေစဉ်တွင် ကြားဖြတ်တောက်ခြင်းမျိုး ဖြစ်ပေါ်လာမည်မဟုတ်ဟု ယူဆသည်။
Assembly Code Example(၄) |
WDT_off-
wdr ; MCUSR ရှိ WDRF ကိုရှင်းပါ ldi r16၊ (0< MCUSR, r16 ထွက်သည်။ ; ကျိုးကြောင်းဆီလျော်မှုကို WDCE နှင့် WDE သို့ရေးပါ ; မရည်ရွယ်ဘဲစောင့်ကြည့်နေသောပြန်လည်သတ်မှတ်ခြင်းကိုကာကွယ်ရန်ကြိုတင်ချထားစက်ဟောင်းကိုထားရှိပါ r16၊ WDTCR တွင် ori r16၊ (1< WDTCR, r16 ထွက်သည်။ ; WDT ကိုပိတ်ပါ ldi r16၊ (0< WDTCR, r16 ထွက်သည်။ ret |
C Code အတထွample(၄) |
WDT_off(ပျက်ပြယ်)
{ _WDR (); /* MCUSR တွင် WDRF ကိုရှင်းလင်းပါ */ MCUSR = 0x00 /* logical တစ်ခုကို WDCE နှင့် WDE */ WDTCR |= (1< / * WDT ကိုပိတ်ပါ * / WDTCR = 0x00; } |
မှတ်ချက် ၁။ ကြည့်ပါ “ကုဒ် Examples” စာမျက်နှာ ၆.
ဖော်ပြချက်မှတ်ပုံတင်ရန်
MCUSR - MCU အခြေအနေမှတ်ပုံတင်
MCU Status Register သည် MCU Reset ပြန်လည်ဖြစ်စေသောအရင်းအမြစ်ကိုသတင်းအချက်အလက်ပေးသည်။
နည်းနည်း | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
က0x34 | – | – | – | – | WDRF | BORF | EXTRF | PORF | MCUSR |
ဖတ်/ရေး | R | R | R | R | R/W | R/W | R/W | R/W |
ကန ဦး တန်ဖိုး 0 0 0 0 Bit ဖော်ပြချက်ကိုကြည့်ပါ
-bits 7: 4 - Res: Reserved-bits
အဆိုပါ bits များသည် ATtiny25 / 45/85 တွင် bits လုပ်ထားပြီးအမြဲတမ်းသုညအဖြစ်ဖတ်မည်။
Bit 3 - WDRF: Watchdog Reset Flag
Watchdog Reset ဖြစ်ပေါ်လျှင်ဤ bit ကိုသတ်မှတ်သည်။ အဆိုပါ bit ကို Power-on ကိုပြန်လည်စတင်ခြင်းဖြင့်သို့မဟုတ်အလံသို့ယုတ္တိဗေဒသုညရေးသားခြင်းအားဖြင့် reset ဖြစ်ပါတယ်။
Bit 2 - BORF: အညိုရောင်ပြန်လည်သတ်မှတ်ခြင်းအလံ
Brown-out Reset ဖြစ်လျှင်ဤ bit ကိုသတ်မှတ်သည်။ အဆိုပါ bit ကို Power-on ကိုပြန်လည်စတင်ခြင်းဖြင့်သို့မဟုတ်အလံသို့ယုတ္တိဗေဒသုညရေးသားခြင်းအားဖြင့် reset ဖြစ်ပါတယ်။
bit 1 - EXTRF: ပြင်ပပြန်လည်သတ်မှတ်ခြင်းအလံ
External Reset ဖြစ်ပေါ်လျှင်ဤ bit ကိုသတ်မှတ်သည်။ အဆိုပါ bit ကို Power-on ကိုပြန်လည်စတင်ခြင်းဖြင့်သို့မဟုတ်အလံသို့ယုတ္တိဗေဒသုညရေးသားခြင်းအားဖြင့် reset ဖြစ်ပါတယ်။
bit 0 - PORF: Power-on ကိုပြန်လည်စတင်အလံ
Power-on Reset ဖြစ်ပေါ်လျှင်ဤ bit ကိုသတ်မှတ်သည်။ နည်းနည်းကိုယုတ္တိဗေဒသုညကိုအလံသို့ရေးခြင်းဖြင့်ပြန်လည်သတ်မှတ်သည်။
ပြန်လည်သတ်မှတ်ထားသောအခြေအနေကိုသိရှိရန်ပြန်လည်သတ်မှတ်ထားသောအလံများကိုအသုံးပြုရန်အသုံးပြုသူအနေဖြင့်ပရိုဂရမ်တွင်ဖြစ်နိုင်သမျှစောစီးစွာ MCUSR ကိုပြန်လည်ဖတ်ရှုသင့်သည်။ အခြားပြန်လည်သတ်မှတ်ခြင်းမတိုင်မှီမှတ်ပုံတင်ကိုရှင်းလင်းပါကပြန်လည်သတ်မှတ်ခြင်းအလံများကိုစစ်ဆေးခြင်းဖြင့်ပြန်လည်စတင်ခြင်း၏အရင်းအမြစ်ကိုရှာတွေ့နိုင်သည်။
WDTCR - စောင့်ကြည့်လေ့လာရေးအဖွဲ့ Timer ထိန်းချုပ်မှုမှတ်ပုံတင်
နည်းနည်း | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
က0x21 | WDIF | WDIE | WDP3 | WDCE | WDE | WDP2 | WDP1 | WDP0 | WDTCR |
ဖတ်/ရေး | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
ကနဦးတန်ဖိုး | 0 | 0 | 0 | 0 | X | 0 | 0 | 0 |
Bit 7 - WDIF: Watchdog Timeout Interrupt Flag
Watchdog Timer နှင့်အချိန်ကုန်အချိန်ကုန်ခြင်းနှင့် Watchdog Timer ကြားဖြတ်ခြင်းအတွက် configured သောအခါဤ bit ကိုသတ်မှတ်သည်။ သက်ဆိုင်ရာပြတ်တောက်မှုကိုင်တွယ်မှုအားနည်းချက်ကိုလုပ်ဆောင်သောအခါ WDIF ကို hardware ဖြင့်ရှင်းလင်းသည်။ တနည်းအားဖြင့် WDIF ကို logic တစ်ခုအား flag သို့ရေးသားခြင်းအားဖြင့်ရှင်းလင်းနိုင်သည်။ SREG နှင့် WDIE ရှိ I-bit ကိုသတ်မှတ်သောအခါ Watchdog Time-Out Interrupt သည်ကွပ်မျက်ခံရသည်။
Bit 6 - WDIE: Watchdog Timeout Interrupt Enable လုပ်ပါ
ဒီ bit ကိုတစ်ခုသို့ရေးသားတဲ့အခါ WDE ကိုရှင်းလင်းပြီး Status Register ထဲရှိ I-bit ကိုသတ်မှတ်လိုက်မယ်၊ Watchdog Time-Out Interrupt ကို enable လုပ်တယ်။ အကယ်၍ Watchdog Timer တွင်အချိန်ကုန်တစ်ခုဖြစ်ပေါ်ပါကသက်ဆိုင်ရာကြားဖြတ်ကိုပြန်လည်သတ်မှတ်ခြင်းအစားအစားထိုးသည်။
အကယ်၍ WDE ကိုသတ်မှတ်ထားပါကအချိန်ကုန်တစ်ခုဖြစ်ပေါ်ပါက WDIE သည် hardware ဖြင့်အလိုအလျောက်ရှင်းလင်းသွားလိမ့်မည်။ ၎င်းသည်ကြားဖြတ်ခြင်းကိုအသုံးပြုနေစဉ် Watchdog Reset security ကိုထိန်းသိမ်းရန်အသုံးဝင်သည်။ WDIE bit ကိုရှင်းလင်းပြီးနောက်နောက်တစ်ချိန်တွင်ပြန်လည်ချိန်ညှိပါလိမ့်မည်။ Watchdog ပြန်လည်စတင်ခြင်းကိုရှောင်ကြဉ်ရန်၊ ကြားဖြတ်တစ်ခုစီပြီးနောက် WDIE ကိုသတ်မှတ်ရမည်။
ဇယား ၈-၂။ Watchdog Timer ဖွဲ့စည်းမှု
WDE | WDIE | စောင့်ကြည့်အကဲဖြတ် Timer ပြည်နယ် | အချိန်ထွက်လှုပ်ရှားမှု |
0 | 0 | ရပ်သွားတယ်။ | တစ်ခုမှ |
0 | 1 | ပြေးသည်။ | နှောက်ယှက်သည်။ |
1 | 0 | ပြေးသည်။ | ပြန်လည်သတ်မှတ်ပါ။ |
1 | 1 | ပြေးသည်။ | နှောက်ယှက်သည်။ |
Bit 4 - WDCE: Watchdog Change Enable
WDE bit ကို logic သုညသို့ရေးသောအခါဒီ bit ကိုသတ်မှတ်ရမည်။ ဒီလိုမှမဟုတ်ရင်တော့ Watchdog ကိုပိတ်ထားမှာမဟုတ်ပါဘူး။ တ ဦး တည်းမှရေးသားပြီးတာနဲ့ဟာ့ဒ်ဝဲလေးနာရီသံသရာပြီးနောက်ဒီ bit ကိုရှင်းလင်းလိမ့်မည်။ Watchdog disable လုပ်ထုံးလုပ်နည်းအတွက် WDE bit ၏ဖော်ပြချက်ကိုဖတ်ပါ။ အဆိုပါ prescaler -bits ပြောင်းလဲတဲ့အခါမှာဒီ bit နဲ့ကိုလည်းသတ်မှတ်ရမည်ဖြစ်သည်။ ကြည့်ပါ “ အချိန်ကာလအပိုင်းအခြားများ စာမျက်နှာ ၄၃ ရှိစောင့်ကြည့်ရေးအဖွဲ့၏ဖွဲ့စည်းပုံကိုပြောင်းလဲခြင်းအတွက်”.
Bit 3 - WDE: Watchdog Enable
WDE ကို logic တစ်ခုသို့ရေးသောအခါ Watchdog Timer ကို enable လုပ်ပြီး WDE ကိုသုညသို့သုညသို့ရေးသည်ဆိုလျှင် Watchdog Timer သည်ပိတ်ထားသည်။ WDCE bit တွင် logic level တစ်ခုရှိမှသာ WDE ကိုရှင်းလင်းနိုင်သည်။ Enable လုပ်ထားသော Watchdog Timer ကို disable လုပ်ရန်အောက်ပါလုပ်ထုံးလုပ်နည်းကိုလိုက်နာရမည် -
တူညီသောလုပ်ဆောင်မှုတွင် WDCE နှင့် WDE သို့ယုတ္တိဗေဒတစ်ခုကိုရေးပါ။ disable operation မစတင်မှီက WDE တစ်ခုသို့ logic ဖြစ်ရမည်။
လာမည့်နာရီလေးပတ်အတွင်း WDE သို့ယုတ္တိဗေဒ 0 ကိုရေးပါ။ ဒါက Watchdog ကိုပိတ်ထားသည်။
လုံခြုံရေးအဆင့် ၂ တွင်၊ အထက်တွင်ဖော်ပြထားသော algorithm ကိုပင်ကြည့်လျှင် Watchdog Timer ကို disable လုပ်ရန်မဖြစ်နိုင်ပါ။ ကြည့်ပါ စာမျက်နှာ ၄၃ မှ“ စောင့်ကြည့်လေ့လာရေးအဖွဲ့၏ဖွဲ့စည်းပုံကိုပြောင်းလဲရန်အချိန်ကာလများ”.
လုံခြုံရေးအဆင့် ၁ တွင် WDF ကို MCUSR ရှိ WDRF မှလွှဲပြောင်းသည်။ ကြည့်ပါ စာမျက်နှာ ၄၄ ရှိ“ MCUSR - MCU အခြေအနေမှတ်ပုံတင်ခြင်း” WDRF ၏ဖော်ပြချက်သည်။ ဆိုလိုသည်မှာ WDRF ကိုသတ်မှတ်သောအခါ WDE ကိုအမြဲတမ်းသတ်မှတ်သည်။ WDE ကိုရှင်းလင်းရန် Wdds သည်အထက်တွင်ဖော်ပြထားသောလုပ်ထုံးလုပ်နည်းနှင့်အတူ Watchdog ကိုမပိတ်ခင်ရှင်းလင်းရမည်။ ဤအင်္ဂါရပ်သည်ရှုံးနိမ့်မှုဖြစ်စေသောအခြေအနေများနှင့်ပြန်လည်ပြုပြင်ခြင်းမျိုးစုံကိုသေချာစေပြီး၊
မှတ်ချက်- watchdog timer ကို အပလီကေးရှင်းတွင် အသုံးမပြုပါက၊ စက်၏ အစပျိုးခြင်းတွင် watchdog disable လုပ်ထုံးလုပ်နည်းကို ဖြတ်သန်းရန် အရေးကြီးပါသည်။ Watchdog ကို မတော်တဆ ဖွင့်ထားလျှင် ဥပမာampထွက်ပြေးသွားသောညွှန်ပြချက် (သို့) အညိုရောင်ထွက်နေသောအခြေအနေကြောင့်စက်ကိုပြန်လည်သတ်မှတ်လိမ့်မည်၊ ၎င်းသည်အလှည့်အပြောင်းအသစ်စောင့်ကြည့်ရေးကို ဦး တည်သွားလိမ့်မည်။ ဤအခြေအနေမှရှောင်ရှားရန်အပလီကေးရှင်းဆော့ဝဲသည်ကန ဦး စတင်ချိန်၌ WDRF အလံနှင့် WDE ထိန်းချုပ်မှု bit ကိုအမြဲရှင်းလင်းသင့်သည်။
-bits 5, 2: 0 - WDP [3: 0]: Watchdog Timer Prescaler 3, 2, 1 နှင့် 0
WDP [3: 0] -bits သည် Watchdog Timer ကိုဖွင့်သောအခါ Watchdog Timer ကိုကြိုတင်သတ်မှတ်ခြင်းကိုဆုံးဖြတ်သည်။ ကွဲပြားခြားနားသော prescaling တန်ဖိုးများနှင့်၎င်းတို့နှင့်သက်ဆိုင်သောအချိန်ကုန်အချိန်ကာလများကိုပြထားပါသည် ဇယား ၂-၄.
ဇယား ၈-၃။ Watchdog Timer Prescale ကို ရွေးပါ။
WDP3 | WDP2 | WDP1 | WDP0 | WDT လှိုသံသရာအရေအတွက် | VCC = 5.0V တွင် ပုံမှန်အချိန်ကုန်ခြင်း။ |
0 | 0 | 0 | 0 | 2K (2048) သံသရာ | 16 ms |
0 | 0 | 0 | 1 | 4K (4096) သံသရာ | 32 ms |
0 | 0 | 1 | 0 | 8K (8192) သံသရာ | 64 ms |
0 | 0 | 1 | 1 | 16K (16384) သံသရာ | ၅ ၎ |
0 | 1 | 0 | 0 | 32K (32764) သံသရာ | ၅ ၎ |
0 | 1 | 0 | 1 | 64K (65536) သံသရာ | ၅ ၎ |
0 | 1 | 1 | 0 | 128K (131072) သံသရာ | ၅ ၎ |
0 | 1 | 1 | 1 | 256K (262144) သံသရာ | ၅ ၎ |
1 | 0 | 0 | 0 | 512K (524288) သံသရာ | ၅ ၎ |
1 | 0 | 0 | 1 | 1024K (1048576) သံသရာ | ၅ ၎ |
ဇယား ၈-၃။ Watchdog Timer ကြိုတင်စကေးရွေးချယ်ပါ (ဆက်လက်)
WDP3 | WDP2 | WDP1 | WDP0 | WDT လှိုသံသရာအရေအတွက် | VCC = 5.0V တွင် ပုံမှန်အချိန်ကုန်ခြင်း။ |
1 | 0 | 1 | 0 | လက်ဝယ်ရှိတယ်။(၄) | |
1 | 0 | 1 | 1 | ||
1 | 1 | 0 | 0 | ||
1 | 1 | 0 | 1 | ||
1 | 1 | 1 | 0 | ||
1 | 1 | 1 | 1 |
မှတ်ချက်- 1. ရွေးချယ်ပါက၊ 0b1010 အောက်ရှိ တရားဝင်ဆက်တင်များထဲမှ တစ်ခုကို အသုံးပြုပါမည်။
ကြားဖြတ်
ဤအပိုင်းသည် ATtiny25 / 45/85 တွင်ဖျော်ဖြေခဲ့သည့်အတိုင်းကြားဖြတ်ကိုင်တွယ်ခြင်း၏အသေးစိတ်အချက်အလက်များကိုဖော်ပြသည်။ AVR ၏ပြတ်တောက်မှုကိုင်တွယ်မှု၏ယေဘုယျရှင်းပြချက်ကိုကြည့်ပါ စာမျက်နှာ ၁၂ မှ“ Reset and Interrupt Handling”.
Vtors များကို ATtiny25 / 45/85 တွင်နှောက်ယှက်ပါ
ATtiny25 / 45/85 ၏ interrupt virus သယ်ဆောင်မှုများကိုဖော်ပြထားသည် ဇယား ၂-၄အောက်တွင်။
ဇယား ၉-၁။ ကွက်ကွက်များကို ပြန်လည်သတ်မှတ်ပြီး အနှောင့်အယှက်ပေးသည်။
အမှတ်အသားအမှတ် | ပရိုဂရမ်လိပ်စာ | အရင်းအမြစ် | ကြားဖြတ်အဓိပ္ပာယ် |
1 | က0x0000 | ပြန်သတ်မှတ်ပါ။ | ပြင်ပပင်၊ ပါဝါအပေါ်ပြန်လည်သတ်မှတ်ခြင်း၊ အညိုရောင်ပြန်လည်စတင်ခြင်း၊ |
2 | က0x0001 | INT0 | ပြင်ပကြားဖြတ်တောင်းဆိုမှု 0 |
3 | က0x0002 | PCINT0 | Pin ပြောင်းလဲမှုတောင်းခံ 0 ပြောင်းလဲမှု |
4 | က0x0003 | TIMER1_COMPA | Timer / Counter1 ပွဲစဉ်ကိုနှိုင်းယှဉ်သည် |
5 | က0x0004 | TIMER1_OVF | Timer / Counter1 လျတ် |
6 | က0x0005 | TIMER0_OVF | Timer / Counter0 လျတ် |
7 | က0x0006 | EE_RDY | EEPROM အဆင်သင့်ပဲ |
8 | က0x0007 | ANA_COMP | analog နှိုင်းယှဉ် |
9 | က0x0008 | ADC | ADC ကူးပြောင်းခြင်းပြီးဆုံး |
10 | က0x0009 | TIMER1_COMPB | Timer / Counter1 ပွဲကိုခနှိုင်းယှဉ်သည် |
11 | 0x000A | TIMER0_COMPA | Timer / Counter0 ပွဲစဉ်ကိုနှိုင်းယှဉ်သည် |
12 | 0x000B | TIMER0_COMPB | Timer / Counter0 ပွဲကိုခနှိုင်းယှဉ်သည် |
13 | ၃၂x၄၁C | WDT | စောင့်ကြည့်အကဲဖြတ်သူများအချိန် |
14 | 0x000D | USI_START | USI START |
15 | 0x000E | USI_OVF | USI လျတ် |
အကယ်၍ ပရိုဂရမ်သည်အနှောင့်အယှက်ပေးသောအရင်းအမြစ်ကိုဘယ်သောအခါမျှမဖွင့်နိုင်ပါက၊ Interrupt Vectors ကိုအသုံးမပြုပါ၊
ATtiny25/45/85 ရှိ interrupt vector address များအတွက်ပုံမှန်နှင့်ယေဘူယျသတ်မှတ်ချက်ကို program ex တွင်ပြထားသည်ample အောက်တွင်။
Assembly Code Example | ||
0x0000 .org | ; လာမည့်လိပ်စာကိုသတ်မှတ်ပါ | ကြေညာချက် |
rjmp ပြန်လည်သတ်မှတ် | ; 0x0000 လိပ်စာ | |
INT0_ISR rjmp | ; 0x0001 လိပ်စာ | |
PCINT0_ISR rjmp | ; 0x0002 လိပ်စာ | |
TIM1_COMPA_ISR rjmp | ; 0x0003 လိပ်စာ | |
TIM1_OVF_ISR rjmp | ; 0x0004 လိပ်စာ | |
TIM0_OVF_ISR rjmp | ; 0x0005 လိပ်စာ | |
rjmp EE_RDY_ISR | ; 0x0006 လိပ်စာ | |
rjmp ANA_COMP_ISR | ; 0x0007 လိပ်စာ | |
ADC_ISR rjmp | ; 0x0008 လိပ်စာ | |
TIM1_COMPB_ISR rjmp | ; 0x0009 လိပ်စာ | |
TIM0_COMPA_ISR rjmp | ; 0x000A လိပ်စာ | |
TIM0_COMPB_ISR rjmp | ; 0x000B လိပ်စာ | |
WDT_ISR rjmp | ; 0x000C လိပ်စာ | |
USI_START_ISR rjmp | ; 0x000D လိပ်စာ | |
USI_OVF_ISR rjmp | ; 0x000E လိပ်စာ | |
ပြန်လည်: | ; အဓိကအစီအစဉ်ကိုစတင်ပါ | |
; 0x000F လိပ်စာ | ||
… |
မှတ်ချက်- ကြည့်ပါ။ “ကုဒ် Examples” စာမျက်နှာ ၆.
ပြင်ပကြားဖြတ်
External Interrupts များသည် INT0 pin (သို့) PCINT တစ်ခုခုမှဖြစ်ပေါ်သည်။ [5: 0] pins ။ အကယ်၍ enable လုပ်ထားပါက INT0 သို့မဟုတ် PCINT [5: 0] pins များကို output များအဖြစ် configure လုပ်ထားလျှင်တောင်မှ interrupts များသည်အစပျိုးလိမ့်မည်ကိုသတိပြုပါ။ ဤအင်္ဂါရပ်သည် software interrupt ထုတ်လုပ်ရန်နည်းလမ်းကိုထောက်ပံ့ပေးသည်။ Pin ပြောင်းလဲမှုသည် PCINT [5: 0] တစ်ခုခုကို enable လုပ်ထားပါက PCI ကိုနှောက်ယှက်လိမ့်မည်။ pin ပြောင်းလဲမှုကိုအထောက်အကူပြုသော pins များပါ ၀ င်သော PCMSK Register Register [5: 0] PCINT အပေါ် pin ကိုပြောင်းလဲမှု interrupts ပြတ်တောင်းပြတ်တောင်းရှာဖွေတွေ့ရှိနေကြသည်။ ဤသည်ဆိုလိုသည်မှာဤပြတ်တောက်မှုကို Idle mode မဟုတ်သောအခြား sleep mode များမှအစိတ်အပိုင်းကိုနှိုးရန်အသုံးပြုနိုင်သည်။
INT0 ပြတ်တောက်မှုများကိုကျဆင်းခြင်း၊ မြင့်တက်ခြင်းသို့မဟုတ်အဆင့်နိမ့်ခြင်းတို့မှအစပျိုးနိုင်သည်။ MCUCR ၏ MCU ထိန်းချုပ်မှုမှတ်ပုံတင်အတွက်သတ်မှတ်ထားသည့်အတိုင်းဤအရာကိုသတ်မှတ်သည်။ INT0 interrupt ကို enable လုပ်ပြီး level triggered အဖြစ် configure လုပ်တဲ့အခါ၊ pin သည်နိမ့်ကျနေသမျှကာလပတ်လုံး interrupt သည်အစပျိုးလိမ့်မယ်။ သတိပြုရမည်မှာ INT0 တွင်ကျဆင်းခြင်းသို့မဟုတ်မြင့်တက်ခြင်းစွန်းရောက်သည်ကိုအသိအမှတ်ပြုခြင်းတွင်ဖော်ပြထားသော I / O နာရီရှိခြင်းလိုအပ်သည် on "နာရီစနစ်များနှင့်၎င်းတို့၏ဖြန့်ဖြူး" စာမျက်နှာ ၈.
အနိမ့်အဆင့်ကြားဖြတ်
INT0 တွင်အဆင့်နိမ့်သောပြတ်တောက်မှုကိုပြတ်တောင်းပြတ်တောင်းပြတ်သားစွာရှာဖွေတွေ့ရှိသည်။ ဤသည်ဆိုလိုသည်မှာဒီကြားဖြတ်မှုကိုအစိတ်အပိုင်းအားနိုးကြားစေရန်အသုံးပြုနိုင်ပြီး Idle mode မှလွဲ၍ အခြား sleep mode များမှလည်းအသုံးပြုနိုင်သည်။ Idle mode မှလွဲ၍ I / O နာရီသည် sleep mode အားလုံးတွင်ရပ်သည်။
Power-down မှ နှိုးဆွရန်အတွက် အစပျိုးထားသော အဆင့်တစ်ခုအား အသုံးပြုပါက၊ နှိုးဆော်မှုအဆင့်ကို အပြီးသတ်ရန် MCU အတွက် လိုအပ်သောအဆင့်သည် နှိုးဆော်မှုအား အပြီးသတ်ရန် အချိန်အကြာကြီး ထိန်းသိမ်းထားရမည်ဖြစ်ကြောင်း သတိပြုပါ။ စတင်ချိန်မကုန်မီ အဆင့် ပျောက်သွားပါက၊ MCU သည် နိုးကြားနေမည်ဖြစ်သော်လည်း မည်သည့်အနှောင့်အယှက်မှ ထုတ်ပေးမည်မဟုတ်ပါ။ တွင်ဖော်ပြထားသည့်အတိုင်း SUT နှင့် CKSEL Fuses မှစတင်သည့်အချိန်ကိုသတ်မှတ်သည်။ စာမျက်နှာ ၂၃ ရှိ“ စနစ်နာရီနှင့်နာရီရွေးစရာများ”.
device ကိုမဖွင့်ခင်မှာ interrupt pin ပေါ်ရှိနိမ့်ကျတဲ့အဆင့်ကိုဖယ်ရှားလိုက်ရင် program execute သည် interrupt service လုပ်ရိုးလုပ်စဉ်ဆီသို့ရောက်သွားမှာမဟုတ်ဘဲ SLEEP command ကိုလိုက်ပြီးညွှန်ကြားချက်ကိုဆက်သွားပါလိမ့်မယ်။
ပင်အနှောက်အယှက်အချိန်ကိုက်ကို ပြောင်းလဲပါ။
ရည်းစားဟောင်းတစ်ယောက်ampပင်နံပါတ်ပြောင်းလဲခြင်း၏ အချိန်ကိုက်နှောင့်ယှက်မှုကို ပြထားသည်။ ပုံ ၂-၁.
ဖော်ပြချက်မှတ်ပုံတင်ရန်
MCUCR - MCU ထိန်းချုပ်မှုမှတ်ပုံတင်
External Interrupt Control Register A တွင်ထိန်းချုပ်မှုဆိုင်ရာကြားဖြတ်ထိန်းချုပ်မှုအတွက်ထိန်းချုပ်မှု -bits ပါဝင်သည်။
နည်းနည်း | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
က0x35 | BODS | PUD | SE | SM1 | SM0 | ဘော်ဒီ | ISC01 | ISC00 | MCUCR |
ဖတ်/ရေး | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
ကနဦးတန်ဖိုး | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bits 1: 0 - ISC0 [1: 0]: Interrupt Sense Control 0 Bit 1 နှင့် Bit 0 ကြားဖြတ်
SREG I-flag နှင့်သက်ဆိုင်သော interrupt mask ကိုသတ်မှတ်ထားပါက External Interrupt 0 သည်ပြင်ပ pin INT0 မှသက်ဝင်လှုပ်ရှားသည်။ Interrupt ကိုသက်ဝင်စေသည့်ပြင်ပ INT0 pin ရှိအဆင့်နှင့်အနားသတ်များကိုသတ်မှတ်သည် ဇယား ၂-၄မရ။ INT0 pin ၏တန်ဖိုးသည် s ဖြစ်သည်။ampအစွန်းများကို မဖော်ထုတ်မီ ဦးဆောင်ခဲ့သည်။ အနားသတ် (သို့) အပိတ်အနှောင့်အယှက်ကိုရွေးချယ်ပါကနာရီတစ်လုံးထက်ပိုကြာသောပဲများကကြားဖြတ်ကိုထုတ်ပေးလိမ့်မည်။ ပိုတိုသောပဲမျိုးစုံသည်အနှောင့်အယှက်ဖြစ်စေရန်အာမမခံပါ။ အကယ်၍ အနိမ့်အဆင့်အနှောင့်အယှက်ကိုရွေးချယ်ပါကအနှောင့်အယှက်ဖြစ်စေရန်လက်ရှိကျင့်သုံးနေသည့်ညွှန်ကြားချက်ပြီးစီးသည်အထိအဆင့်နိမ့်ကိုကျင်းပရမည်။
ဇယား ၉-၂။ Interrupt 9 Sense Control
ISC01 | ISC00 | ဖော်ပြချက် |
0 | 0 | INT0 ၏အနိမ့်အဆင့်သည် interrupt request ကိုထုတ်ပေးသည်။ |
0 | 1 | INT0 အပေါ်မည်သည့်ဆင်ခြင်တုံတရားဆိုင်ရာပြောင်းလဲမှုသည်မဆိုတောင်းဆိုမှုတစ်ခုအားထုတ်ပေးသည်။ |
1 | 0 | INT0 ၏ကျဆင်းနေသည့်အစွန်းသည် interrupt request ကိုဖြစ်ပေါ်စေသည်။ |
1 | 1 | INT0 ၏အမြင့်အစွန်းသည် interrupt request ကိုထုတ်ပေးသည်။ |
GIMSK - အထွေထွေကြားဖြတ်မျက်နှာဖုံးမှတ်ပုံတင်
နည်းနည်း | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3B | – | INT0 | ချစ်သူ | – | – | – | – | – | GIMSK |
ဖတ်/ရေး | R | R/W | R/W | R | R | R | R | R | |
ကနဦးတန်ဖိုး | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
-bits 7, 4: 0 - Res: ကြိုတင်မှာယူထားသော -bits
အဆိုပါ bits များသည် ATtiny25 / 45/85 တွင် bits လုပ်ထားပြီးအမြဲတမ်းသုညအဖြစ်ဖတ်မည်။
Bit 6 - INT0: External Interrupt Request 0 Enable လုပ်ပါ
INT0 bit ကို (တစ်ခု) သတ်မှတ်ပြီး Status Register (SREG) ရှိ I-bit ကိုသတ်မှတ်သည် (တစ်ခု)၊ ပြင်ပ pin ကြားဖြတ်ခြင်းကိုဖွင့်ထားသည်။ MCU ထိန်းချုပ်မှုမှတ်ပုံတင် (MCUCR) ရှိ Interrupt Sense Control0-bits 1/0 (ISC01 နှင့် ISC00) ပြင်ပကြားဖြတ်သည် INT0 pin သို့မဟုတ် sensed level ၏အစွန်းသို့မြင့်တက်ခြင်းနှင့် / သို့မဟုတ်ကျဆင်းခြင်းအပေါ်သက်ရောက်ခြင်းရှိမရှိကိုသတ်မှတ်သည်။ pin ၏လုပ်ဆောင်မှုသည် INT0 ကို output တစ်ခုအဖြစ် configure လုပ်ထားလျှင်တောင်မှကြားဖြတ်တောင်းဆိုမှုကိုဖြစ်ပေါ်စေသည်။ External Interrupt Request 0 ၏သက်ဆိုင်ရာပြတ်တောက်မှုကို INT0 Interrupt Vector မှလုပ်သည်။
Bit 5 - PCIE: Pin Change Interrupt Enable လုပ်ပါ
PCIE bit ကို (တစ်ခု) သတ်မှတ်ပြီး Status Register (SREG) ရှိ I-bit ကိုသတ်မှတ်သည် (တစ်ခု)၊ pin change interrupt ကို enable လုပ်သည်။ မည်သည့်ဖွင့်ထားသည့်မည်သည့် PCINT [5: 0] pin မဆိုပြောင်းလဲမှုသည်ပြတ်တောက်စေပါသည်။ Pin Change Interrupt Request ၏သက်ဆိုင်ရာကြားဖြတ်ကို PCI Interrupt Vector မှလုပ်သည်။ PCINT [5: 0] တံသင်ကို PCMSK0 မှတ်ပုံတင်ခြင်းဖြင့်တစ် ဦး ချင်းစီဖွင့်ထားသည်။
GIFR - အထွေထွေကြားဖြတ်အလံမှတ်ပုံတင်
နည်းနည်း | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3A | – | INTF0 | PCIF | – | – | – | – | – | GIFR |
ဖတ်/ရေး | R | R/W | R/W | R | R | R | R | R | |
ကနဦးတန်ဖိုး | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
-bits 7, 4: 0 - Res: ကြိုတင်မှာယူထားသော -bits
အဆိုပါ bits များသည် ATtiny25 / 45/85 တွင် bits လုပ်ထားပြီးအမြဲတမ်းသုညအဖြစ်ဖတ်မည်။
Bit 6 - INTF0: External Interrupt Flag 0
INT0 pin ပေါ်ရှိအစွန်းတစ်ခုသို့မဟုတ်ယုတ္တိဗေဒပြောင်းလဲမှုသည်အနှောင့်အယှက်တောင်းခံမှုကိုအစပျိုးသောအခါ INTF0 သည် (တစ်ခု) ဖြစ်လာသည်။ SREG ရှိ I-bit နှင့် GIMSK ရှိ INT0 bit ကိုသတ်မှတ်ပါက (တစ်ခု) ဖြစ်ပါက MCU သည်သက်ဆိုင်ရာ Interrupt Vector သို့သွားလိမ့်မည်။ interrupt လုပ်ရိုးလုပ်စဉ်ကို execute လုပ်သောအခါအလံရှင်းလင်းသွားသည်။ နောက်တနည်းအားဖြင့်၎င်းကိုယုတ္တိတန်စွာရေးသားခြင်းအားဖြင့်အလံကိုရှင်းလင်းနိုင်သည်။ INTRO ကိုကြားဖြတ်အဆင့်အဖြစ်သတ်မှတ်သောအခါဤအလံကိုအစဉ်ရှင်းလင်းသည်။
Bit 5 - PCIF: Pin Change Interrupt အလံ
မည်သည့် PCINT တွင်မဆိုယုတ္တိဗေဒပြောင်းလဲမှု [5: 0] pin သည်ကြားဖြတ်တောင်းဆိုမှုတစ်ခုဖြစ်ပေါ်သောအခါ PCIF ကိုသတ်မှတ်သည်။ SREG ရှိ I-bit နှင့် GIMSK ရှိ PCIE bit ကိုသတ်မှတ်လျှင် (တစ်ခု) ဖြစ်ပါက MCU သည်သက်ဆိုင်ရာ Interrupt Vector သို့သွားလိမ့်မည်။ interrupt လုပ်ရိုးလုပ်စဉ်ကို execute လုပ်သောအခါအလံရှင်းလင်းသွားသည်။ နောက်တနည်းအားဖြင့်၎င်းကိုယုတ္တိတန်စွာရေးသားခြင်းအားဖြင့်အလံကိုရှင်းလင်းနိုင်သည်။
PCMSK - Pin ပြောင်းလဲခြင်းမျက်နှာဖုံးမှတ်ပုံတင်ပါ
နည်းနည်း | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
က0x15 | – | – | PCINT5 | PCINT4 | PCINT3 | PCINT2 | PCINT1 | PCINT0 | PCMSK |
ဖတ်/ရေး | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
ကနဦးတန်ဖိုး | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
-bits 7: 6 - Res: Reserved-bits
အဆိုပါ bits များသည် ATtiny25 / 45/85 တွင် bits လုပ်ထားပြီးအမြဲတမ်းသုညအဖြစ်ဖတ်မည်။
-bits 5: 0 - PCINT [5: 0]: Pin ပြောင်းလဲမှုမျက်နှာဖုံး 5 Enable: 0
PCINT တစ်ခုစီသည် [5: 0] bit သည်သက်ဆိုင်ရာ I / O pin တွင် Pin change interrupt ကို enable လုပ်မလားရွေးချယ်သည်။ PCINT [5: 0] ကိုသတ်မှတ်ပြီး GIMSK ရှိ PCIE bit ကိုသတ်မှတ်သည်ဆိုပါကသက်ဆိုင်ရာ I / O pin တွင် pin ပြောင်းလဲမှုပြတ်တောက်သည်။ အကယ်၍ PCINT [5: 0] ကိုရှင်းလင်းပြီးပါက၊ သက်ဆိုင်ရာ I / O pin ပေါ်ရှိ pin change ပြောင်းလဲမှုကိုပိတ်ထားသည်။
I/O ဆိပ်ကမ်းများ
နိဒါန်း
AVR port များအားလုံးတွင် ယေဘူယျ ဒစ်ဂျစ်တယ် I/O ပေါက်များအဖြစ် အသုံးပြုသောအခါတွင် Read-Modify-Write လုပ်ဆောင်နိုင်စွမ်း ရှိပါသည်။ ဆိုလိုသည်မှာ SBI နှင့် CBI ညွှန်ကြားချက်များဖြင့် အခြားသော pin များ၏ ဦးတည်ချက်ကို မရည်ရွယ်ဘဲ မပြောင်းလဲဘဲ port pin တစ်ခု၏ ဦးတည်ချက်ကို ပြောင်းလဲနိုင်သည်။ drive တန်ဖိုး (အထွက်အဖြစ်ပြင်ဆင်သတ်မှတ်လျှင်) သို့မဟုတ်ဆွဲအားမြှင့်တွန်းအားများကိုအဖွင့်/အပိတ်ပြုလုပ်ရာတွင်လည်းထည့်သွင်းသည်။ အထွက်ကြားခံတစ်ခုစီတွင် မြင့်မားသော sink နှင့် source စွမ်းရည်နှစ်မျိုးစလုံးဖြင့် symmetrical drive လက္ခဏာများရှိသည်။ LED display များကို တိုက်ရိုက်မောင်းနှင်ရန် pin driver သည် ခိုင်ခံ့ပါသည်။ port pins များအားလုံးတွင် supply-vol တစ်ခုပါသော တစ်ဦးချင်းစီ ရွေးချယ်နိုင်သော ဆွဲအားတက်နိုင်သော resistors ရှိသည်။tage ပုံပျက်ခုခံမှု။ I/O pin များအားလုံးတွင် ဖော်ပြထားသည့်အတိုင်း VCC နှင့် Ground နှစ်ခုလုံးအတွက် အကာအကွယ်ဒိုင်အိုဒများရှိသည်။ ပုံ ၂-၁. ကိုးကားပါ။ စာမျက်နှာ 161 တွင် "လျှပ်စစ်ဝိသေသလက္ခဏာများ" ကန့်သတ်ချက်များစာရင်းအပြည့်အစုံအတွက်။
ပုံ ၁၀-၁။ I/O ပင်နံပါတ် ညီမျှသော ဇယားကွက်
ဤကဏ္ဍရှိ မှတ်ပုံတင်များနှင့် ဘစ်ရည်ညွှန်းချက်များအားလုံးကို ယေဘုယျပုံစံဖြင့် ရေးသားထားသည်။ အက္ခရာအသေး“ x” သည်ဆိပ်ကမ်းအတွက်နံပါတ်အက္ခရာကိုကိုယ်စားပြုပြီးစာလုံးအသေးတွင်“ n” သည် bit နံပါတ်ကိုကိုယ်စားပြုသည်။ သို့သော်၊ ပရိုဂရမ်တစ်ခုတွင် register သို့မဟုတ် bit defines ကိုအသုံးပြုသောအခါ၊ တိကျသောပုံစံကိုအသုံးပြုရပါမည်။ ဟောင်းအတွက်ample၊ PORTB3 သည် bit no ဖြစ်သည်။ 3 Port B တွင်၊ ဤနေရာတွင် ယေဘုယျအားဖြင့် PORTxn အဖြစ် မှတ်တမ်းတင်ထားသည်။ ရုပ်ပိုင်းဆိုင်ရာ I/O မှတ်ပုံတင်မှုများနှင့် ဘစ်တည်နေရာများကို ဖော်ပြထားပါသည်။ ပေါ်တွင်ဖော်ပြချက်မှတ်ပုံတင်ပါ စာမျက်နှာ ၈.
port တစ်ခုစီအတွက် I / O မှတ်ဉာဏ်လိပ်စာတည်နေရာသုံးခုကိုသတ်မှတ်ထားပြီးဒေတာမှတ်ပုံတင်တစ်ခုအတွက် PORTx၊ ဒေတာညွှန်ကြားမှုမှတ်ပုံတင် - DDRx နှင့်ဆိပ်ကမ်းထည့်သွင်းမှု - PINx အတွက်တစ်ခုစီကိုခွဲဝေချထားသည်။ Port Input Pins I / O တည်နေရာကိုဖတ်ရန်၊ ဒေတာမှတ်ပုံတင်နှင့်ဒေတာလမ်းညွှန်မှတ်ပုံတင်ကိုဖတ် / ရေးနေစဉ်။ သို့သော် PINx မှတ်ပုံတင်တွင်ယုတ္တိဗေဒတစ်ခုအားနည်းနည်းဖြင့်ရေးသားခြင်းသည်အချက်အလက်မှတ်ပုံတင်တွင်ရှိသည့်သက်ဆိုင်ရာ bit ကိုပြောင်းသွားလိမ့်မည်။ ထို့အပြင် MCUCR ရှိ Pull-up Disable - PUD bit သည်သတ်မှတ်သောအခါ port အားလုံးရှိ pins အားလုံးအတွက် pull-up function ကိုပိတ်ထားသည်။
I / O port ကို General Digital I / O အဖြစ်အသုံးပြုခြင်းတွင်ဖော်ပြထားသည် စာမျက်နှာ ၅၃ ရှိ“ အထွေထွေဒီဂျစ်တယ် I / O ဆိပ်ကမ်းများ”။ port pin အများစုသည် device ရှိအရံပစ္စည်းများအတွက်အခြား function များဖြင့် multiplexed ဖြစ်သည်။ အခြား function တစ်ခုစီသည် port pin နှင့်မည်သို့သက်ဆိုင်သည်ကိုဖော်ပြထားသည် စာမျက်နှာ ၅၇ ရှိ“ အခြားဆိပ်ကမ်းလုပ်ဆောင်ချက်များ”။ သီးခြားလုပ်ဆောင်ချက်များကိုအပြည့်အဝဖော်ပြရန်တစ်ခုချင်းစီ၏ module အခန်းများကိုကိုးကားပါ။
သတိပြုရန်မှာ port pins အချို့၏ alternate function ကို enable လုပ်ခြင်းသည်ယေဘူယျ digital I / O အနေဖြင့် port ရှိအခြား pins အသုံးပြုခြင်းကိုမသက်ရောက်ပါ။
အထွေထွေဒစ်ဂျစ်တယ် I / O အဖြစ်ဆိပ်ကမ်းများ
ဆိပ်ကမ်းများမှာနှစ်ဖက်စလုံးမှ ဦး တည်သော I / O ဆိပ်ကမ်းများဖြစ်ပြီး၊ ပုံ ၂-၁ ဤနေရာတွင်ယေဘုယျအားဖြင့် Pxn ဟုခေါ်သော I / O-port pin တစ်ခု၏အလုပ်လုပ်ပုံဖော်ပြချက်ကိုပြသည်။
ပုံ ၁၀-၂။ အထွေထွေ ဒစ်ဂျစ်တယ် I/O(၄)
Pin ကိုပြုပြင်ခြင်း
port pin တစ်ခုစီတွင် register bits သုံးခုပါဝင်သည်။ DDxn, PORTxn နှင့် PINxn ။ ပြထားတဲ့အတိုင်း ပေါ်တွင်ဖော်ပြချက်မှတ်ပုံတင်ပါ စာမျက်နှာ ၈, DDxn bits သည် DDRx I / O လိပ်စာ၊ PORTxn bits သည် PORTx I / O လိပ်စာနှင့် PINx I / O လိပ်စာရှိ PINxn bits သည်ဝင်ရောက်နိုင်သည်။
DDRx မှတ်ပုံတင်တွင် DDxn bit သည်ဤ pin ၏ညှနျကွားမှုကိုရှေးခယျြသညျ။ အကယ်၍ DDxn သည်ယုတ္တိဗေဒတစ်ခုအားရေးသားခဲ့ပါက Pxn ကို output pin တစ်ခုအဖြစ် configure လုပ်ထားသည်။ အကယ်၍ DDxn သည်ယုတ္တိဗေဒသုညကိုရေးထားလျှင် Pxn ကို input pin တစ်ခုအဖြစ် configure လုပ်ထားသည်
အကယ်၍ pin ကို input pin တစ်ခုအနေဖြင့် configure လုပ်သောအခါ PORTxn သည်ယုတ္တိဗေဒတစ်ခုရေးသည်ဆိုပါက pull-up resistor ကိုသက်ဝင်စေသည်။ pull-up resistor ကိုပိတ်ရန် PORTxn သည် logic သုညကိုရေးရမည် (သို့) pin ကို output pin တစ်ခုအနေဖြင့်ပြုပြင်ရမည်။ နာရီမရှိသော်ငြားလည်း reset အခြေအနေတက်ကြွလာသောအခါ port pin များသည် tri-ဖော်ပြထားသည်။
အကယ်၍ pin ကို output pin တစ်ခုအနေဖြင့် configure လုပ်သောအခါ PORTxn သည်ယုတ္တိဗေဒတစ်ခုရေးသည်ဆိုပါက port pin သည်မြင့်မားသည်။ အကယ်၍ pin ကို output pin တစ်ခုအဖြစ် configure လုပ်သောအခါ PORTxn သည်ယုတ္တိဗေဒသုညဖြစ်သည်ဆိုပါက port pin နိမ့်သည် (သုည) ဖြစ်သည်။
အဆိုပါ pin ကို Toggling
ယုတ္တိဗေဒတစ်ခုအား PINxn သို့ရေးသားခြင်းသည် DDRxn ၏တန်ဖိုးပေါ် မူတည်၍ PORTxn ၏တန်ဖိုးကိုပြောင်းသည်။ SBI ညွှန်ကြားချက်ကို port တစ်ခုတည်း bit အား toggle လုပ်နိူင်သည်ကိုသတိပြုပါ။
Input နှင့် Output အကြားပြောင်းလဲခြင်း
tri-state ({DDxn, PORTxn} = 0b00) နှင့် output high ({DDxn, PORTxn} = 0b11) အကြား ကူးပြောင်းသည့်အခါ၊ ဆွဲယူဖွင့်ထားသည့် {DDxn၊ PORTxn} = 0b01) သို့မဟုတ် အထွက်နည်းသော inter- mediate state တစ်ခု၊ ({DDxn၊ PORTxn} = 0b10) ဖြစ်ပေါ်ရမည်။ သာမာန်အားဖြင့်၊ တွန်းအားမြင့်သောပတ်ဝန်းကျင်သည် အားကောင်းသောမောင်းနှင်သူနှင့် ဆွဲအားတက်ခြင်းကြား ခြားနားချက်ကို သတိပြုမိမည်မဟုတ်သောကြောင့် ပုံမှန်အားဖြင့်၊ ဆွဲအားဖွင့်ထားသည့်အခြေအနေသည် အပြည့်အဝလက်ခံနိုင်ဖွယ်ရှိသည်။ ထိုသို့မဟုတ်ပါက၊ MCUCR မှတ်ပုံတင်ခြင်းရှိ PUD bit ကို ports အားလုံးရှိ pull-ups အားလုံးကို disable လုပ်ရန် သတ်မှတ်နိုင်သည်။
pull-up နှင့် output နိမ့်နှင့်အတူ input ကိုအကြား switching အတူတူပင်ပြproblemနာကိုဖြစ်ပေါ်စေသည်။ အသုံးပြုသူသည်အလယ်အလတ်အဆင့်အဖြစ်သုံးပြည်နယ် ({DDxn, PORTxn} = 0b00) သို့မဟုတ် output မြင့်မားသောပြည်နယ် ({DDxn, PORTxn} = 0b10) တစ်ခုခုကိုအသုံးပြုရမည်။
ဇယား ၂-၄ pin ကိုတန်ဖိုးထိန်းချုပ်မှုအချက်ပြအကျဉ်းချုပ်။
ဇယား ၁၀-၁။ Port Pin Configurations
DDxn | Portxn | PUD
(MCUCR တွင်) |
I/O | ဆွယ် | မှတ်ချက် |
0 | 0 | X | ထည့်သွင်းခြင်း။ | မရှိ | သုံးပြည်နယ် (ဟိုင်းဇက်) |
0 | 1 | 0 | ထည့်သွင်းခြင်း။ | ဟုတ်ကဲ့ | extx လျှင် Pxn သည်လက်ရှိရင်းမြစ်လိမ့်မည်။ အနိမ့်ဆွဲ။ |
0 | 1 | 1 | ထည့်သွင်းခြင်း။ | မရှိ | သုံးပြည်နယ် (ဟိုင်းဇက်) |
1 | 0 | X | အထွက် | မရှိ | output နိမ့်ကျ |
1 | 1 | X | အထွက် | မရှိ | output အမြင့် (ရင်းမြစ်) |
Pin Value ကိုဖတ်ခြင်း
Data Direction bit DDxn ၏ setting ကိုအမှီမပြုဘဲ port pin ကို PINxn Register bit မှတဆင့်ဖတ်နိုင်သည်။ ပြထားတဲ့အတိုင်း ပုံ ၂-၁, PINxn မှတ်ပုံတင် bit နဲ့ရှေ့တံခါးကျင်တစ် ဦး synchronizer ပါဝင်သည်။ အကယ်၍ physical pin သည် internal clock ၏အစွန်းတွင်တန်ဖိုးပြောင်းလဲသွားလျှင်၎င်းသည် metastability ကိုရှောင်ရှားရန်လိုအပ်သော်လည်း၎င်းသည်နှောင့်နှေးမှုကိုဖြစ်စေသည်။ ပုံ ၂-၁ ပြင်ပတွင် အသုံးပြုထားသော ပင်နံပါတ်တန်ဖိုးကို ဖတ်သည့်အခါ ထပ်တူပြုခြင်း၏ အချိန်ဇယားကို ပြသည်။ အများဆုံးနှင့် အနိမ့်ဆုံး ပြန့်ပွားမှုနှောင့်နှေးမှုများကို tpd၊max နှင့် tpd၊min အသီးသီးဖော်ပြသည်။
system clock ၏ပထမ ဦး ဆုံးကျဆင်းနေသောအစွန်းအပြီးမကြာမီစတင်မည့်အချိန်ကိုစဉ်းစားပါ။ SYNC LATCH အချက်ပြ၏ shaded area မှညွှန်ပြသည့်အတိုင်းနာရီသည်နိမ့်ကျသောအခါတံခါးပိတ်။ ပိတ်ထားပြီးနာရီမြင့်သောအခါပွင့်လင်းမြင်သာသည်။ system clock အနိမ့်ကျသောအခါ signal value သည် latched ဖြစ်နေသည်။ ၎င်းသည်အပြုသဘောဆောင်သောနာရီအစွန်း၌ PINxn မှတ်ပုံတင်သို့နာရီ ၀ င်သွားသည်။ tpd, max နှင့် tpd, min နှစ်ခုမြှားကညွှန်ပြသကဲ့သို့, pin ကိုအပေါ်တစ်ခုတည်း signal ကိုအကူးအပြောင်းအခိုင်အမာ၏အချိန်ပေါ်မူတည်။ ½နှင့်1½စနစ်နာရီကာလအကြားနှောင့်နှေးပါလိမ့်မည်။
ဆော့ဖ်ဝဲသတ်မှတ်ထားသော pin ကိုတန်ဖိုးပြန်ဖတ်သောအခါ၊ ညွှန်ပြသည့်အတိုင်း nop ညွှန်ကြားချက်ကိုထည့်ရမည် ပုံ ၂-၁။ ထွက်ညွှန်ကြားချက်သည်“ SYNC LATCH” signal ကိုနာရီ၏အပြုသဘောဆောင်သောအစွန်းတွင်သတ်မှတ်သည်။ ဤကိစ္စတွင်ခုနှစ်, synchronizer မှတဆင့် tpd နှောင့်နှေးတ ဦး တည်းစနစ်နာရီကာလဖြစ်ပါတယ်။
အောက်ပါကုဒ် example သည် port B pin 0 နှင့် 1 high၊ 2 နှင့် 3 low ကိုသတ်မှတ်နည်းကိုပြသပြီး port pin 4 တွင်သတ်မှတ်ထားသော pull-up ကိုထည့်သွင်းခြင်းဖြင့် port pin များကို 5 မှ 4 သို့သတ်မှတ်သတ်မှတ်ပေးသည်။ ရရှိလာသော pin values များကိုထပ်မံဖတ်ရှုသော်လည်း၊ ယခင်က ဆွေးနွေးခဲ့သည့်အတိုင်း၊ ပင်အချို့အတွက် မကြာသေးမီက သတ်မှတ်ထားသော တန်ဖိုးကို ပြန်လည်ဖတ်ရှုနိုင်စေရန် nop ညွှန်ကြားချက်ကို ထည့်သွင်းထားသည်။
Assembly Code Example(၄) |
…
; ဆွဲအားကို သတ်မှတ်ပြီး အထွက်နှုန်းကို မြင့်မားစွာ သတ်မှတ်ပါ။ ; ဆိပ်ကမ်းပင်နံပါတ်များအတွက် လမ်းညွှန်ချက်များကို သတ်မှတ်ပါ။ ldi r16,(1<<PB4)|(1<<PB1)|(1<<PB0) ldi r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0) PORTB,r16 ထွက်သည်။ DDRB,r17 ထွက်သည်။ ; ထပ်တူပြုခြင်းအတွက် nop ကိုထည့်ပါ။ မဟုတ်ဘူး ; port pins ကိုဖတ်ပါ။ r16၊ PINB တွင် … |
မှတ်ချက်- စည်းဝေးပွဲပရိုဂရမ်အတွက်၊ ပင်နံပါတ် 0၊ 1 နှင့် 4 တွင် လမ်းညွှန်ဘစ်များကို မှန်မှန်ကန်ကန်သတ်မှတ်ပြီး ဘစ် 2 နှင့် 3 ကို အနိမ့်ဆုံးအဖြစ် သတ်မှတ်ပြီး ဘစ် 0 ကို ပြန်လည်သတ်မှတ်ခြင်းအထိ အချိန်ကိုလျှော့ချရန်အတွက် ယာယီမှတ်ပုံတင်ခြင်းနှစ်ခုကို အသုံးပြုပါသည်။ သန်မာမြင့် ယာဉ်မောင်းများအဖြစ် ၁။
C Code အတထွample |
လက်မှတ်မထိုးထားသော char i;
… /* ဆွဲအားကို သတ်မှတ်ပြီး အထွက်နှုန်းကို မြင့်မားစွာ သတ်မှတ်ပါ */ /* ပို့တ်တံများအတွက် လမ်းညွှန်ချက်များကို သတ်မှတ်ပါ */ PORTB = (1< DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0); /* ထပ်တူပြုခြင်းအတွက် nop ကိုထည့်ပါ*/ _NOP (); /* ပို့တ်တံများကို ဖတ်ရန် */ i = PINB; … |
ဒီဂျစ်တယ် Input Enable နှင့် Sleep Modes
တွင်ပြထားသည့်အတိုင်း ပုံ ၂-၁ဒစ်ဂျစ်တယ်ထည့်သွင်းခြင်းအချက်ပြမှုသည် cl ဖြစ်နိုင်သည်။ampschmitt-trigger ၏ input တွင် မြေဖို့သည်။ ပုံတွင်ဖော်ပြထားသော SLEEP အချက်ပြမှုကို ပါဝါချွေတာသည့်မုဒ်တွင် MCU Sleep Controller မှ သတ်မှတ်ပေးထားပြီး အချို့သော input signal များ လွင့်နေပါက သို့မဟုတ် VCC/2 နှင့် နီးကပ်သော analog signal အဆင့်ရှိပါက ပါဝါသုံးစွဲမှု မြင့်မားနေပါသည်။
external interrupt pins များအဖြစ် port pins ကို enable လုပ်ရန် SLEEP ကို override လုပ်တယ်။ External Interrupt တောင်းဆိုမှုအားမရလျှင် SLEEP သည်၎င်း pins အတွက်လည်းတက်သည်။ မှာပြထားတဲ့အတိုင်း SLEEP ကိုအခြားအခြားလုပ်ဆောင်မှုအမျိုးမျိုးဖြင့်လည်းအစားထိုးသည် စာမျက်နှာ ၅၇ ရှိ“ အခြားဆိပ်ကမ်းလုပ်ဆောင်ချက်များ”.
အကယ်၍ ပြင်ပနှောက်ယှက်မှုကို ဖွင့်မထားသော်လည်း ပြင်ပနှောက်ယှက်မှုကို ဖွင့်ထားစဉ်တွင် "မြင့်တက်လာသောအစွန်း၊ အနားသတ်ပေါ်မှ နှောင့်ယှက်ခြင်း သို့မဟုတ် ပင်တွင် လော့ဂျစ်ပြောင်းလဲမှုတစ်ခုခု" အဖြစ် ပြင်ဆင်သတ်မှတ်ထားသည့် အပြိုင်အဆိုင် ပြင်ပကြားဖြတ်ပင်နံပါတ် ("တစ်ခု") တွင် ရှိနေပါက၊ အထက်ဖော်ပြပါ အိပ်စက်ခြင်းမုဒ်မှ ပြန်လည်စတင်သည့်အခါ cl အဖြစ်သတ်မှတ်ပါ။ampဤအိပ်စက်ခြင်းမုဒ်တွင် ပါဝင်ခြင်းသည် တောင်းဆိုထားသော ယုတ္တိဗေဒပြောင်းလဲမှုကို ဖြစ်ပေါ်စေပါသည်။
ချိတ်ဆက်မှုမရှိတံသင်
အကယ်၍ အချို့သောတံသင်များကိုအသုံးမပြုပါက၎င်းတံသင်များကိုသတ်မှတ်ထားသောအဆင့်ရှိရန်သေချာစွာအကြံပြုထားပါသည်။ အထက်တွင်ဖော်ပြခဲ့သည့်အတိုင်းနက်ရှိုင်းသောအိပ်စက်ခြင်းစနစ်များတွင်ဒီဂျစ်တယ်သွင်းအားစုအများစုကိုပိတ်ထားသည်ဆိုသော်ငြားလည်းဒီဂျစ်တယ်သွင်းအားစုများထားရှိသည့်အခြား mode များ (Reset, Active mode နှင့် Idle mode) တို့တွင် floating inputs များကိုရှောင်ရှားသင့်သည်။
အသုံးမပြုသော pin ၏သတ်မှတ်ထားသောအဆင့်ကိုသေချာစေရန်အရိုးရှင်းဆုံးနည်းလမ်းမှာ internal pull-up ကိုဖွင့်ရန်ဖြစ်သည်။ ဤကိစ္စတွင်၊ ပြန်လည်သတ်မှတ်နေစဉ်အတွင်း ဆွဲငင်အား ပိတ်သွားပါမည်။ ပြန်လည်သတ်မှတ်စဉ်အတွင်း ပါဝါသုံးစွဲမှုနည်းခြင်းသည် အရေးကြီးပါက၊ ပြင်ပဆွဲအား သို့မဟုတ် ဆွဲချခြင်းကို အသုံးပြုရန် အကြံပြုထားသည်။ အသုံးမပြုသော ပင်နံပါတ်များကို VCC သို့မဟုတ် GND သို့ တိုက်ရိုက်ချိတ်ဆက်ခြင်းအား မထောက်ခံပါ၊ အဘယ်ကြောင့်ဆိုသော် ပင်ကို အထွက်တစ်ခုအဖြစ် မတော်တဆ configure လုပ်ထားလျှင် ၎င်းသည် အလွန်အကျွံ လျှပ်စီးကြောင်းများ ဖြစ်ပေါ်စေနိုင်ပါသည်။
အခြား Port Functions များ
port pin အများစုသည် digital digital I / Os များအပြင်အခြား function များလည်းရှိသည်။ ပုံ ၂-၁ ရိုးရှင်းသောထံမှ port pin ကိုထိန်းချုပ်အချက်ပြပုံကိုပြသည် ပုံ ၂-၁ အခြားလုပ်ဆောင်ချက်များကိုအားဖြင့်ဖျက်သိမ်းနိုင်ပါတယ်။ Overriding အချက်ပြများသည် port pins အားလုံးတွင်ရှိနိုင်ခြင်းမရှိသော်လည်း AVR microcontroller မိသားစုရှိ port pin အားလုံးသက်ဆိုင်သည့်ယေဘုယျဖော်ပြချက်တစ်ခုဖြစ်သည်။
ဇယား ၁၀-၂။ Alternate Functions အတွက် Overriding Signals ၏ ယေဘူယျဖော်ပြချက်
အချက်ပြအမည် | နာမည်အပြည့်အစုံ | ဖော်ပြချက် |
ပုသိမ် | Pull-up Override Enable လုပ်ပါ | အကယ်၍ ဤအချက်ပြကိုသတ်မှတ်ထားပါက pull-up enable သည် PUOV signal ကိုထိန်းချုပ်သည်။ အကယ်၍ ဒီ signal ကိုရှင်းပြီးရင် pull-up ကို enable လုပ်တယ်
{DDxn, PORTxn, PUD} = 0b010 ။ |
PUOV | Pull-up, Override Value ကို | အကယ်၍ PUOE ကိုသတ်မှတ်ထားပါက၊ DDxn, PORTxn နှင့် PUD မှတ်ပုံတင်သတ်မှတ်ချက်များမည်သို့ပင်ရှိစေကာမူ၊ PUOV ကိုသတ်မှတ် / ရှင်းလင်းသည့်အခါ pull-up ကိုဖွင့် / ပိတ်မည်။ |
DDOE | ဒေတာလမ်းညွှန် Override Enable | ဒီ signal ကိုသတ်မှတ်ထားလျှင်, Output Driver Enable ကို DDOV signal ကိုထိန်းချုပ်ထားသည်။ အကယ်၍ ဒီ signal ကိုရှင်းပြီးရင် DDxn Register bit သည် Output driver ကို enable လုပ်တယ်။ |
DDOV | ဒေတာလမ်းညွှန် Override Value ကို | DDOE ကိုသတ်မှတ်ထားပါက DDOVn သတ်မှတ် / ဖယ်ရှားလိုက်သောအခါ DDxn Register bit ၏ setting နှင့် ပတ်သက်၍ Output Driver ကို enable / disable လုပ်ထားသည်။ |
မင်္ဂလာပါ | Port Value ကို Override Enable လုပ်ပါ | အကယ်၍ ဒီ signal ကိုသတ်မှတ်ပြီး Output Driver ကို enable လုပ်ထားတယ်ဆိုရင်၊ port value ကို PVOV signal ဖြင့်ထိန်းချုပ်ထားတယ်။ PVOE ကိုရှင်းလင်းပြီး Output Driver ကိုဖွင့်ထားပါက Port Value ကို PORTxn Register bit ဖြင့်ထိန်းချုပ်သည်။ |
မင်္ဂလာပါ | ဆိပ်ကမ်း Value ကို Override Value ကို | PVOE ကိုသတ်မှတ်ပါက PORTxn Register bit ၏ setting ကိုမည်သို့ပင်ဖြစ်ပါစေ၊ port value ကို PVOV ဟုသတ်မှတ်သည်။ |
PTOE | Port Toggle Override Enable လုပ်ပါ | PTOE သတ်မှတ်ထားပါက PORTxn Register bit သည်ပြောင်းပြန်သွားသည်။ |
DIEOE ပါ | ဒီဂျစ်တယ် Input Override Enable လုပ်ပါ | ဒီ bit ကိုသတ်မှတ်ထားတယ်ဆိုရင်ဒီဂျစ်တယ် Input Enable ကို DIEOV signal ကထိန်းချုပ်ထားတယ်။ အကယ်၍ ဒီ signal ကိုရှင်းပြီးရင် Digital Input Enable ကို MCU state (Normal mode, sleep mode) ကဆုံးဖြတ်တယ်။ |
DIEOV | ဒီဂျစ်တယ် Input Override Value ကို Enable | DIEOE ကိုသတ်မှတ်သည်ဆိုပါက MCU ပြည်နယ် (ပုံမှန်စနစ်၊ အိပ်စက်ခြင်းမုဒ်) မည်သို့ပင်ဖြစ်ပါစေ၊ DIEOV ကိုသတ်မှတ် / ရှင်းလင်းသောအခါဒစ်ဂျစ်တယ် Input ကို enable / disable လုပ်ထားသည်။ |
DI | ဒီဂျစ်တယ်ထည့်သွင်းမှု | ၎င်းသည်အခြားလုပ်ဆောင်ချက်များကိုအတွက် Digital Input ဖြစ်သည်။ ပုံတွင်၊ signal သည် schmitt-trigger ၏ output ကိုဆက်သွယ်ထားသော်လည်း၊ Digital Input အား clock source အဖြစ်အသုံးမပြုပါက alternate function ပါသော module သည်၎င်း၏ကိုယ်ပိုင် synchronizer ကိုအသုံးပြုလိမ့်မည်။ |
AIO | analog input ကို / output ကို | ၎င်းသည်အခြားလုပ်ဆောင်ချက်များမှ Analog Input / Output ဖြစ်သည်။ အဆိုပါ signal ကို pad ပါတိုက်ရိုက်ချိတ်ဆက်နှင့် bi- directionally သုံးနိုင်သည်။ |
အောက်ဖော်ပြပါပုဒ်မခွဲများသည် port တစ်ခုစီအတွက် alternate functions များကိုမကြာမီဖော်ပြပြီး overriding အချက်ပြများသည် function ကို alternate function နှင့်ဆက်စပ်သည်။ နောက်ထပ်အသေးစိတ်အတွက်အခြား function ကိုဖော်ပြချက်ရည်ညွှန်းကိုးကားပါ။
ဆိပ်ကမ်း B ၏အခြား Functions များ
အခြားလုပ်ဆောင်ချက်ရှိသည့် Port B တံသင်ကိုပြသည် ဇယား ၂-၄.
ဇယား ၁၀-၃။ Port B Pins ၏ အခြားလုပ်ဆောင်ချက်များ
Port Pin | အစားထိုးလုပ်ဆောင်ချက် |
PB5 | ![]() ပြန်လည်: Reset ပင် pin dW: debugWIRE I / O ADC0: ADC Input Channel ကို 0 PCINT5: ရင်းမြစ် ၅ ပင်ပြောင်းလဲခြင်း Pin |
PB4 | XTAL2: Crystal လှို Output CLKO: စနစ်နာရီ Output ADC2: ADC Input Channel 2
OC1B: Timer / Counter1 ပြိုင်ပွဲ B ကိုရလဒ် PCINT4 နှင့်နှိုင်းယှဉ်ပါ။ Pin Change Interrupt 0, Source 4 |
PB3 | XTAL1- Crystal Oscillator ထည့်သွင်းမှု CLKI- ပြင်ပနာရီ ထည့်သွင်းမှု ADC3- ADC ထည့်သွင်းမှု ချန်နယ် 3
OC1B: အပိုဆောင်း Timer / Counter1 နှိုင်းယှဉ်မှု B ခ Output PCINT3: Pin Change Interrupt 0၊ ရင်းမြစ် ၃ နှင့်နှိုင်းယှဉ်ပါ |
PB2 | SCK: Serial Clock Input ADC1: ADC Input Channel 1
T0: Timer / Counter0 နာရီရင်းမြစ် USCK: USI Clock (သုံးဝါယာကြိုးအသုံးစနစ်) SCL: USI နာရီ (ဝါယာကြိုးနှစ်မျိုး) INT0: ပြင်ပကြားဖြတ် 0 ထည့်သွင်းမှု PCINT2: ပင်ရင်းပြောင်းလဲမှုပြတ်တောက် 0၊ ရင်းမြစ် ၂ |
PB1 | MISO: SPI Master Data Input / Slave Data Output AIN1: နှိုင်းယှဉ်နှိုင်းယှဉ်၊ အနိမ့်သွင်းအားစု OC0B: Timer / Counter0 Match B Output OC1A: Timer / Counter1 နှိုင်းယှဉ်လိုက်ဖက်သည့်ရလဒ်တစ်ခုလုပ်ခြင်း USI Data Output (သုံးဝါယာကြိုးအသုံးစနစ်) PCINT1: Pin Change Interrupt 0, ရင်းမြစ် 1 |
PB0 | MOSI :: SPI Master Data Output / Slave Data Input AIN0: နှိုင်းယှဉ်နှိုင်းယှဉ်ခြင်း၊
OC0A- Timer/Counter0 ပွဲစဉ် A အထွက်ကို နှိုင်းယှဉ်ပါ။ OC1A: အပိုဆောင်း Timer / Counter1 နှိုင်းယှဉ်မှုတစ်ခုနှင့်နှိုင်းယှဉ်ပါက DI: USI ဒေတာထည့်သွင်းမှု (သုံးဝါယာကြိုးအသုံးစနစ်) SDA: USI အချက်အလက်ထည့်သွင်းမှု (ဝါယာကြိုးနှစ်မျိုး) AREF - ပြင်ပအလိုင်းအလိုက်ကိုးကားစရာ PCINT0: ပင်ရင်းပြောင်းလဲမှုပြတ်တောက် 0၊ ရင်းမြစ် ၀၁ |
ဆိပ်ကမ်း B, Bit 5 - ပြန်လည်စတင် / dW / ADC0 / PCINT5
ပြန်လည်စတင်: ပြင်ပပြန်လည်စတင် input ကိုတက်ကြွစွာနိမ့်သည်နှင့် unprogramming ("1") RSTDISBL ဖျူးအားဖြင့် enabled ။ pin ကို RESET pin အဖြစ်အသုံးပြုသောအခါ Pullup သည် activate လုပ်ပြီး output driver နှင့် digital input ကိုပိတ်ထားသည်။
dW: debugWIRE Enable (DWEN) ဖျူးကိုပရိုဂရမ်ပြုလုပ်ပြီးသော့ခတ်သည်ပရိုဂရမ်များကိုပြုလုပ်သောအခါပစ်မှတ်စက်အတွင်းရှိ debugWIRE စနစ်ကိုသက်ဝင်စေသည်။ RESET port pin သည် pull-up ကို အသုံးပြု၍ two-directional I / O pin နှင့် wire-AND (open-drain) အနေဖြင့် configure လုပ်ပြီး target နှင့် emulator အကြားဆက်သွယ်ရေးတံခါးပေါက်ဖြစ်လာသည်။
ADC0- Analog to Digital Converter၊ Channel 0။
PCINT5: ပင်ရင်းပြောင်းလဲခြင်းကိုပြောင်းလဲခြင်း Pin Pin ၅ ။
ဆိပ်ကမ်း B, Bit 4 - XTAL2 / CLKO / ADC2 / OC1B / PCINT4
XTAL2: Chip Clock Oscillator pin ၂။ အတွင်းပိုင်း calibrateble RC Oscillator နှင့်ပြင်ပနာရီ မှလွဲ၍ အားလုံးသော chip clock ရင်းမြစ်များအတွက် clock pin အဖြစ်အသုံးပြုသည်။ clock pin အနေဖြင့်အသုံးပြုသောအခါ၎င်း pin ကို I / O pin အဖြစ်အသုံးမပြုပါ။ Internal clock calibratable RC Oscillator သို့မဟုတ် External clock ကို Chip clock ရင်းမြစ်များအနေဖြင့်အသုံးပြုသောအခါ PB2 သည်ပုံမှန် I / O pin အဖြစ်ဆောင်ရွက်သည်။
CLKO: အဆိုပါ devided system ကိုနာရီ pin ကို PB4 အပေါ် output ကိုနိုင်ပါတယ်။ PORTB4 နှင့် DDB4 ဆက်တင်များမည်သို့ပင်ရှိပါစေ CKOUT Fuse ကိုပရိုဂရမ်ပြုထားပါကခွဲထားသော system clock သည်ထွက်လိမ့်မည်။ reset လုပ်တဲ့အချိန်မှာ output လည်းထွက်လာလိမ့်မယ်။
ADC2- Analog to Digital Converter၊ Channel 2။
OC1B: Output Match Match ကိုနှိုင်းယှဉ်ပါ။ PB4 pin သည် Timer / Counter1 အတွက် Output Output (DDB4 set) အနေဖြင့် Match B ကိုနှိုင်းယှဉ်ပါကပြင်ပ output အဖြစ်အသုံးပြုနိုင်သည်။ OC1B pin သည် PWM mode timer လုပ်ဆောင်ချက်၏ output pin ဖြစ်သည်။
PCINT4: ပင်ရင်းပြောင်းလဲခြင်းကိုပြောင်းလဲခြင်း Pin Pin ၅ ။
ဆိပ်ကမ်း B ကို, Bit 3 - XTAL1 / CLKI / ADC3 / OC1B / PCINT3
XTAL1: Chip Clock Oscillator ပင် ၁။ အတွင်းပိုင်း calibrateble RC oscillator မှအပအားလုံး chip နာရီရင်းမြစ်များအတွက်အသုံးပြုသည်။ clock pin အနေဖြင့်အသုံးပြုသောအခါ၎င်း pin ကို I / O pin အဖြစ်အသုံးမပြုပါ။
CLKI - ပြင်ပနာရီအရင်းအမြစ်မှနာရီထည့်သွင်းခြင်းကိုကြည့်ပါ စာမျက်နှာ ၂၆ ရှိ“ ပြင်ပနာရီ”.
ADC3- Analog to Digital Converter၊ Channel 3။
OC1B: Inverted Output Match Match ကိုနှိုင်းယှဉ်ပါ။ PB3 pin သည် Timer / Counter1 အတွက် Output Output (DDB3 set) အဖြစ်သတ်မှတ်သောအခါ Match Match နှိုင်းယှဉ်နိုင်သည်။ OC1B pin သည် PWM mode timer လုပ်ဆောင်ချက်အတွက် inverted output pin ဖြစ်သည်။
PCINT3: ပင်ရင်းပြောင်းလဲခြင်းကိုပြောင်းလဲခြင်း Pin Pin ၅ ။
ဆိပ်ကမ်း B, Bit 2 - SCK / ADC1 / T0 / USCK / SCL / INT0 / PCINT2
SCK: SPI ရုပ်သံလိုင်းအတွက် Master နာရီ output၊ Slave Clock input pin ။ SPI ကို Slave တစ်ခုအနေဖြင့်ဖွင့်ထားသောအခါ၎င်း pin ကို DDB2 ၏အခြေအနေမည်သို့ပင်ရှိစေကာမူ input တစ်ခုအနေဖြင့်ပြုပြင်ထားသည်။ SPI ကိုမာစတာတစ်ခုအနေနှင့်အသုံးပြုပါကဤ pin ၏အချက်အလက်လမ်းညွှန်ကို DDPB2 မှထိန်းချုပ်သည်။ SPI မှ input ကို pin ကိုအတင်းဖိအားပေးသောအခါ၊ pull-up ကို PORTB2 bit မှထိန်းချုပ်နိုင်သည်။
ADC1- Analog to Digital Converter၊ Channel 1။
T0: Timer / Counter0 တန်ပြန်အရင်းအမြစ်။
USCK - သုံးဝါယာကြိုးစနစ် Universal Serial Interface Clock
SCL: Two-wire mode ကို USI Two-wire Mode အတွက် Serial Clock ။
INT0: ပြင်ပကြားဖြတ်အရင်းအမြစ် 0 ။
PCINT2: ပင်ရင်းပြောင်းလဲခြင်းကိုပြောင်းလဲခြင်း Pin Pin ၅ ။
ဆိပ်ကမ်း B, Bit 1 - MISO / AIN1 / OC0B / OC1A / DO / PCINT1
MISO - မာစတာဒေတာထည့်သွင်းမှု၊ SPI ရုပ်သံလိုင်းအတွက် Slave Data output pin ။ SPI ကို Master အနေဖြင့်ဖွင့်ထားပါက DDB1 ၏အခြေအနေမည်သို့ပင်ရှိစေကာမူဤ pin ကိုထည့်သွင်းမှုတစ်ခုအဖြစ် configure လုပ်သည်။ SPI ကို Slave အဖြစ် enable လုပ်သောအခါဤ pin ၏ဒေတာလမ်းကြောင်းကို DDB1 မှထိန်းချုပ်သည်။ SPI မှ input ကို pin ကိုအတင်းဖိအားပေးသောအခါ၊ pull-up ကို PORTB1 bit မှထိန်းချုပ်နိုင်သည်။
AIN1: analog နှိုင်းယှဉ်အနုတ်လက္ခဏာ input ကို။ Port Pinn ကို Configure လုပ်ပါ။ အတွင်းပိုင်း pull-up ဖြင့် input ကိုဒီဂျစ်တယ်ဆိပ်ကမ်းလုပ်ငန်းဆောင်တာကို Analog Comparator ၏လုပ်ဆောင်မှုနှင့် ၀ င်ရောက်စွက်ဖက်ခြင်းမရှိအောင်ပိတ်ထားပါ။
OC0B: output ကိုပွဲစဉ် output ကိုနှိုင်းယှဉ်။ PB1 pin သည် Timer / Counter0 အတွက် Match B. နှိုင်းယှဉ်မှုအတွက်ပြင်ပ output တစ်ခုအဖြစ်အသုံးပြုနိုင်သည်။ PB1 pin သည်ဤလုပ်ဆောင်ချက်ကိုဆောင်ရွက်ရန် output (DDB1 set (one)) အနေဖြင့်ပြုပြင်ရမည်။ OC0B pin သည် PWM mode timer လုပ်ဆောင်ချက်အတွက် output pin ဖြစ်သည်။
OC1A: Output Match Match ကိုနှိုင်းယှဉ်ပါ။ PB1 pin သည် Timer / Counter1 အတွက် Output Output (DDB1 set) အနေဖြင့် Match B ကိုနှိုင်းယှဉ်လျှင်နှိုင်းယှဉ်နိုင်သည်။ OC1A pin သည်လည်း PWM mode timer လုပ်ဆောင်ချက်၏ output pin ဖြစ်သည်။
DO: သုံးဝါယာကြိုး mode ကို Universal Serial Interface ကိုဒေတာ output ကို။ three-wire mode Data output သည် PORTB1 တန်ဖိုးကိုကျော်လွန်ပြီး DDB1 ကိုသတ်မှတ်သည့်အခါ data direction bit DDB1 ကို port သို့မောင်းနှင်သည်။ PORTB1 သည်ဆွဲအားကိုဖွင့်ထားဆဲဖြစ်ပြီး၊ ညှနျကွားမှု input ကိုထည့်သွင်းပြီး PORTBXNUMX ကိုသတ်မှတ်ထားလျှင် (တစ်ခု) ရှိသည်။
PCINT1: ပင်ရင်းပြောင်းလဲခြင်းကိုပြောင်းလဲခြင်း Pin Pin ၅ ။
ဆိပ်ကမ်း B, bit 0 - MOSI / AIN0 / OC0A / OC1A / DI / SDA / AREF / PCINT0
MOSI: SPI ရုပ်သံလိုင်းအတွက် SPI မာစတာဒေတာ၊ Slave ဒေတာထည့်သွင်းမှု။ SPI ကို Slave တစ်ခုအနေဖြင့်ဖွင့်ထားသောအခါ၎င်း pin ကို DDB0 အခြေအနေမည်သို့ပင်ရှိစေကာမူထည့်သွင်းမှုတစ်ခုအဖြစ် configure လုပ်သည်။ SPI ကိုမာစတာတစ်ခုအနေနှင့်အသုံးပြုပါကဤ pin ၏အချက်အလက်လမ်းညွှန်ကို DDB0 မှထိန်းချုပ်သည်။ SPI မှ input ကို pin ကိုအတင်းဖိအားပေးသောအခါ၊ pull-up ကို PORTB0 bit ဖြင့်ထိန်းချုပ်နိုင်သည်။
AIN0: analog နှိုင်းယှဉ်အပြုသဘော input ကို။ Port Pinn ကို Configure လုပ်ပါ။ အတွင်းပိုင်း pull-up ဖြင့် input ကိုဒီဂျစ်တယ်ဆိပ်ကမ်းလုပ်ငန်းဆောင်တာကို Analog Comparator ၏လုပ်ဆောင်မှုနှင့် ၀ င်ရောက်စွက်ဖက်ခြင်းမှပိတ်ထားပါ။
OC0A: output ကိုပွဲစဉ် output ကိုနှိုင်းယှဉ်။ PB0 pin သည် Timer / Counter0 အတွက် Output Output အနေဖြင့်အသုံးပြုနိုင်ပြီး Output Output (DDB0 set (one)) အနေဖြင့် Match A နှင့်နှိုင်းယှဉ်နိုင်သည်။ OC0A pin သည်လည်း PWM mode timer လုပ်ဆောင်ချက်၏ output pin ဖြစ်သည်။
OC1A: Inverted Output Match Match ကိုနှိုင်းယှဉ်ပါ။ PB0 pin သည် Timer / Counter1 အတွက် Output Output (DDB0 set) ကို configure လုပ်သည့်အခါ Match B နှိုင်းယှဉ်နိုင်သည်။ OC1A pin သည်လည်း PWM mode timer လုပ်ဆောင်ချက်အတွက် inverted output pin ဖြစ်သည်။
SDA: Two-wire mode Serial Interface Data ။
AREF- ADC အတွက် ပြင်ပ Analog ရည်ညွှန်းချက်။ ပင်ကို ပြင်ပရည်ညွှန်းချက် သို့မဟုတ် Internal Vol အဖြစ်အသုံးပြုသောအခါ PB0 တွင် ဆွဲယူခြင်းနှင့် အထွက်ဒရိုင်ဘာကို ပိတ်ထားသည်။tage AREF pin ရှိ ပြင်ပ capacitor နှင့် ရည်ညွှန်းချက်။
di: USI သုံးဝါယာကြိုး mode မှာဒေတာထည့်သွင်း။ USI Three-wire mode သည်ပုံမှန် port functions များကိုမပယ်ဖျက်နိုင်ပါ၊ ထို့ကြောင့် DI function အတွက် input ကို configure လုပ်ထားရပါမည်။
PCINT0: ပင်ရင်းပြောင်းလဲခြင်းကိုပြောင်းလဲခြင်း Pin Pin ၅ ။
ဇယား ၂-၄ နှင့် ဇယား ၂-၄ Port B ၏အခြားလုပ်ဆောင်ချက်များကိုပြပါ အပေါ် 10-5 ပုံ စာမျက်နှာ ၈.
ဇယား ၁၀-၄။ PB[10:4] တွင် အခြားလုပ်ဆောင်ချက်များအတွက် အချက်ပြမှုများ
အချက်ပြအမည် | PB5 / ပြန်လည်စတင် / ADC0 / PCINT5 | PB4/ADC2/XTAL2/ OC1B/PCINT4 | PB3/ADC3/XTAL1/ OC1B/PCINT3 |
ပုသိမ် | ![]() |
0 | 0 |
PUOV | 1 | 0 | 0 |
DDOE | RSTDISBL(၄) • DWEN(၄) | 0 | 0 |
DDOV | debugWire ထုတ်လွှင့် | 0 | 0 |
မင်္ဂလာပါ | 0 | OC1B Enable လုပ်ပါ | ![]() OC1B Enable လုပ်ပါ |
မင်္ဂလာပါ | 0 | OC1B | OC1B |
PTOE | 0 | 0 | 0 |
DIEOE ပါ | ![]() RSTDISBL(၄) + (PCINT5 • PCIE + ADC0D) |
PCIE + ADC4D PCINT2 | PCIE + ADC3D PCINT3 |
DIEOV | ADC0D | ADC2D | ADC3D |
DI | PCINT5 input ကို | PCINT4 input ကို | PCINT3 input ကို |
AIO | Input, ADC0 Input Reset | ADC2 input ကို | ADC3 input ကို |
မှတ်ချက်- Fuse သည် “0” (ပရိုဂရမ်လုပ်ထားသည်)။
ဇယား ၁၀-၄။ PB[10:5] တွင် အခြားလုပ်ဆောင်ချက်များအတွက် အချက်ပြမှုများ
အချက်ပြအမည် | PB2/SCK/ADC1/T0/ USCK/SCL/INT0/PCINT2 | PB1/MISO/DO/AIN1/ OC1A/OC0B/PCINT1 | PB0/MOSI/DI/SDA/AIN0/AR EF/OC1A/OC0A/
PCINT0 |
ပုသိမ် | USI_TWO_WIRE | 0 | USI_TWO_WIRE |
PUOV | 0 | 0 | 0 |
DDOE | USI_TWO_WIRE | 0 | USI_TWO_WIRE |
DDOV | (USI_SCL_HOLD + PORTB2) • DDB2 | 0 | ![]() ![]() (SDA + PORTB0) • DDB0 |
မင်္ဂလာပါ | USI_TWO_WIRE • DDB2 | OC0B + OC1A Enable + USI_THREE_WIRE | ![]() OC0A + OC1A Enable + (USI_TWO_WIRE) DDB0) |
မင်္ဂလာပါ | 0 | OC0B + OC1A + DO | ![]() OC0A + OC1A |
PTOE | USITC | 0 | 0 |
DIEOE ပါ | PCIE2 • PCIE + ADC1D + USISIE | PCIE + PCIE + AIN1D | PCINT0 • PCIE + AIN0D + USISIE |
DIEOV | ADC1D | AIN1D | AIN0D |
DI | T0 / USCK / SCL / INT0 /
PCINT2 input ကို |
PCINT1 input ကို | DI / SDA / PCINT0 Input |
AIO | ADC1 input ကို | analog နှိုင်းယှဉ်အနုတ်လက္ခဏာ input ကို | analog နှိုင်းယှဉ်အပြုသဘော input ကို |
ဖော်ပြချက်မှတ်ပုံတင်ရန်
MCUCR - MCU ထိန်းချုပ်မှုမှတ်ပုံတင်
နည်းနည်း | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
က0x35 | BODS | PUD | SE | SM1 | SM0 | ဘော်ဒီ | ISC01 | ISC00 | MCUCR |
ဖတ်/ရေး | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
ကနဦးတန်ဖိုး | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 6 - PUD: Pull-up Disable လုပ်ပါ
ဤ bit သည်တစ်ခုသို့ရေးသောအခါ DDxn နှင့် PORTxn Registers များသည် pull-ups ကို enable လုပ်ရန် configure လုပ်ထားလျှင်ပင် I / O ports ရှိ pull-ups များသည်ပိတ်ဆို့လိမ့်မည် ({DDxn, PORTxn} = 0b01) ။ ကြည့်ပါ စာမျက်နှာ ၅၄ ရှိ `Pin ပြင်ဆင်ခြင်း ' ဒီအင်္ဂါရပ်အကြောင်းပိုမိုအသေးစိတ်သည်။
PORTB - ဆိပ်ကမ်း B အချက်အလက်မှတ်ပုံတင်
နည်းနည်း | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
က0x18 | – | – | PORTB5 | PORTB4 | PORTB3 | PORTB2 | PORTB1 | PORTB0 | PORTB |
ဖတ်/ရေး | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
ကနဦးတန်ဖိုး | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
DDRB - Port B အချက်အလက်လမ်းညွှန်မှတ်ပုံတင်
နည်းနည်း | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
က0x17 | – | – | DDB5 | DDB4 | DDB3 | DDB2 | DDB1 | DDB0 | DDRB |
ဖတ်/ရေး | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
ကနဦးတန်ဖိုး | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
PINB - Port B Input Pins လိပ်စာ
နည်းနည်း | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
က0x16 | – | – | PINB5 | PINB4 | PINB3 | PINB2 | PINB1 | PINB0 | PINB |
ဖတ်/ရေး | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
ကနဦးတန်ဖိုး | 0 | 0 | မရှိ | မရှိ | မရှိ | မရှိ | မရှိ | မရှိ |
PWM နှင့်အတူ 8-bit Timer / Counter0
အင်္ဂါရပ်များ
နှစ်ခုလွတ်လပ်သောရလဒ်ယူနစ်နှိုင်းယှဉ်
နှစ်ဆ Buffered Output ကို Registers နှိုင်းယှဉ်
နှိုင်းယှဉ်ပွဲစဉ် (အလိုအလျောက်ပြန်ဖွင့်ခြင်း) တွင် Timer ကိုရှင်းပါ
ချွတ်ယွင်းချက်, အဆင့်မှန်ကန်သော Pulse အကျယ် Modulator ကို (PWM)
Variable PWM ကာလ
ကြိမ်နှုန်းမီးစက်
အမှီအခိုကင်းသောရင်းမြစ်သုံးခု (TOV0, OCF0A နှင့် OCF0B)
ကျော်view
Timer / Counter0 သည်သီးခြားလွတ်လပ်သော Output နှိုင်းယှဉ်မှုယူနစ်နှစ်ခုနှင့် PWM အထောက်အပံ့ဖြင့်ယေဘုယျရည်ရွယ်ချက် 8-bit Timer / Counter module တစ်ခုဖြစ်သည်။ ၎င်းသည်တိကျသောပရိုဂရမ်စီမံခန့်ခွဲမှုအချိန် (ဖြစ်ရပ်စီမံခန့်ခွဲမှု) နှင့်လှိုင်းမျိုးဆက်ကိုခွင့်ပြုသည်။
8-bit Timer / Counter ၏ရိုးရှင်းသောပုံစံကိုပြသထားသည် ပုံ ၂-၁။ I / O တံသင်၏အမှန်တကယ်နေရာချထားမှုကိုရည်ညွှန်းသည် စာမျက်နှာ ၂ ရှိ“ Pinout ATtiny25 / 45/85”။ I / O bits နှင့် I / O pins များအပါအဝင် CPU သုံးစွဲနိုင်သော I / O Registers၊ စာလုံးမည်းဖြင့်ဖော်ပြထားသည်။ ကိရိယာ - တိကျတဲ့ I / O မှတ်ပုံတင်ခြင်းနှင့်နည်းနည်းတည်နေရာများကိုအောက်မှာဖေါ်ပြထားပါတယ် စာမျက်နှာ ၇၇ တွင်ဖော်ပြချက်မှတ်ပုံတင်ပါ.
Timer/Counter (TCNT0) နှင့် Output Compare Registers (OCR0A နှင့် OCR0B) တို့သည် 8-bit မှတ်ပုံတင်များဖြစ်သည်။ နှောင့်ယှက်တောင်းဆိုမှု (ပုံတွင် Int.Req. အတိုကောက်) အချက်ပြမှုများကို Timer Interrupt Flag Register (TIFR) တွင် မြင်တွေ့နိုင်သည်။ ကြားဖြတ်မှုများအားလုံးကို Timer Interrupt Mask Register (TIMSK) ဖြင့် တစ်ဦးချင်း ဖုံးအုပ်ထားသည်။ TIFR နှင့် TIMSK ကို ပုံတွင် မပြပါ။
အချိန်တိုင်းစက်/ကောင်တာအား အတွင်းပိုင်း၊ ကြိုတင်စကေးစက်မှတစ်ဆင့် သို့မဟုတ် T0 pin ပေါ်ရှိ ပြင်ပနာရီရင်းမြစ်တစ်ခုဖြင့် နာရီပတ်နိုင်သည်။ Clock Select logic block သည် မည်သည့်နာရီရင်းမြစ်နှင့် ၎င်း၏တန်ဖိုးကို တိုးရန် (သို့မဟုတ်) လျှော့ချရန်အတွက် Timer/Counter အသုံးပြုသည့် အစွန်းများကို ထိန်းချုပ်သည်။ နာရီရင်းမြစ်ကို မရွေးချယ်သည့်အခါ အချိန်တိုင်း/ကောင်တာသည် မလှုပ်ရှားပါ။ Clock Select logic မှ output ကို timer clock (clkT0) အဖြစ် ရည်ညွှန်းသည်။
Double buffered Output နှိုင်းယှဉ်စာရင်း (OCR0A နှင့် OCR0B) ကိုအချိန်တိုင်း Timer / Counter တန်ဖိုးနှင့်နှိုင်းယှဉ်သည်။ နှိုင်းယှဉ်မှု၏ရလဒ်ကို Waveform Generator မှ သုံး၍ PWM သို့မဟုတ် Output နှိုင်းယှဉ်တံသင် (OC0A နှင့် OC0B) ပေါ်ရှိကြိမ်နှုန်းအမျိုးမျိုးပြောင်းလဲနိုင်သည်။ စာမျက်နှာ ၆၉ ရှိ“ Output နှိုင်းယှဉ်မှုယူနစ်” ကိုကြည့်ပါ။ အသေးစိတ်အတွက်။ အဆိုပါနှိုင်းယှဉ်ပွဲစဉ်ဖြစ်ရပ်ကိုလည်း Output နှိုင်းယှဉ်ကြားဖြတ်တောင်းဆိုမှုကို generate ဖို့အသုံးပြုနိုင်သည့်နှိုင်းယှဉ်အလံ (OCF0A သို့မဟုတ် OCF0B) ကိုသတ်မှတ်ပါလိမ့်မယ်။
အဓိပ္ပါယ်ဖွင့်ဆိုချက်
ဤကဏ္andတွင်မှတ်ပုံတင်ခြင်းနှင့်နည်းနည်းရည်ညွှန်းခြင်းများကိုယေဘူယျပုံစံဖြင့်ရေးသားထားသည် Timer / Counter နံပါတ်ကို 'n' စာလုံးအသေးဖြင့်အစားထိုးသည်။ ဤကိစ္စတွင် ၀ ။ စာလုံးအသေး 'x' သည် Output နှိုင်းယှဉ်ယူနစ်ကိုအစားထိုးသည်။ ဤကိစ္စတွင်ယူနစ် A နှိုင်းယှဉ်ခြင်းသို့မဟုတ်ယူနစ်ခနှိုင်းယှဉ်ခြင်း။ သို့သော် register သို့မဟုတ် bit ကိုအသုံးပြုသောအခါ \ t ပရိုဂရမ်တွင်တိကျသောပုံစံကိုအသုံးပြုရမည်၊ ဥပမာ - Timer / Counter0 တန်ဘိုးတန်ဘိုးကိုရယူရန်အတွက် TCNT0 ။
အတွက်အဓိပ္ပာယ် ဇယား ၂-၄ ထို့အပြင်စာရွက်စာတမ်းတစ်လျှောက်လုံးကျယ်ပြန့်အသုံးပြုကြသည်။
ဇယား ၆-၁။ အဓိပ္ပါယ်ဖွင့်ဆိုချက်
အဆက်မပြတ် | ဖော်ပြချက် |
အောက်ခြေ | 0x00 ဖြစ်လာသည့်အချိန်တွင်ကောင်တာသည် BOTTOM သို့ရောက်ရှိသည် |
MAX | 0xFF (ဒdecimalမ ၂၅၅) ဖြစ်လာသည့်အခါကောင်တာသည် MAXimum သို့ရောက်ရှိသည်။ |
ထိပ်တန်း | count sequence တွင်အမြင့်ဆုံးတန်ဖိုးနှင့်တူညီသောအခါကောင်တာသည်ထိပ်ဆုံးသို့ရောက်သည်။ TOP တန်ဖိုးကို 0xFF (MAX) သို့မဟုတ် OCR0A မှတ်ပုံတင်တွင်သိမ်းဆည်းထားသောတန်ဖိုးအဖြစ်သတ်မှတ်နိုင်သည်။ အဆိုပါတာဝန်ကျတဲ့နေရာစစ်ဆင်ရေး၏ mode ပေါ်တွင်မူတည်သည် |
Timer / ကောင်တာ Prescaler နှင့် Clock ရင်းမြစ်များ
Timer / Counter သည်အတွင်းပိုင်းသို့မဟုတ်ပြင်ပနာရီအရင်းအမြစ်တစ်ခုမှ clocked နိုင်သည်။ နာရီအရင်းအမြစ်ကို Timer / Counter0 ထိန်းချုပ်မှုမှတ်ပုံတင် (TCCR0B) တွင်ရှိသော Clock Select (c) bits ကထိန်းချုပ်သော Clock Select logic ဖြင့်ရွေးချယ်သည်။
Prescaler နှင့်အတူပြည်တွင်းနာရီအရင်းအမြစ်
Timer/Counter0 ကို စနစ်နာရီဖြင့် တိုက်ရိုက် နာရီလုပ်နိုင်ပါသည်။ (CS0[2:0] = 1 ကို သတ်မှတ်ခြင်းဖြင့်)။ ၎င်းသည် စနစ်နာရီကြိမ်နှုန်း (fCLK_I/O) နှင့် တူညီသော အမြင့်ဆုံး အချိန်တိုင်းကိရိယာ/ တန်ပြန်နာရီကြိမ်နှုန်းဖြင့် အလျင်မြန်ဆုံးလုပ်ဆောင်ချက်ကို ပံ့ပိုးပေးပါသည်။ တနည်းအားဖြင့်၊ prescaler မှ နှိပ်ခြင်း လေးခုအနက်မှ တစ်ခုကို နာရီရင်းမြစ်အဖြစ် သုံးနိုင်သည်။ ကြိုတင်ချိန်ညှိထားသောနာရီတွင် ကြိမ်နှုန်းတစ်ခုရှိသည်။
Prescaler ပြန်လည်စတင်
prescaler သည် အခမဲ့လုပ်ဆောင်နေသည်၊ ဆိုလိုသည်မှာ ၎င်းသည် Timer/Counter0 ၏ Clock Select logic နှင့် သီးခြားလုပ်ဆောင်သည်။ ကြိုတင်စကေးကိရိယာကို အချိန်တိုင်းစက်/ကောင်တာ၏နာရီရွေးချယ်မှုမှ သက်ရောက်မှုမရှိသောကြောင့်၊ ကြိုတင်စကေးချိန်စက်၏အခြေအနေသည် ကြိုတင်စကေးချိန်ထားသောနာရီကိုအသုံးပြုသည့်အခြေအနေများအတွက် သက်ရောက်မှုရှိမည်ဖြစ်သည်။ ရည်းစားဟောင်းတစ်ယောက်ampprescaling artifact ၏ le သည် timer/counter ကိုဖွင့်ပြီး prescaler မှ clocked (6 > CS0[2:0] > 1) ဖြစ်သည်။ တိုင်မာကို ပထမအကြိမ်ရေတွက်မှုအထိ ဖွင့်ထားချိန်မှ စနစ်နာရီစက်ဝန်း အရေအတွက် 1 မှ N+1 စနစ်နာရီစက်ဝန်းများအထိ ဖြစ်နိုင်သည်၊ N သည် ကြိုတင်စကေးခွဲကိန်း (8၊ 64၊ 256 သို့မဟုတ် 1024) နှင့် ညီမျှသည်။
ပရိုဂရမ်ကွပ်ကဲရန် Timer / Counter ကိုတစ်ပြိုင်တည်းချိန်ကိုက်ရန် Prescaler Reset ကိုအသုံးပြုနိုင်သည်။
ပြင်ပနာရီအရင်းအမြစ်
T0 pin တွင်အသုံးပြုသည့် ပြင်ပနာရီရင်းမြစ်ကို အချိန်တိုင်းစက်/ကောင်တာနာရီ (clkT0) အဖြစ် အသုံးပြုနိုင်ပါသည်။ T0 pin သည် s ဖြစ်သည်။amppin synchronization logic ဖြင့် system clock clock တိုင်းကို ဦး ဆောင်သည်။ ထပ်တူပြုခြင်း (sampled) အချက်ပြပြီးသွားပြီ
အစွန်း detector မှတဆင့်။ ပုံ ၂-၁ T0 synchronization နှင့် edge detector logic တို့၏ လုပ်ဆောင်နိုင်သော တူညီသော ဘလောက်ပုံစံတစ်ခုကို ပြသသည်။ မှတ်ပုံတင်မှုများကို အတွင်းပိုင်းစနစ်နာရီ (clkI/O) ၏ အပြုသဘောဆောင်သော အစွန်းတွင် နာရီပတ်ထားသည်။ အတွင်းပိုင်းစနစ်နာရီ၏ မြင့်မားသောကာလတွင် လော့ခ်သည် ပွင့်လင်းသည်။
edge detector သည် အပြုသဘောတစ်ခုစီအတွက် clkT0 pulse တစ်ခုစီထုတ်ပေးသည် (CS0[2:0] = 7) သို့မဟုတ် အနုတ် (CS0[2:0] = 6) edge သည် ၎င်းကိုသိရှိနိုင်သည်။
Pulse Width Modulation (PWM) တစ်ခုခုကိုအသုံးပြုတဲ့အခါ OCR0x Registers ကို double buffered လုပ်တယ်။ ပုံမှန်နှင့် Clear Timer on နှိုင်းယှဉ်မှု (CTC) လုပ်ငန်းလည်ပတ်မှုအတွက်နှစ်ဆကြားခံပိတ်ထားသည်။ double bufffring သည် OCR0x နှိုင်းယှဉ်ထားသော Registers များ၏ update ကို counting sequence ၏ထိပ်သို့မဟုတ်အောက်သို့ထပ်ဆင့်ညှိပေးသည်။ ထပ်တူပြုခြင်းသည်ထူးဆန်းသောအရှည်မဟုတ်သောအချိုးမညီသော PWM ပဲမျိုးစုံဖြစ်ခြင်းကိုတားဆီးပေးပြီး output အားချို့တဲ့စေသည်။
OCR0x မှတ်ပုံတင်ခွင့်သည်ရှုပ်ထွေးပုံရသော်လည်းဤကိစ္စမှာမဟုတ်ပါ။ double buffering ကို enable လုပ်သည့်အခါ CPU သည် OCR0x Buffer Register သို့ဝင်ရောက်နိုင်သည်။ အကယ်၍ double buffering ကိုပိတ်ထားပါက CPU သည် OCR0x ကိုတိုက်ရိုက်ဆက်သွယ်လိမ့်မည်။
အင်အား Output နှိုင်းယှဉ်
PWM မဟုတ်သော waveform ထုတ်လုပ်မှုပုံစံများတွင်နှိုင်းယှဉ်မှု၏ match output ကို Force Output နှိုင်းယှဉ်မှု (FOC0x) bit သို့ရေးသားခြင်းအားဖြင့်အတင်းအကျပ်ပြုလုပ်နိုင်သည်။ Forcing Compare Match သည် OCF0x Flag ကိုသတ်မှတ်မည်မဟုတ်ပါသို့မဟုတ် timer ကိုပြန်ဖွင့်ခြင်း / ဖယ်ရှားခြင်းမပြုပါ။ သို့သော် OC0x pin ကိုစစ်မှန်သောနှိုင်းယှဉ်မှုတစ်ခုဖြစ်သည့်အတိုင်း (COM0x [1: 0] bits ဆက်တင်များက OC0x pin ကိုသတ်မှတ်မထား၊ သို့မဟုတ် toggled) ။
Match Blocking အား TCNT0 Write ဖြင့်နှိုင်းယှဉ်ကြည့်ပါ
TCNT0 မှတ်ပုံတင်သို့ CPU ရေးသွင်းမှုလုပ်ဆောင်မှုအားလုံးသည် timer ရပ်နားချိန်၌ပင်လာမည့် timer နေရာနာရီသံသရာတွင်ဖြစ်ပွားသောနှိုင်းယှဉ်ပြိုင်ပွဲကိုပိတ်ဆို့လိမ့်မည်။ ဤအင်္ဂါရပ်သည် OCR0x အား Timer / Counter နာရီကို enable လုပ်သောအခါကြားဖြတ်ခြင်းကိုအစပျိုးခြင်းမရှိဘဲ OCN0x အား TCNTXNUMX ကဲ့သို့တူညီသောတန်ဖိုးသို့အစပျိုးခွင့်ပြုသည်။
ယူနစ်နှိုင်းယှဉ်သည့် Output အသုံးပြုခြင်း
မည်သည့်လုပ်ဆောင်မှုတွင်မဆို TCNT0 ရေးသားခြင်းသည် timer နာရီသံသရာတစ်ခုအတွက်နှိုင်းယှဉ်စစ်ဆေးခြင်းအားလုံးကိုပိတ်ဆို့သွားသောကြောင့်၊ Timer / Counter သည်လည်ပတ်နေသည်ဖြစ်စေ၊ မရှိသည်ဖြစ်စေ Output နှိုင်းယှဉ်ယူနစ်ကိုအသုံးပြုသောအခါ TCNT0 ကိုပြောင်းလဲသောအခါအန္တရာယ်များရှိသည်။ အကယ်၍ TCNT0 တွင်ရေးသားထားသောတန်ဖိုးသည် OCR0x တန်ဖိုးနှင့်ညီပါကနှိုင်းယှဉ်ပွဲကိုလွဲချော်သွားလိမ့်မည်။ ရလဒ်သည်မမှန်ကန်တဲ့ waveform မျိုးကိုဖြစ်ပေါ်စေသည်။ အလားတူပင်ကောင်တာသည်ရေတွက်နေစဉ် BOTTOM နှင့်တူညီသော TCNT0 တန်ဖိုးကိုမရေးပါနှင့်။
port pin ၏ output အတွက် Data Direction Register ကိုမချမှတ်မှီ OC0x ၏ setup ကိုလုပ်ဆောင်သင့်သည်။ OC0x တန်ဖိုးကိုသတ်မှတ်ရန်အလွယ်ကူဆုံးနည်းလမ်းမှာ Normal Mode တွင် Force Output နှိုင်းယှဉ်ခြင်း (FOC0x) strobe-bits ကိုအသုံးပြုခြင်းဖြစ်သည်။ OC0x Registers သည် Waveform Generation mode များအကြားပြောင်းလဲသောအခါ၌ပင်သူတို့၏တန်ဖိုးများကိုထိန်းသိမ်းသည်။
သတိပြုရမည်မှာ COM0x [1: 0] bits သည်နှိုင်းယှဉ်တန်ဖိုးနှင့်အတူနှစ်ထပ်ကွားတွဲမကျသည်ကိုသတိပြုပါ။ COM0x [1: 0] -bits ပြောင်းခြင်းသည်ချက်ချင်းအကျိုးသက်ရောက်ပါလိမ့်မည်။
ပွဲစဉ် output ကိုယူနစ်နှိုင်းယှဉ်ကြည့်ပါ
နှိုင်းယှဉ်မှု Output mode (COM0x [1: 0]) bits များတွင်လုပ်ဆောင်ချက်နှစ်ခုရှိသည်။ Waveform Generator သည်လာမည့်နှိုင်းယှဉ်ပွဲတွင် Output Compare (OC0x) အခြေအနေကိုသတ်မှတ်ရန်အတွက် COM1x [0: 0] bits ကိုအသုံးပြုသည်။ ထို့အပြင် COM0x [1: 0] bits သည် OC0x pin output output ကိုထိန်းချုပ်သည်။ ပုံ ၂-၁ COM0x [1: 0] bit setting အားဖြင့်ထိခိုက်ယုတ္တိဗေဒ၏ရိုးရှင်းတဲ့သိထားပြသထားတယ်။ ပုံတွင်ရှိသော I / O Registers, I / O bits နှင့် I / O pins များသည်စာလုံးမည်းဖြင့်ဖော်ပြထားသည်။ COM0x [1: 0] bits ကြောင့်ထိခိုက်သောအထွေထွေ I / O Port Control Registers (DDR နှင့် PORT) ၏အစိတ်အပိုင်းများကိုသာဖော်ပြသည်။ OC0x state ကိုရည်ညွှန်းတဲ့အခါ၊ ရည်ညွှန်းချက်က OC0x မှတ်ပုံတင်မဟုတ်ပဲ၊ OC0x pin အတွက်ဖြစ်တယ်။ အကယ်၍ စနစ်ပြန်လည်စတင်လျှင် OC0x Register သည်“ 0” သို့ပြန်သွားသည်။
OC0A / OC0B I / O pin နှင့်ချိတ်ဆက်သောအခါ COM0A [1: 0] / COM0B [1: 0] bits သည် WGM0 [2: 0] bit setting တွင်မူတည်သည်။ ဇယား ၂-၄ အဆိုပါ WGM0 [1: 0] -bits ကိုပုံမှန်သို့မဟုတ် CTC mode ကို (Non-PWM) ဟုသတ်မှတ်ကြသောအခါ COM0x [2: 0] bit ကိုလုပ်ဆောင်နိုင်စွမ်းကိုပြသသည်။
ဇယား ၁၁-၂။ PWM မုဒ်မဟုတ်သော အထွက်မုဒ်ကို နှိုင်းယှဉ်ပါ။
COM0A1 နှင့် COM0B1 | COM0A0 နှင့် COM0B0 | ဖော်ပြချက် |
0 | 0 | ပုံမှန်ဆိပ်ကမ်းလည်ပတ်မှု၊ OC0A / OC0B ပြတ်တောက်သွားသည်။ |
0 | 1 | နှိုင်းယှဉ်ပွဲစဉ်အပေါ် OC0A / OC0B ဖွင့် |
1 | 0 | နှိုင်းယှဉ်ပွဲစဉ်အပေါ် OC0A / OC0B ရှင်းလင်းပါ |
1 | 1 | နှိုင်းယှဉ်ပွဲစဉ်အပေါ် OC0A / OC0B သတ်မှတ်မည် |
ဇယား ၂-၄ အဆိုပါ WGM0 [1: 0] -bits ကိုအစာရှောင်ခြင်း PWM mode ကိုသတ်မှတ်ထားသည့်အခါ COM0x [2: 0] bit ကိုလုပ်ဆောင်နိုင်စွမ်းကိုပြသသည်။
ဇယား ၁၁-၃။ အထွက်မုဒ်၊ မြန်ဆန်သော PWM မုဒ်ကို နှိုင်းယှဉ်ပါ။(၄)
COM0A1 နှင့် COM0B1 | COM0A0 နှင့် COM0B0 | ဖော်ပြချက် |
0 | 0 | ပုံမှန်ဆိပ်ကမ်းလည်ပတ်မှု၊ OC0A / OC0B ပြတ်တောက်သွားသည်။ |
0 | 1 | လက်ဝယ်ရှိတယ်။ |
1 | 0 | နှိုင်းယှဉ်ယှဉ်ပြိုင်ခြင်းအပေါ် OC0A / OC0B ကိုရှင်းလင်းပါ၊ OC0A / OC0B ကို BOTTOM (non-inverting mode) တွင်ထားပါ |
1 | 1 | နှိုင်းယှဉ်ပွဲစဉ်ပေါ်တွင် OC0A / OC0B ကိုသတ်မှတ်ပါ၊ BOTTOM (inverting mode) တွင် OC0A / OC0B ရှင်းလင်းပါ။ |
မှတ်ချက်- OCR0A သို့မဟုတ် OCR0B သည် TOP နှင့် COM0A1/COM0B1 ကို သတ်မှတ်သည့်အခါ အထူးကိစ္စရပ်တစ်ခု ဖြစ်ပေါ်သည်။ ဤကိစ္စတွင်၊ ယှဉ်တွဲမှုကို လျစ်လျူရှုထားသော်လည်း သတ်မှတ် သို့မဟုတ် ရှင်းလင်းမှုကို အောက်ခြေတွင် လုပ်ဆောင်သည်။ ကြည့်ပါ။ စာမျက်နှာ ၇၃ ရှိ“ Fast PWM Mode” အသေးစိတ်အချက်အလက်များအတွက်
ဇယား ၂-၄ အဆိုပါ WGM0 [1: 0] -bits ကိုမှန်ကန်သော PWM mode ကိုအဆင့်သတ်မှတ်ထားသည့်အခါ COM0x [2: 0] bit နဲ့လုပ်ဆောင်နိုင်စွမ်းကိုပြသထားတယ်။
ဇယား ၁၁-၄။ အထွက်မုဒ်၊ အဆင့်မှန်ကန်သော PWM မုဒ်ကို နှိုင်းယှဉ်ပါ။(၄)
COM0A1 နှင့် COM0B1 | COM0A0 နှင့် COM0B0 | ဖော်ပြချက် |
0 | 0 | ပုံမှန်ဆိပ်ကမ်းလည်ပတ်မှု၊ OC0A / OC0B ပြတ်တောက်သွားသည်။ |
0 | 1 | လက်ဝယ်ရှိတယ်။ |
1 | 0 | နှိုင်းယှဉ်ပါကပေါ်သည့်အခါနှိုင်းယှဉ်ပွဲစဉ်အပေါ် OC0A / OC0B ရှင်းလင်းပါ။ နှိုင်းယှဉ်ပါသည့်အခါနှိုင်းယှဉ်ပွဲစဉ်အပေါ် OC0A / OC0B သတ်မှတ်မည်ချ - ရေတွက်။ |
1 | 1 | နှိုင်းယှဉ်ပွဲစဉ်အပေါ် OC0A / OC0B သတ်မှတ်မည်သည့်အခါတက် - ရေတွက်။ နှိုင်းယှဉ်ပါသည့်အခါနှိုင်းယှဉ်ပွဲစဉ်အပေါ်ရှင်းရှင်းလင်းလင်း OC0A / OC0B ကိုရှင်းလင်းပါ။ |
မှတ်ချက်- 1. OCR0A သို့မဟုတ် OCR0B သည် TOP နှင့် COM0A1/COM0B1 ကို သတ်မှတ်သည့်အခါ အထူးကိစ္စရပ်တစ်ခု ဖြစ်ပေါ်သည်။ ဤကိစ္စတွင်၊ Com- pare Match ကို လျစ်လျူရှုထားသော်လည်း သတ်မှတ် သို့မဟုတ် ရှင်းလင်းမှုကို TOP တွင် လုပ်ဆောင်သည်။ ကြည့်ပါ။ စာမျက်နှာ ၇၄ ရှိ“ အဆင့်မှန်ကန်သော PWM စနစ်” အသေးစိတ်အချက်အလက်များအတွက်
-bits 3: 2 - Res: Reserved-bits
အဆိုပါ bits များသည် ATtiny25 / 45/85 တွင် bits လုပ်ထားပြီးအမြဲတမ်းသုညအဖြစ်ဖတ်မည်။
-bits 1: 0 - WGM0 [1: 0]: Waveform Generation Mode
TCCR02B မှတ်ပုံတင်တွင်တွေ့ရသည့် WGM0 bit နှင့်ပေါင်းလိုက်သောအခါဤ bits များသည်တန်ပြန်များ၏အရေအတွက်ကိုတွက်ချက်ခြင်း၊ အများဆုံး (TOP) တန်ပြန်တန်ဖိုးနှင့်အရင်းအနှီးပုံစံကိုမည်သည့်ပုံစံအသုံးပြုမည်ကိုထိန်းချုပ်သည်။ ဇယား ၂-၄။ Timer / Counter ယူနစ်မှထောက်ပံ့သောစစ်ဆင်ရေးနည်းလမ်းများမှာ - ပုံမှန် mode (တန်)၊ နှိုင်းယှဉ်မှုယှဉ်ပြိုင်ခြင်း (CTC) ပေါ်ရှိရှင်းရှင်းလင်းလင်းဖော်ပြသည့်အချိန်နှင့် Pulse Width Modulation (PWM) အမျိုးအစား ၂ မျိုးကိုကြည့်ပါ။ “ စစ်ဆင်ရေးနည်းလမ်းများ” စာမျက်နှာ 71 တွင်).
ဇယား ၁၁-၅။ Waveform Generation Mode Bit ဖော်ပြချက်
မုဒ် | WGM ၀၂ | WGM ၀၂ | WGM ၀၂ | စစ်ဆင်ရေး၏ Timer / Counter Mode ကို | ထိပ်တန်း | မှာ OCRx ၏ update ကို | TOV အလံသတ်မှတ်မည် |
0 | 0 | 0 | 0 | ပုံမှန် | 0xFF | ချက်ချင်း | MAX(၄) |
1 | 0 | 0 | 1 | PWM, အဆင့်မှန်ကန်သော | 0xFF | ထိပ်တန်း | အောက်ခြေ(၄) |
2 | 0 | 1 | 0 | CTC | OCRA | ချက်ချင်း | MAX(၄) |
3 | 0 | 1 | 1 | မြန်ဆန်သော PWM | 0xFF | အောက်ခြေ(၄) | MAX(၄) |
4 | 1 | 0 | 0 | လက်ဝယ်ရှိတယ်။ | – | – | – |
5 | 1 | 0 | 1 | PWM, အဆင့်မှန်ကန်သော | OCRA | ထိပ်တန်း | အောက်ခြေ(၄) |
6 | 1 | 1 | 0 | လက်ဝယ်ရှိတယ်။ | – | – | – |
7 | 1 | 1 | 1 | မြန်ဆန်သော PWM | OCRA | အောက်ခြေ(၄) | ထိပ်တန်း |
bit 7 - FOC0A: Force Output ကိုနှိုင်းယှဉ်ပါ
WGM bits သည် PWM မဟုတ်သောစနစ်ကိုသတ်မှတ်သည့်အခါ FOC0A bit သည်တက်ကြွစွာလုပ်ဆောင်သည်။
သို့သော်အနာဂတ်ကိရိယာများနှင့်လိုက်ဖက်ညီစေရန်သေချာစေရန်အတွက် PWM mode တွင်အလုပ်လုပ်နေချိန်တွင် TCCR0B ကိုရေးသားသောအခါ၎င်း bit အားသုညအဖြစ်သတ်မှတ်ရမည်။ FOC0A bit သို့ယုတ္တိရှိသည့်အရာတစ်ခုကိုရေးသားသောအခါ Waveform Generation ယူနစ်တွင်ချက်ချင်းနှိုင်းယှဉ်မှုတစ်ခုကိုပြုလုပ်သည်။ OC0A output ကို၎င်း၏ COM0A [1: 0] bits setting အရပြောင်းလဲသည်။ သတိပြုရန်မှာ FOC0A bit သည် strobe အဖြစ်လုပ်ဆောင်သည်။ ထို့ကြောင့် COM0A [1: 0] bits တွင်ပါ ၀ င်သောတန်ဖိုးသည်အတင်းအဓမ္မနှိုင်းယှဉ်ခြင်း၏အကျိုးသက်ရောက်မှုကိုဆုံးဖြတ်သည်။
FOC0A strobe သည်မည်သည့်အနှောင့်အယှက်မှဖြစ်ပေါ်မည်မဟုတ်ပါ။ ထို့အပြင် OCR0A ကို TOP အဖြစ် အသုံးပြု၍ CTC mode ရှိ timer ကိုမရှင်းလင်းပါ။ FOC0A bit ကိုသုညအဖြစ်အမြဲဖတ်ရသည်။
bit 6 - FOC0B: Force Output ကို B နှိုင်းယှဉ်
WGM bits သည် PWM မဟုတ်သောစနစ်ကိုသတ်မှတ်သည့်အခါ FOC0B bit သည်တက်ကြွစွာလုပ်ဆောင်သည်။
သို့သော်အနာဂတ်ကိရိယာများနှင့်လိုက်ဖက်ညီစေရန်သေချာစေရန်အတွက် PWM mode တွင်အလုပ်လုပ်နေသော TCCR0B ကိုရေးသားသောအခါ၎င်း bit အားသုညအဖြစ်သတ်မှတ်ရမည်။ FOC0B bit သို့ယုတ္တိရှိသည့်အရာတစ်ခုကိုရေးသားသောအခါ Waveform Generation ယူနစ်တွင်ချက်ချင်းနှိုင်းယှဉ်မှုတစ်ခုကိုပြုလုပ်သည်။ OC0B output ကို၎င်း၏ COM0B [1: 0] bits setting အရပြောင်းသည်။ သတိပြုရမည်မှာ FOC0B bit သည် strobe အဖြစ်လုပ်ဆောင်သည်။ ထို့ကြောင့် COM0B [1: 0] bits တွင်ပါ ၀ င်သောတန်ဖိုးသည်အတင်းအဓမ္မနှိုင်းယှဉ်ခြင်း၏အကျိုးသက်ရောက်မှုကိုအဆုံးအဖြတ်ပေးသည်။
FOC0B strobe သည်မည်သည့်အနှောင့်အယှက်မှဖြစ်ပေါ်မည်မဟုတ်ပါ။ ထို့အပြင် OCR0B ကို TOP အဖြစ် သုံး၍ CTC mode ရှိ timer ကိုမရှင်းလင်းပါ။
FOC0B bit ကိုသုညအဖြစ်အမြဲဖတ်ရသည်။
-bits 5: 4 - Res: Reserved-bits
အဆိုပါ bits များသည် ATtiny25 / 45/85 တွင် bits လုပ်ထားပြီးအမြဲတမ်းသုညအဖြစ်ဖတ်မည်။
Bit 3 - WGM02: Waveform Generation Mode
အတွက်ဖော်ပြချက်ကိုကြည့်ပါ စာမျက်နှာ ၇၇ ရှိ“ TCCR0A - Timer / ကောင်တာထိန်းချုပ်မှုမှတ်ပုံတင်က”.
-bits 2: 0 - CS0 [2: 0]: နာရီကိုရွေးပါ
Clock Select bits သုံးခုသည် Timer / Counter မှအသုံးပြုမည့် clock source ကိုရွေးချယ်သည်။
ဇယား ၁၁-၆။ နာရီကို ရွေးပါ Bit ဖော်ပြချက်
CS02 | CS01 | CS00 | ဖော်ပြချက် |
0 | 0 | 0 | နာရီအရင်းအမြစ်မရှိပါ (Таймер / ကောင်တာရပ်သည်) |
0 | 0 | 1 | clKI/O/(ကြိုတင်ပြင်ဆင်ခြင်း မရှိပါ) |
0 | 1 | 0 | clKI/O/8 (အကြိုစကေးစက်မှ) |
0 | 1 | 1 | clKI/O/64 (အကြိုစကေးစက်မှ) |
1 | 0 | 0 | clKI/O/256 (အကြိုစကေးစက်မှ) |
1 | 0 | 1 | clKI/O/1024 (အကြိုစကေးစက်မှ) |
1 | 1 | 0 | T0 pin ပေါ်တွင်ပြင်ပနာရီအရင်းအမြစ်။ ကျဆုံးနေသောအစွန်းပေါ်နာရီ။ |
1 | 1 | 1 | T0 pin ပေါ်တွင်ပြင်ပနာရီအရင်းအမြစ်။ မြင့်တက်အစွန်းအပေါ်နာရီ။ |
Timer / Counter0 အတွက် external pin mode ကိုအသုံးပြုတယ်ဆိုရင်၊ pin pin သည် output တစ်ခုအဖြစ် configure လုပ်ထားရင်တောင် T0 pin ပေါ်ရှိအသွင်ပြောင်းမှုများသည် counter ကို clock လိမ့်မည်။ ဒီအင်္ဂါရပ်ရေတွက်၏ software ကိုထိန်းချုပ်ခွင့်ပြုပါတယ်။
ယူနစ်နှင့်နှိုင်းယှဉ်ယူနစ်
Timer / Counter1 ၏အထွေထွေလည်ပတ်မှုကိုပြတ်တောင်းပြတ်တောင်း mode တွင်ဖော်ပြထားပြီး syncro- nous mode ရှိလုပ်ဆောင်မှုသည်ဤနှစ်ခုစနစ်များအကြားခြားနားချက်များရှိမှသာဖော်ပြသည်။ ပုံ ၂-၁ မှတ်ပုံတင်အကြား Timer / ကောင်တာ 1 ထပ်တူမှတ်ပုံတင်ပိတ်ပင်တားဆီးမှုပုံနှင့်ထပ်မံနှောင့်နှေးပြသထားတယ်။ အသေးစိတ်အချက်အလက်များစုဆောင်းထားသောနာရီအားလုံးသည်ပုံတွင်မပါရှိကြောင်းသတိပြုပါ။ Timer / Counter1 မှတ်ပုံတင်တန်ဖိုးများသည်ကောင်တာစစ်ဆင်ရေးကိုမထိခိုက်မီအတွင်းထည့်သွင်းမှုနှောင့်နှေးမှုကိုဖြစ်ပေါ်စေသော internal synchronization registers များမှဖြတ်သွားသည်။ မှတ်ပုံတင် TCCR1, GTCCR, OCR1A, OCR1B နှင့် OCR1C တို့ကိုမှတ်ပုံတင်ရေးသားပြီးနောက်ချက်ချင်းပြန်ဖတ်နိုင်သည်။ read-back တန်ဖိုးများသည် input / output ထပ်တူပြုခြင်းကြောင့် Timer / Counter1 (TCNT1) register နှင့် flags (OCF1A, OCF1B နှင့် TOV1) အတွက်နှောင့်နှေးနေတယ်။
Timer / Counter1 သည်မြင့်မားသော resolution နှင့်မြင့်မားသောတိကျမှန်ကန်မှုကို အသုံးပြု၍ နိမ့်ကျသောအခွင့်အလမ်းများဖြင့်ပါ ၀ င်သည်။ ၎င်းသည်တိကျမြန်ဆန်သော၊ မြန်ဆန်သော ၈-bit Pulse Width Modulators နှစ်ခုအမြန်နှုန်းကို 8 MHz အထိ (သို့မဟုတ်မြန်နှုန်းနိမ့်သော Mode တွင် 64 MHz) ကိုအသုံးပြုသည်။ ဤစနစ်တွင် Timer / Counter32 နှင့် output နှိုင်းယှဉ်ထားသောမှတ်ပုံတင်များသည်မတူသော inverted နှင့် inverted outputs နှင့်ထပ်နေသောထပ်တူသီးခြား PWM များဖြစ်သည်။ ရည်ညွှန်းကိုးကားပါ စာမျက်နှာ ၈ ဒီ function ကိုအပေါ်အသေးစိတ်ဖော်ပြချက်သည်။ အလားတူစွာမြင့်မားသော prescaling အခွင့်အလမ်းများသည်ဤယူနစ်ကိုအနိမ့်အမြန်လုပ်ဆောင်မှုသို့မဟုတ်တိကျသောအချိန်သတ်မှတ်မှုလုပ်ဆောင်မှုများအတွက်အသုံးမ ၀ င်အောင်လုပ်သည်။
ပုံ ၁၂-၂။ အချိန်တိုင်းစက်/ကောင်တာ 12 စင့်ခ်လုပ်ခြင်း ပိတ်ပင်မှုပုံစံကို မှတ်ပုံတင်ပါ။
Timer / Counter1 နှင့် prescaler တို့သည်မြန်သော 64 MHz (သို့မဟုတ်အနိမ့်မြန်နှုန်းဖြင့် 32 MHz) PCK နာရီပေါ်တွင်လည်ပတ်နေစဉ် prescaler သည်မည်သည့်နာရီရင်းမြစ်မှ CPU ကိုလည်ပတ်ခွင့်ပြုသည်။
သတိပြုရမည်မှာ system clock frequency သည် PCK ကြိမ်နှုန်း၏သုံးပုံတစ်ပုံအောက်သာရှိရမည်။ စနစ်နာရီသည်မြင့်မားသောအချိန်တွင်ပြတ်တောင်းပြတ်တောင်း Timer / Counter1 ၏ထပ်တူပြုခြင်းယန္တရားသည် PCK ၏အနည်းဆုံးအစွန်းနှစ်ခုလိုအပ်သည်။ အကယ်၍ system clock ၏ကြိမ်နှုန်းမြင့်လွန်းလျှင် data သို့မဟုတ် control တန်ဖိုးများဆုံးရှုံးသွားနိုင်သည်။
ဖော်ပြပါ ပုံ ၂-၁ Timer / Counter1 အတွက် block block ပုံကိုပြသသည်။
ဇယား ၁၂-၁။ နှိုင်းယှဉ်မုဒ်ကို PWM မုဒ်တွင် ရွေးချယ်ပါ။
COM1x1 | COM1x0 | output ကိုအပေါ်အကျိုးသက်ရောက်မှုတံသင်နှိုင်းယှဉ် |
0 | 0 | OC1x ချိတ်ဆက်မရပါ OC1x ချိတ်ဆက်မရပါ |
0 | 1 | OC1x နှိုင်းယှဉ်ပွဲပေါ်ရှင်းလင်း။ whenTCNT1 = $ 00 သတ်မှတ်မည်။ OC1x နှိုင်းယှဉ်ပွဲစဉ်အပေါ်ထားကြ၏။ TCNT1 = $ 00 လာသောအခါရှင်းလင်း။ |
1 | 0 | OC1x နှိုင်းယှဉ်ပွဲပေါ်ရှင်းလင်း။ တဲ့အခါမှာ TCNT1 = $ 00 သတ်မှတ်မည်။ OC1x ချိတ်ဆက်မရပါ |
1 | 1 | OC1x ကိုနှိုင်းယှဉ်ပါ။ TCNT1 = $ 00 လာသောအခါရှင်းလင်း။ OC1x ချိတ်ဆက်မရပါ |
ADC ဝိသေသလက္ခဏာများ
ဇယား ၂၁-၈။ ADC လက္ခဏာများ၊ တစ်ခုတည်းသော အဆုံးသတ်ချန်နယ်များ။ TA = -21°C မှ +8°C
သင်္ကေတ | ကန့်သတ်ချက် | အခြေအနေ | မင်း | စာရိုက်ပါ။ | မက်တယ်။ | ယူနစ် |
ဆုံးဖြတ်ချက် | 10 | ဘစ် | ||||
အကြွင်းမဲ့တိကျမှန်ကန်မှု (INL, DNL နှင့် Quantization, Gain and Offset အမှားများအပါအ ၀ င်) | VREF = 4V, VCC = 4V၊
ADC နာရီ = 200 kHz |
2 | LSB | |||
VREF = 4V, VCC = 4V၊
ADC နာရီ = 1 MHz |
3 | LSB | ||||
VREF = 4V, VCC = 4V၊
ADC နာရီ = 200 kHz ဆူညံသံလျှော့ချနည်း |
1.5 | LSB | ||||
VREF = 4V, VCC = 4V၊
ADC နာရီ = 1 MHz ဆူညံသံလျှော့ချနည်း |
2.5 | LSB | ||||
Integrated Non-Linearity (INL) (ချိန်ညှိမှုပြီးချိန်နှင့်တိကျသောချိန်ညှိချက်များ) | VREF = 4V, VCC = 4V၊
ADC နာရီ = 200 kHz |
1 | LSB | |||
ကွဲပြားမှု Non-linear (DNL) | VREF = 4V, VCC = 4V၊
ADC နာရီ = 200 kHz |
0.5 | LSB | |||
Gain အမှား | VREF = 4V, VCC = 4V၊
ADC နာရီ = 200 kHz |
2.5 | LSB | |||
Offset အမှား | VREF = 4V, VCC = 4V၊
ADC နာရီ = 200 kHz |
1.5 | LSB | |||
ကူးပြောင်းချိန် | ပြောင်းလဲခြင်းအခမဲ့လည်ပတ်ခြင်း | 14 | 280 | အဲဒါတွေ | ||
နာရီကြိမ်နှုန်း | 50 | 1000 | kHz | |||
VIN | ထည့်သွင်းမှု Voltage | GND | VREF | V | ||
ထည့်သွင်းမှု Bandwidth | 38.4 | kHz | ||||
AREF | ပြင်ပကိုးကားချက် Voltage | 2.0 | VCC | V | ||
VINT | ပြည်တွင်းရေးထယ်tage အကိုးအကား | 1.0 | 1.1 | 1.2 | V | |
ပြည်တွင်း 2.56V ကိုးကားစရာ (၄) | VCC > 3.0V | 2.3 | 2.56 | 2.8 | V | |
RREF | 32 | kΩ | ||||
မိုးရွာတယ်။ | Analog စ Input ကိုခုခံ | 100 | MΩ | |||
ADC ရလဒ် | 0 | 1023 | LSB |
မှတ်ချက်- ၁။ တန်ဖိုးများသည် လမ်းညွှန်ချက်များသာဖြစ်သည်။
ဇယား ၂၁-၉။ ADC လက္ခဏာများ၊ ကွဲပြားသောချန်နယ်များ (Unipolar မုဒ်)။ TA = -21°C မှ +9°C
သင်္ကေတ | ကန့်သတ်ချက် | အခြေအနေ | မင်း | စာရိုက်ပါ။ | မက်တယ်။ | ယူနစ် |
ဆုံးဖြတ်ချက် | gain = 1x | 10 | ဘစ် | |||
gain = 20x | 10 | ဘစ် | ||||
အကြွင်းမဲ့တိကျမှန်ကန်မှု (INL, DNL အပါအ ၀ င်)
အရေအတွက်၊ အကျိုးနှင့် offset အမှားများ) |
gain = 1x
VREF = 4V၊ VCC = 5V ADC နာရီ = 50 - 200 kHz |
10.0 | LSB | |||
gain = 20x
VREF = 4V၊ VCC = 5V ADC နာရီ = 50 - 200 kHz |
20.0 | LSB | ||||
Integral Non-Linearity (INL) (Offset နှင့် Gibibration ပြီးနောက်တိကျမှု) | gain = 1x
VREF = 4V၊ VCC = 5V ADC နာရီ = 50 - 200 kHz |
4.0 | LSB | |||
gain = 20x
VREF = 4V၊ VCC = 5V ADC နာရီ = 50 - 200 kHz |
10.0 | LSB | ||||
Gain အမှား | gain = 1x | 10.0 | LSB | |||
gain = 20x | 15.0 | LSB | ||||
Offset အမှား | gain = 1x
VREF = 4V၊ VCC = 5V ADC နာရီ = 50 - 200 kHz |
3.0 | LSB | |||
gain = 20x
VREF = 4V၊ VCC = 5V ADC နာရီ = 50 - 200 kHz |
4.0 | LSB | ||||
ကူးပြောင်းချိန် | ပြောင်းလဲခြင်းအခမဲ့လည်ပတ်ခြင်း | 70 | 280 | အဲဒါတွေ | ||
နာရီကြိမ်နှုန်း | 50 | 200 | kHz | |||
VIN | ထည့်သွင်းမှု Voltage | GND | VCC | V | ||
VDIFF | Input Differential Voltage | VREF/Gin | V | |||
ထည့်သွင်းမှု Bandwidth | 4 | kHz | ||||
AREF | ပြင်ပကိုးကားချက် Voltage | 2.0 | VCC – 1.0 | V | ||
VINT | ပြည်တွင်းရေးထယ်tage အကိုးအကား | 1.0 | 1.1 | 1.2 | V | |
ပြည်တွင်း 2.56V ကိုးကားစရာ (၄) | VCC > 3.0V | 2.3 | 2.56 | 2.8 | V | |
RREF | ကိုးကားစရာ Input ကိုခုခံ | 32 | kΩ | |||
မိုးရွာတယ်။ | Analog စ Input ကိုခုခံ | 100 | MΩ | |||
ADC ကူးပြောင်းခြင်းရလဒ် | 0 | 1023 | LSB |
မှတ်ချက်- တန်ဖိုးများသည် လမ်းညွှန်ချက်များသာဖြစ်သည်။
ဇယား ၂၁-၁၀။ ADC လက္ခဏာများ၊ ကွဲပြားသောချန်နယ်များ (Bipolar မုဒ်)။ TA = -21°C မှ +10°C
သင်္ကေတ | ကန့်သတ်ချက် | အခြေအနေ | မင်း | စာရိုက်ပါ။ | မက်တယ်။ | ယူနစ် |
ဆုံးဖြတ်ချက် | gain = 1x | 10 | ဘစ် | |||
gain = 20x | 10 | ဘစ် | ||||
အကြွင်းမဲ့တိကျမှန်ကန်မှု (INL, DNL အပါအ ၀ င်)
အရေအတွက်၊ အကျိုးနှင့် offset အမှားများ) |
gain = 1x
VREF = 4V၊ VCC = 5V ADC နာရီ = 50 - 200 kHz |
8.0 | LSB | |||
gain = 20x
VREF = 4V၊ VCC = 5V ADC နာရီ = 50 - 200 kHz |
8.0 | LSB | ||||
Integral Non-Linearity (INL) (Offset နှင့် Gibibration ပြီးနောက်တိကျမှု) | gain = 1x
VREF = 4V၊ VCC = 5V ADC နာရီ = 50 - 200 kHz |
4.0 | LSB | |||
gain = 20x
VREF = 4V၊ VCC = 5V ADC နာရီ = 50 - 200 kHz |
5.0 | LSB | ||||
Gain အမှား | gain = 1x | 4.0 | LSB | |||
gain = 20x | 5.0 | LSB | ||||
Offset အမှား | gain = 1x
VREF = 4V၊ VCC = 5V ADC နာရီ = 50 - 200 kHz |
3.0 | LSB | |||
gain = 20x
VREF = 4V၊ VCC = 5V ADC နာရီ = 50 - 200 kHz |
4.0 | LSB | ||||
ကူးပြောင်းချိန် | ပြောင်းလဲခြင်းအခမဲ့လည်ပတ်ခြင်း | 70 | 280 | အဲဒါတွေ | ||
နာရီကြိမ်နှုန်း | 50 | 200 | kHz | |||
VIN | ထည့်သွင်းမှု Voltage | GND | VCC | V | ||
VDIFF | Input Differential Voltage | VREF/Gin | V | |||
ထည့်သွင်းမှု Bandwidth | 4 | kHz | ||||
AREF | ပြင်ပကိုးကားချက် Voltage | 2.0 | VCC – 1.0 | V | ||
VINT | ပြည်တွင်းရေးထယ်tage အကိုးအကား | 1.0 | 1.1 | 1.2 | V | |
ပြည်တွင်း 2.56V ကိုးကားစရာ (၄) | VCC > 3.0V | 2.3 | 2.56 | 2.8 | V | |
RREF | ကိုးကားစရာ Input ကိုခုခံ | 32 | kΩ | |||
မိုးရွာတယ်။ | Analog စ Input ကိုခုခံ | 100 | MΩ | |||
ADC ကူးပြောင်းခြင်းရလဒ် | စာ-၁၁ | 511 | LSB |
ညွှန်ကြားချက် Set အနှစ်ချုပ်
Mnemonics | Operand | ဖော်ပြချက် | စစ်ဆင်ရေး | အလံများ | # နာရီများ |
ဂဏန်းသင်္ချာနှင့်ယုတ္တိဗေဒညွှန်ကြားချက် | |||||
ထည့်ပါ။ | လမ်း, RR | Registers နှစ်ခုထည့်ပါ | Rd ← Rd + Rr | Z ကို, C, N ကို, V ကို, H ကို | 1 |
ADC | လမ်း, RR | နှစ်ခုမှတ်ပုံတင် Carry နှင့်အတူထည့်ပါ | Rd ← Rd + Rr + C | Z ကို, C, N ကို, V ကို, H ကို | 1 |
ADIW | Rdl, K သည် | စကားလုံးမှချက်ချင်းထည့်ပါ | Rdh:Rdl ← Rdh:Rdl + K | Z, C, N, V, S | 2 |
SUB | လမ်း, RR | Registers နှစ်ခုနုတ်ပါ | Rd ← Rd – Rr | Z ကို, C, N ကို, V ကို, H ကို | 1 |
ဆူဘီ | လမ်း, K | မှတ်ပုံတင်မှ Constant နုတ် | Rd ← Rd – K | Z ကို, C, N ကို, V ကို, H ကို | 1 |
SBC | လမ်း, RR | Carrist နှစ်ခုကိုနှုတ်ပါ | Rd ← Rd – Rr – C | Z ကို, C, N ကို, V ကို, H ကို | 1 |
SBCI | လမ်း, K | Reg ထံမှ Carry Constant နှင့်နှုတ်ပါ။ | Rd ← Rd – K – C | Z ကို, C, N ကို, V ကို, H ကို | 1 |
SBIW | Rdl, K သည် | နှုတ်ကပတ်တော်မှချက်ချင်းနုတ် | Rdh:Rdl ← Rdh:Rdl – K | Z, C, N, V, S | 2 |
AND | လမ်း, RR | ယုတ္တိနှင့်မှတ်ပုံတင် | Rd ← Rd ∙ Rr | Z, N, V | 1 |
ANDI | လမ်း, K | ယုတ္တိနှင့်မှတ်ပုံတင်နှင့်စဉ်ဆက်မပြတ် | Rd ← Rd ∙ K | Z, N, V | 1 |
OR | လမ်း, RR | ယုတ္တိ OR မှတ်ပုံတင် | Rd ← Rd v Rr | Z, N, V | 1 |
ORI | လမ်း, K | ယုတ္တိ OR မှတ်ပုံတင်နှင့် Constant | Rd ← Rd v K | Z, N, V | 1 |
EOR | လမ်း, RR | သီးသန့် OR မှတ်ပုံတင် | Rd ← Rd ⊕ Rr | Z, N, V | 1 |
COM | Rd | တစ်ခုရဲ့ဖြည့်စွက် | Rd ← 0xFF − လမ်းမ | Z ကို, C, N ကို, V ကို | 1 |
NEG | Rd | Two's Complement | Rd ← 0x00 − လမ်းမ | Z ကို, C, N ကို, V ကို, H ကို | 1 |
SBR | လမ်း, K သည် | မှတ်ပုံတင်တွင် Bit (s) ကိုသတ်မှတ်မည် | Rd ← Rd v K | Z, N, V | 1 |
CBR | လမ်း, K သည် | မှတ်ပုံတင်တွင် Bit (များ) ကိုရှင်းလင်းပါ | Rd ← Rd ∙ (0xFF – K) | Z, N, V | 1 |
INC | Rd | ပွားများ | Rd ← Rd + 1 | Z, N, V | 1 |
သန္တော | Rd | ဆေးရုံ | Rd ← Rd − ၁ | Z, N, V | 1 |
TST | Rd | သုညသို့မဟုတ်အနုတ်အတွက်စစ်ဆေးပါ | Rd ← Rd ∙ Rd | Z, N, V | 1 |
CLR | Rd | မှတ်ပုံတင်ကိုဖျက်ပါ | Rd ← Rd ⊕ Rd | Z, N, V | 1 |
SER | Rd | မှတ်ပုံတင်မည် | Rd ← 0xFF | တစ်ခုမှ | 1 |
ဘဏ်ခွဲညွှန်ကြားချက်များ | |||||
RJMP | k | ဆွေမျိုးခုန် | PC ← PC+k+1 | တစ်ခုမှ | 2 |
IJMP | သွယ်ဝိုက်ခုန်။ (Z) | PC ← Z | တစ်ခုမှ | 2 | |
ခေါ်ပါ | k | ဆွေမျိုး Subroutine ခေါ်ဆိုမှု | PC ← PC+k+1 | တစ်ခုမှ | 3 |
ဖုန်းခေါ်တယ် | သွယ်ဝိုက်ခေါ်ဆိုမှု (Z) | PC ← Z | တစ်ခုမှ | 3 | |
RET | ပုံမှန်အတိုင်း ပြန်လာခြင်း | PC ← STACK | တစ်ခုမှ | 4 | |
RETI | Return Interrupt | PC ← STACK | I | 4 | |
CPSE | လမ်း, RR | နှိုင်းယှဉ်လျှင်တူညီပါလျှင်ကျော်သွားပါ | if (Rd = Rr) PC ← PC + 2 သို့မဟုတ် 3 | တစ်ခုမှ | ၁၂/၂၄/၃၆ |
CP | လမ်း, RR | နှိုင်းယှဉ်ပါ။ | Rd - Rr | Z ကို, N ကို, V ကို, C, H ကို | 1 |
CPC | လမ်း, RR | Carry နှင့်နှိုင်းယှဉ်ပါ | Rd − Rr − C | Z ကို, N ကို, V ကို, C, H ကို | 1 |
CPI | လမ်း, K သည် | ချက်ချင်းနှင့်အတူမှတ်ပုံတင်မည်နှိုင်းယှဉ် | Rd − K | Z ကို, N ကို, V ကို, C, H ကို | 1 |
SBRC | RR, ခ | မှတ်ပုံတင်ထဲမှာ Bit လျှင်ရှင်းလင်းလျှင် Skip | if (Rr(b)=0) PC ← PC + 2 သို့မဟုတ် 3 | တစ်ခုမှ | ၁၂/၂၄/၃၆ |
SBRS | RR, ခ | မှတ်ပုံတင်ထဲမှာ Bit အတွက်သတ်မှတ်ထားလျှင် Skip | if (Rr(b)=1) PC ← PC + 2 သို့မဟုတ် 3 | တစ်ခုမှ | ၁၂/၂၄/၃၆ |
SBIC | P, ခ | I / O မှတ်ပုံတင်ခြင်းအတွက် Bit Bit ကိုဖယ်ရှားလျှင် Skip | if (P(b)=0) PC ← PC + 2 သို့မဟုတ် 3 | တစ်ခုမှ | ၁၂/၂၄/၃၆ |
SBIS | P, ခ | I / O မှတ်ပုံတင်ခြင်းအတွက် Bit ကိုသတ်မှတ်ထားပါကကျော်လိုက်ပါ | if (P(b)=1) PC ← PC + 2 သို့မဟုတ် 3 | တစ်ခုမှ | ၁၂/၂၄/၃၆ |
BRBS | s, ဋ | Status အလံသတ်မှတ်မည်ဆိုပါကဘဏ်ခွဲ | အကယ်၍ (SREG(s) = 1) ထို့နောက် PC←PC+k+1 | တစ်ခုမှ | ၅/၅ |
BRBC | s, ဋ | Status အလံရှင်းလင်းလျှင်ဘဏ်ခွဲ | အကယ်၍ (SREG(s) = 0) ထို့နောက် PC←PC+k+1 | တစ်ခုမှ | ၅/၅ |
BREQ | k | ကိုင်း.. သာတူညီမျှရှိရင် | if (Z = 1) ထို့နောက် PC ← PC + k + 1 | တစ်ခုမှ | ၅/၅ |
BRNE | k | မညီရင် ဘဏ်ခွဲ | if (Z = 0) ထို့နောက် PC ← PC + k + 1 | တစ်ခုမှ | ၅/၅ |
BRCS | k | Carry သတ်မှတ်လျှင်ဘဏ်ခွဲ | if (C = 1) ထို့နောက် PC ← PC + k + 1 | တစ်ခုမှ | ၅/၅ |
BRCC | k | Carry ရှင်းလင်းလျှင်ဘဏ်ခွဲ | if (C = 0) ထို့နောက် PC ← PC + k + 1 | တစ်ခုမှ | ၅/၅ |
BRSH | k | အလားတူသို့မဟုတ်အဆင့်မြင့်လျှင်ဘဏ်ခွဲ | if (C = 0) ထို့နောက် PC ← PC + k + 1 | တစ်ခုမှ | ၅/၅ |
BRLO | k | အောက်ပိုင်းလျှင်ဘဏ်ခွဲ | if (C = 1) ထို့နောက် PC ← PC + k + 1 | တစ်ခုမှ | ၅/၅ |
BRMI | k | ဌာနခွဲအနှုတ်လျှင် | if (N = 1) ထို့နောက် PC ← PC + k + 1 | တစ်ခုမှ | ၅/၅ |
BRPL | k | Plus လျှင်ဘဏ်ခွဲ | if (N = 0) ထို့နောက် PC ← PC + k + 1 | တစ်ခုမှ | ၅/၅ |
BRGE | k | ပိုကြီးသို့မဟုတ်တူညီသောလျှင်, ဌာနခွဲလက်မှတ်ရေးထိုးခဲ့ | if (N ⊕ V= 0) ထို့နောက် PC ← PC + k + 1 | တစ်ခုမှ | ၅/၅ |
BRLT ပါ | k | သုညထက်နည်းလျှင်ဘဏ်ခွဲလက်မှတ်ထိုးသည် | if (N ⊕ V= 1) ထို့နောက် PC ← PC + k + 1 | တစ်ခုမှ | ၅/၅ |
BRHS | k | တစ်ဝက်အလံ Set သယ်ဆောင်လျှင်ဘဏ်ခွဲ | if (H = 1) ထို့နောက် PC ← PC + k + 1 | တစ်ခုမှ | ၅/၅ |
BRHC | k | တစ်ဝက်အလံသယ်ဆောင်လျှင်ဘဏ်ခွဲ | if (H = 0) ထို့နောက် PC ← PC + k + 1 | တစ်ခုမှ | ၅/၅ |
BRTS | k | T အလံသတ်မှတ်လျှင်ဘဏ်ခွဲ | if (T = 1) ထို့နောက် PC ← PC + k + 1 | တစ်ခုမှ | ၅/၅ |
BRTC | k | T အလံရှင်းလင်းလျှင်ဘဏ်ခွဲ | if (T = 0) ထို့နောက် PC ← PC + k + 1 | တစ်ခုမှ | ၅/၅ |
BRVS | k | လျှံအလံသတ်မှတ်ထားပါကဘဏ်ခွဲ | if (V = 1) ထို့နောက် PC ← PC + k + 1 | တစ်ခုမှ | ၅/၅ |
BRVC | k | Overflow အလံရှင်းလင်းလျှင်ဘဏ်ခွဲ | if (V = 0) ထို့နောက် PC ← PC + k + 1 | တစ်ခုမှ | ၅/၅ |
ဘရီ | k | Interrupt ဖွင့်ပါကဘဏ်ခွဲ | if ( I = 1) ထို့နောက် PC ← PC + k + 1 | တစ်ခုမှ | ၅/၅ |
သတို့သမီး | k | Interrupt Disrupt လျှင်ဘဏ်ခွဲ | if ( I = 0) ထို့နောက် PC ← PC + k + 1 | တစ်ခုမှ | ၅/၅ |
BIT နှင့် BIT-TEST ညွှန်ကြားချက် | |||||
SBI | P, ခ | I / O မှတ်ပုံတင်ခြင်းအတွက် Bit ထားပါ | I/O(P,b) ← ၁ | တစ်ခုမှ | 2 |
CBI | P, ခ | I / O မှတ်ပုံတင်ခြင်းအတွက်ရှင်းလင်း bit ကို | I/O(P,b) ← ၁ | တစ်ခုမှ | 2 |
LSL | Rd | Logical Shift ဘယ်ဘက် | Rd(n+1) ← Rd(n), Rd(0) ← 0 | Z ကို, C, N ကို, V ကို | 1 |
LSR | Rd | Logical Shift ညာဘက် | Rd(n) ← Rd(n+1), Rd(7) ← 0 | Z ကို, C, N ကို, V ကို | 1 |
အခန်းကဏ္ | Rd | Carry မှတဆင့်လက်ဝဲလှည့် | Rd(0)←C၊Rd(n+1)← Rd(n),C←Rd(7) | Z ကို, C, N ကို, V ကို | 1 |
ROR | Rd | Carry မှတဆင့်ညာဘက်လှည့် | Rd(7)←C,Rd(n)← Rd(n+1),C←Rd(0) | Z ကို, C, N ကို, V ကို | 1 |
ASR | Rd | ဂဏန်းသင်္ချာ Shift ညာဘက် | Rd(n) ← Rd(n+1), n=0..6 | Z ကို, C, N ကို, V ကို | 1 |
Mnemonics | Operand | ဖော်ပြချက် | စစ်ဆင်ရေး | အလံများ | # နာရီများ |
SWAP | Rd | Nibbles ဖလှယ်ပါ | Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) | တစ်ခုမှ | 1 |
BSET | s | Set ကိုအချက်ပြပါ | SREG(များ) ← ၁ | SREG (များ) | 1 |
BCLR | s | Clear အားအချက်ပြပါ | SREG(များ) ← ၁ | SREG (များ) | 1 |
BST | RR, ခ | မှတ်ပုံတင်မှ T သို့ Bit Store | T ← Rr(ခ) | T | 1 |
BLD | လမ်း, ခ | မှတ်ပုံတင်ရန် T ကနေ bit load | Rd(b) ← T | တစ်ခုမှ | 1 |
အရင်ကလည်း | Carry ကို Set | C ← ၁ | C | 1 | |
CLC | ရှင်းလင်းဆောင်ရွက်ပါ | C ← ၁ | C | 1 | |
Sen | အနုတ်လက္ခဏာအလံသတ်မှတ်မည် | N ← ၁ | N | 1 | |
CLN | အနုတ်လက္ခဏာအလံရှင်းလင်းပါ | N ← ၁ | N | 1 | |
အထူးစီးပွားရေးဇုန် | သုညအလံသတ်မှတ်ပါ | Z ← ၁ | Z | 1 | |
CLZ | သုညအလံကိုရှင်းလင်းပါ | Z ← ၁ | Z | 1 | |
SEI | Global Interrupt ကို ဖွင့်ပါ။ | ငါ ← ၁ | I | 1 | |
CLI | ကမ္ဘာလုံးဆိုင်ရာနှောင့်ယှက်မှုကိုပိတ်ထားပါ | ငါ ← ၁ | I | 1 | |
SES | လက်မှတ်ထိုးစမ်းသပ်ခြင်းအလံသတ်မှတ်မည် | S ← ၁ | S | 1 | |
CLS | လက်မှတ်ထိုးထားသောစမ်းသပ်ခြင်းအလံကိုရှင်းပါ | S ← ၁ | S | 1 | |
SEV | Twos ဖြည့်စွတ်လျတ်ထားပါ။ | V ← ၁ | V | 1 | |
CLV | ရှင်းရှင်းလင်းလင်းနှစ်ခုပြည့်စုံဖြည့် | V ← ၁ | V | 1 | |
SET | SREG အတွက် T ကသတ်မှတ်မည် | T ← ၁ | T | 1 | |
CLT | SREG တွင် T ကိုရှင်းလင်းပါ | T ← ၁ | T | 1 | |
SEH | Half Carry Flag ကို SREG တွင်ထားပါ | H ← ၁ | H | 1 | |
CLH | SREG ရှိတဝက်သယ်ဆောင်သောအလံကိုရှင်းလင်းပါ | H ← ၁ | H | 1 | |
ဒေတာလွှဲပြောင်းညွှန်ကြားချက်များ | |||||
MOV | လမ်း, RR | Registers အကြားရွှေ့ပါ | Rd ← Rr | တစ်ခုမှ | 1 |
MOVW | လမ်း, RR | မှတ်ပုံတင်ရန်စကားလုံးမိတ္တူ | Rd+1:Rd ← Rr+1:Rr | တစ်ခုမှ | 1 |
LDI | လမ်း, K | ချက်ချင်း load | Rd ← K | တစ်ခုမှ | 1 |
LD | လမ်း, X | သွယ်ဝိုက် load | Rd ← (X) | တစ်ခုမှ | 2 |
LD | လမ်း, X ကို + | သွယ်ဝိုက်နှင့် Post-Inc ကို load ။ | Rd ← (X), X ← X + 1 | တစ်ခုမှ | 2 |
LD | လမ်း, - X ကို | သွယ်ဝိုက်နှင့် Pre-Dec တင်ပါ။ | X ← X – 1၊ Rd ← (X) | တစ်ခုမှ | 2 |
LD | လမ်း, Y | သွယ်ဝိုက် load | Rd ← (Y) | တစ်ခုမှ | 2 |
LD | လမ်း, Y + | သွယ်ဝိုက်နှင့် Post-Inc ကို load ။ | Rd ← (Y), Y ← Y + 1 | တစ်ခုမှ | 2 |
LD | လမ်း, - Y ကို | သွယ်ဝိုက်နှင့် Pre-Dec တင်ပါ။ | Y ← Y – 1၊ Rd ← (Y) | တစ်ခုမှ | 2 |
LDD | လမ်း, Y ကို + က q | Displacement နှင့်အတူသွယ်ဝိုက် load | Rd ← (Y+q) | တစ်ခုမှ | 2 |
LD | လမ်း, Z | သွယ်ဝိုက် load | Rd ← (Z) | တစ်ခုမှ | 2 |
LD | လမ်း, Z + | သွယ်ဝိုက်နှင့် Post-Inc ကို load ။ | Rd ← (Z), Z ← Z+1 | တစ်ခုမှ | 2 |
LD | လမ်း, -Z | သွယ်ဝိုက်နှင့် Pre-Dec တင်ပါ။ | Z ← Z – 1၊ Rd ← (Z) | တစ်ခုမှ | 2 |
LDD | လမ်း, Z ကို + က q | Displacement နှင့်အတူသွယ်ဝိုက် load | Rd ← (Z + q) | တစ်ခုမှ | 2 |
LDS | လမ်း, ။ | SRAM မှတိုက်ရိုက် load | Rd ← (ဋ) | တစ်ခုမှ | 2 |
ST | X, Rr | သွယ်ဝိုက်စတိုး | (ဘ) ← Rr | တစ်ခုမှ | 2 |
ST | X +, RR | သွယ်ဝိုက်ပြီး Post-Inc ကို Store ။ | (X) ← Rr, X ← X+1 | တစ်ခုမှ | 2 |
ST | - X, RR | သွယ်ဝိုက်နှင့်ဒီဇင်ဘာ Pre-Store ။ | X ← X–1၊ (X) ← Rr | တစ်ခုမှ | 2 |
ST | Y၊ Rr | သွယ်ဝိုက်စတိုး | (Y) ← Rr | တစ်ခုမှ | 2 |
ST | Y + RR | သွယ်ဝိုက်ပြီး Post-Inc ကို Store ။ | (Y) ← Rr,Y ← Y+1 | တစ်ခုမှ | 2 |
ST | - Y ကို, Rr | သွယ်ဝိုက်နှင့်ဒီဇင်ဘာ Pre-Store ။ | Y ← Y – 1၊ (Y) ← Rr | တစ်ခုမှ | 2 |
STD | Y က + q, RR | သွယ်ဝိုက်နှင့်အတူသွယ်ဝိုက် Store က | (Y+q) ← Rr | တစ်ခုမှ | 2 |
ST | Z, Rr | သွယ်ဝိုက်စတိုး | (Z) ← Rr | တစ်ခုမှ | 2 |
ST | Z +, RR | သွယ်ဝိုက်ပြီး Post-Inc ကို Store ။ | (Z) ← Rr,Z ← Z+1 | တစ်ခုမှ | 2 |
ST | -Z, Rr | သွယ်ဝိုက်နှင့်ဒီဇင်ဘာ Pre-Store ။ | Z ← Z – 1၊ (Z) ← Rr | တစ်ခုမှ | 2 |
STD | Z + က q, RR | သွယ်ဝိုက်နှင့်အတူသွယ်ဝိုက် Store က | (Z+q) ← Rr | တစ်ခုမှ | 2 |
STS | ,, RR | SRAM သို့တိုက်ရိုက်သိုလှောင်ပါ | (ဋ) ← Rr | တစ်ခုမှ | 2 |
LPM | Program ကိုမှတ်ဉာဏ် load | R0 ← (Z) | တစ်ခုမှ | 3 | |
LPM | လမ်း, Z | Program ကိုမှတ်ဉာဏ် load | Rd ← (Z) | တစ်ခုမှ | 3 |
LPM | လမ်း, Z + | Program ကိုမှတ်ဉာဏ်နှင့် Post-Inc ကို load | Rd ← (Z), Z ← Z+1 | တစ်ခုမှ | 3 |
SPM | ပရိုဂရမ်မှတ်ဉာဏ်ကိုသိုလှောင်ပါ | (z) ← R1:R0 | တစ်ခုမှ | ||
IN | လမ်း, P | ဆိပ်ကမ်းတွင် | Rd ← P | တစ်ခုမှ | 1 |
ထုတ်လိုက် | P, Rr | ဆိပ်ကမ်း | P ← Rr | တစ်ခုမှ | 1 |
တွန်း | Rr | မှတ်ပုံတင်ရန် Stack အပေါ် Push | STACK ← Rr | တစ်ခုမှ | 2 |
POP | Rd | Pop မှမှတ်ပုံတင်ပါ | Rd ← STACK | တစ်ခုမှ | 2 |
MCU Control ညွှန်ကြားချက်များ | |||||
NOP | လည်ပတ်မှုမရှိပါ။ | တစ်ခုမှ | 1 | ||
အိပ်စက်ပါ။ | အိပ်ပါ။ | (တိကျသော descr ကိုကြည့်ပါ။ Sleep function ကိုကြည့်ပါ။ ) | တစ်ခုမှ | 1 | |
WDR | စောင့်ကြည့်စာရင်းပြန်လည်သတ်မှတ် | (အသေးစိတ်ဖော်ပြချက်ကိုကြည့်ပါ။ WDR / Timer အတွက်) | တစ်ခုမှ | 1 | |
BREAK | ချိုး |
မြန်နှုန်း (MHz) (၄) | ရောင်းလိုအားပမာဏtagအီး (V) | အပူချိန်အတိုင်းအတာ | အထုပ် (၄) | အော်ဒါမှာ ကုဒ် (၄) |
10 | 1.8 – 5.5 | စက်မှု
(-40 ° C မှ +85 ° C) (၄) |
8P3 | ATtiny45V-10PU |
8S2 | ATtiny45V-10SU ATtiny45V-10SUR ATtiny45V-10SH ATtiny45V-10SHR | |||
8X | ATtiny45V-10XU ATtiny45V-10XUR | |||
20M1 | ATtiny45V-10MU ATtiny45V-10MUR | |||
20 | 2.7 – 5.5 | စက်မှု
(-40 ° C မှ +85 ° C) (၄) |
8P3 | ATtiny45-20PU |
8S2 | ATtiny45-20SU ATtiny45-20SUR
ATtiny45-20SH ATtiny45-20SHR |
|||
8X | ATtiny45-20XU ATtiny45-20XUR | |||
20M1 | ATtiny45-20MU ATtiny45-20MUR |
မှတ်စုများ: ၁။ အမြန်နှုန်းနှင့်ထောက်ပံ့ရေး voltage၊ အပိုင်းကိုကြည့်ပါ။ စာမျက်နှာ 21.3 အပေါ် 163 "မြန်နှုန်း".
အထုပ်အားလုံးသည် Pb-free၊ halide-free နှင့်အစိမ်းရောင်အပြည့်ရှိပြီး၎င်းတို့သည် European Haztrusus Sustanzi Restriction for RoHS (RoHS) နှင့်အညီလိုက်နာသည်။
ကုဒ်အညွှန်းများ
H ကို: NiPdAu ခဲ finish ကို
ဦး: Matte သံဖြူ
R ကို: တိပ် & reel
ဤပစ္စည်းများကိုလည်းဖောင်ပုံစံဖြင့်ထောက်ပံ့နိုင်သည်။ အသေးစိတ်မှာကြားခြင်းနှင့်အနည်းဆုံးပမာဏအတွက်သင်၏ဒေသဆိုင်ရာအရောင်းဌာနကိုဆက်သွယ်ပါ။
အမှားအယွင်းများ
မှားယွင်းမှု ATtiny25
ဤအပိုင်းရှိပြန်လည်တည်းဖြတ်ခြင်းစာသည် ATtiny25 ကိရိယာပြန်လည်တည်းဖြတ်ခြင်းကိုရည်ညွှန်းသည်။
Rev: D - F
အဘယ်သူမျှမသိသောအမှားများ။
ဗြာခ - ဂ
EEPROM ဖတ်ခြင်းသည် ထောက်ပံ့မှုပမာဏနည်းပါးသောကြောင့် ပျက်သွားနိုင်သည်။tage / နာရီကြိမ်နှုန်းနည်းသည်
EEPROM ဖတ်ခြင်းသည် ထောက်ပံ့မှုပမာဏနည်းပါးသောကြောင့် ပျက်သွားနိုင်သည်။tage / နာရီကြိမ်နှုန်းနည်းသည်
low clock frequencies နှင့်/or low supply vol တွင် EEPROM ကိုဖတ်ရန်ကြိုးစားနေပါသည်။tage သည် မမှန်ကန်သောဒေတာကို ဖြစ်ပေါ်စေနိုင်သည်။
ပြFixနာ Fix / ပြသနာကိုကျော်လွှားနိုင်စေရန်
နာရီကြိမ်နှုန်းသည် 1MHz အောက်နှင့်ထောက်ပံ့ပေးသောအခါ EEPROM ကိုအသုံးမပြုပါနှင့်tage သည် 2V အောက် လည်ပတ်မှုလွတ်လပ်မှုကို 1MHz အထက်မမြှင့်နိုင်လျှင် supply voltage သည် 2V ထက်ပိုသင့်သည်။ အလားတူပဲ supply voltage ကို 2V ထက် မမြှင့်နိုင်ပါ၊ ထို့နောက် လည်ပတ်မှုကြိမ်နှုန်းသည် 1MHz ထက်ပိုသင့်သည်။
ဒီအင်္ဂါရပ်ကိုအပူချိန်မှီခိုဖြစ်လူသိများပေမယ့်သွင်ပြင်လက္ခဏာမထားပါဘူး။ အခန်းအပူချိန်အတွက်သာလမ်းညွှန်ချက်များပေးသည်။
ဗျာ A
၎ampအယ်လ်အီးဒီ။
မှားယွင်းမှု ATtiny45
ဤအပိုင်းရှိပြန်လည်တည်းဖြတ်ခြင်းစာသည် ATtiny45 ကိရိယာပြန်လည်တည်းဖြတ်ခြင်းကိုရည်ညွှန်းသည်။
Rev F - G
အဘယ်သူမျှမသိသောအမှားများ
ဗြာ: D - အီး
EEPROM ဖတ်ခြင်းသည် ထောက်ပံ့မှုပမာဏနည်းပါးသောကြောင့် ပျက်သွားနိုင်သည်။tage / နာရီကြိမ်နှုန်းနည်းသည်
EEPROM ဖတ်ခြင်းသည် ထောက်ပံ့မှုပမာဏနည်းပါးသောကြောင့် ပျက်သွားနိုင်သည်။tage / နာရီကြိမ်နှုန်းနည်းသည်
low clock frequencies နှင့်/or low supply vol တွင် EEPROM ကိုဖတ်ရန်ကြိုးစားနေပါသည်။tage သည် မမှန်ကန်သောဒေတာကို ဖြစ်ပေါ်စေနိုင်သည်။
ပြFixနာ Fix / ပြသနာကိုကျော်လွှားနိုင်စေရန်
နာရီကြိမ်နှုန်းသည် 1MHz အောက်နှင့်ထောက်ပံ့ပေးသောအခါ EEPROM ကိုအသုံးမပြုပါနှင့်tage သည် 2V အောက် လည်ပတ်မှုလွတ်လပ်မှုကို 1MHz အထက်မမြှင့်နိုင်လျှင် supply voltage သည် 2V ထက်ပိုသင့်သည်။ အလားတူပဲ supply voltage ကို 2V ထက် မမြှင့်နိုင်ပါ၊ ထို့နောက် လည်ပတ်မှုကြိမ်နှုန်းသည် 1MHz ထက်ပိုသင့်သည်။
ဒီအင်္ဂါရပ်ကိုအပူချိန်မှီခိုဖြစ်လူသိများပေမယ့်သွင်ပြင်လက္ခဏာမထားပါဘူး။ အခန်းအပူချိန်အတွက်သာလမ်းညွှန်ချက်များပေးသည်။
ဗြာခ - ဂ
PLL သော့ခတ်မဟုတ်ပါဘူး
Application Code မှဖတ်သော EEPROM သည် Lock Bit Mode 3 တွင်အလုပ်မလုပ်ပါ
EEPROM ဖတ်ခြင်းသည် ထောက်ပံ့မှုပမာဏနည်းပါးသောကြောင့် ပျက်သွားနိုင်သည်။tage / နာရီကြိမ်နှုန်းနည်းသည်
OC1B-XOC1B ရှိ Timer Counter 1 PWM output မျိုးဆက်သည်မှန်ကန်စွာအလုပ်မလုပ်ပါ
PLL သော့ခတ်မဟုတ်ပါဘူး
6.0 MHz အောက်ရှိကြိမ်နှုန်းများတွင် PLL သည် lock မလုပ်နိုင်ပါ
ပြfixနာဖြေရှင်းချက် / ပြသနာကိုကျော်လွှားနိုင်စေရန်
PLL ကိုအသုံးပြုသောအခါ 6.0 MHz (သို့) ထို့ထက်မြင့်သောနှုန်းဖြင့် run သည်။
Application Code မှဖတ်သော EEPROM သည် Lock Bit Mode 3 တွင်အလုပ်မလုပ်ပါ
Memory Lock Bits LB2 နှင့် LB1 ကို mode 3 သို့ပရိုဂရမ်သွင်းသောအခါ EEPROM read သည်လျှောက်လွှာကုဒ်မှအလုပ်မလုပ်ပါ။
ပြFixနာ Fix / ပတ်ပတ်လည်အလုပ်လုပ်
လျှောက်လွှာကုဒ်ကို EEPROM မှဖတ်ရန်လိုအပ်သည့်အခါ Lock Bit Protection Mode 3 ကိုမသတ်မှတ်ပါနှင့်။
EEPROM ဖတ်ခြင်းသည် ထောက်ပံ့မှုပမာဏနည်းပါးသောကြောင့် ပျက်သွားနိုင်သည်။tage / နာရီကြိမ်နှုန်းနည်းသည်
low clock frequencies နှင့်/or low supply vol တွင် EEPROM ကိုဖတ်ရန်ကြိုးစားနေပါသည်။tage သည် မမှန်ကန်သောဒေတာကို ဖြစ်ပေါ်စေနိုင်သည်။
ပြFixနာ Fix / ပြသနာကိုကျော်လွှားနိုင်စေရန်
နာရီကြိမ်နှုန်းသည် 1MHz အောက်နှင့်ထောက်ပံ့ပေးသောအခါ EEPROM ကိုအသုံးမပြုပါနှင့်tage သည် 2V အောက် လည်ပတ်မှုလွတ်လပ်မှုကို 1MHz အထက်မမြှင့်နိုင်လျှင် supply voltage သည် 2V ထက်ပိုသင့်သည်။ အလားတူပဲ supply voltage ကို 2V ထက် မမြှင့်နိုင်ပါ၊ ထို့နောက် လည်ပတ်မှုကြိမ်နှုန်းသည် 1MHz ထက်ပိုသင့်သည်။
ဒီအင်္ဂါရပ်ကိုအပူချိန်မှီခိုဖြစ်လူသိများပေမယ့်သွင်ပြင်လက္ခဏာမထားပါဘူး။ အခန်းအပူချိန်အတွက်သာလမ်းညွှန်ချက်များပေးသည်။
OC1B ရှိ Timer Counter 1 PWM output မျိုးဆက် - XOC1B သည်မှန်ကန်စွာအလုပ်မလုပ်ပါ
Timer Counter1 PWM output ကို OC1B-XOC1B မှန်ကန်စွာအလုပ်မလုပ်ပါ။ ထိန်းချုပ်မှု -bits, COM1B1 နှင့် COM1B0 အသီးသီး COM1A1 နှင့် COM1A0 ကဲ့သို့တူညီသော mode ၌ရှိကြ၏ကိစ္စတွင်သာလျှင်, OC1B-XOC1B out- ထား out- ထားမှန်ကန်စွာအလုပ်လုပ်သည်။
ပြFixနာ Fix / ပတ်ပတ်လည်အလုပ်လုပ်
တစ်ခုတည်းသောပြသနာကိုကျော်လွှားနိုင်သောဖြေရှင်းချက်မှာ COM1A [1: 0] နှင့် COM1B [1: 0] control bits တွင် control setting ကိုအသုံးပြုရန်ဖြစ်သည်။ ဒေတာစာရွက်ရှိဇယား ၁၄-၄ ကိုကြည့်ပါ။ အဆိုပါပြproblemနာကို Tiny14 rev D. အတွက်ပြhas္ဌာန်းထားသည်
ဗျာ A
ပါဝါစားသုံးမှုချပါကအလွန်မြင့်မားသောပါဝါ
တစ်ခုတည်း interrupts သို့နင်းလာသောအခါ DebugWIRE သည်ဆက်သွယ်ရေးကိုရှုံးသည်
PLL သော့ခတ်မဟုတ်ပါဘူး
Application Code မှဖတ်သော EEPROM သည် Lock Bit Mode 3 တွင်အလုပ်မလုပ်ပါ
EEPROM ဖတ်ခြင်းသည် ထောက်ပံ့မှုပမာဏနည်းပါးသောကြောင့် ပျက်သွားနိုင်သည်။tage / နာရီကြိမ်နှုန်းနည်းသည်
ပါဝါစားသုံးမှုချပါကအလွန်မြင့်မားသောပါဝါ
အခြေအနေ (၃) ခုသည်စွမ်းအင်သုံးစွဲမှုအလွန်နည်းပါးစေသည်။ ဤသည်များမှာ:
External clock ကို fuse များကရွေးချယ်သည်။ သို့သော် I / O PORT ကို output အဖြစ်အနေဖြင့်ဖွင့်ထားဆဲဖြစ်သည်။
EEPROM ကိုလျှပ်စစ်မီးမ ၀ င်ခင်ဖတ်ပါ။
VCC သည် ၄.၅ ဗို့သို့မဟုတ်အထက်ဖြစ်သည်။
မသက်ဆိုင်ကြောင်းရှင်းလင်းချက်- ဤစာတမ်းပါအချက်အလက်များကို Atmel ထုတ်ကုန်များနှင့် စပ်လျဉ်း၍ ဖော်ပြထားသည်။ ဤစာရွက်စာတမ်းမှ သို့မဟုတ် Atmel ထုတ်ကုန်များရောင်းချခြင်းနှင့်ဆက်စပ်၍ မည်သည့်ဉာဏပစ္စည်းမူပိုင်ခွင့်ကိုမဆို လိုင်စင်၊ အထွတ်အထိပ် သို့မဟုတ် အဓိပ္ပာယ်ဖွင့်ဆိုခြင်း၊ သို့မဟုတ် အခြားနည်းဖြင့် ခွင့်ပြုထားခြင်းမရှိပါ။ ATMEL တွင်ရှိသော အရောင်း၏ စည်းကမ်းချက်များနှင့် အခြေအနေများ တွင်ဖော်ပြထားသည့်အတိုင်း မှလွဲ၍ WEBSite, ATMEL သည် ထုတ်ဖော်ပြောဆိုမှု၊ အဓိပ္ပာယ်သက်ရောက်သော သို့မဟုတ် စည်းမျဉ်းဥပဒေဆိုင်ရာ အာမခံချက် တစ်စုံတစ်ရာကို ထုတ်ဖော်ပြောဆိုခြင်း နှင့် ငြင်းဆိုခြင်းတို့ကို တာဝန်ဝတ္တရားမရှိဟု ယူဆသည် မည်သည့်ကိစ္စတွင်မဆို ATMEL သည် တိုက်ရိုက် ၊ သွယ်ဝိုက် , အကျိုးဆက် , အကျိုးဆက် , အပြစ်ပေး , အထူး သို့မဟုတ် မတော်တဆ ထိခိုက်မှု များ ( အပါအဝင် , အကန့်အသတ်မရှိ , ဆုံးရှုံးမှု နှင့် အမြတ်အစွန်း , လုပ်ငန်းများ , စီးပွားရေး , အသုံးပြုမှု ) အတွက် ၊ ဤစာရွက်စာတမ်း၊ ATMEL သည် ထိုသို့သောပျက်စီးမှုများ၏ဖြစ်နိုင်ချေကို အကြံပြုထားသော်လည်း၊
Atmel သည် ဤစာတမ်းပါ အကြောင်းအရာများ၏ တိကျမှု သို့မဟုတ် ပြည့်စုံမှုနှင့်စပ်လျဉ်း၍ ကိုယ်စားပြုမှုများ သို့မဟုတ် အာမခံချက်များအား မပြုလုပ်ဘဲ သတ်မှတ်ချက်များနှင့် ထုတ်ကုန်ဖော်ပြချက်များကို အသိပေးခြင်းမရှိဘဲ အချိန်မရွေး အပြောင်းအလဲပြုလုပ်ပိုင်ခွင့်ကို လက်ဝယ်ရှိပါသည်။ Atmel သည် ဤနေရာတွင်ပါရှိသော အချက်အလက်များကို အပ်ဒိတ်လုပ်ရန် ကတိကဝတ်ပြုခြင်းမရှိပါ။ သီးခြားမဟုတ်ပါက၊ Atmel ထုတ်ကုန်များသည် မော်တော်ယာဥ်အပလီကေးရှင်းများတွင် အသုံးမပြုသင့်ပါ။ Atmel ထုတ်ကုန်များသည် အသက်ကို ထောက်ပံ့ပေးရန် သို့မဟုတ် တည်တံ့စေရန် ရည်ရွယ်သော အပလီကေးရှင်းများတွင် အစိတ်အပိုင်းများအဖြစ် အသုံးပြုရန်အတွက် ရည်ရွယ်ခြင်း၊ ခွင့်ပြုချက် သို့မဟုတ် အာမခံထားခြင်း မရှိပါ။