Atmel 8-bit AVR Mikrokontroler kanthi 2/4/8K Byte In-System Programmable Flash
Fitur
- Kinerja Dhuwur, Daya Kurang AVR® 8-Bit Mikrokontroler
- Arsitektur RISC Lanjut
- 120 Pitunjuk Kuat - Umume Eksekusi Siklus Jam
- 32 x 8 Ndhaptar Kerja Tujuan Umum
- Operasi Statis Kanthi
- Program lan Kenangan Data sing ora molah malih
- 2/4 / 8K Byte Flash Program Memori Program sing Bisa Diprogram Ing Sistem
- Ketahanan: 10,000 Nulis / Mbusak Siklus
- 128/256/512 Byte In-System EEPROM Programmable
- Ketahanan: 100,000 Nulis / Mbusak Siklus
- 128/256/512 Bytes SRAM Internal
- Kunci Pemrograman kanggo Program Flash Programming Sendiri lan Keamanan Data EEPROM
Fitur Periferal
- Timer / Counter 8-bit kanthi Prescaler lan Rong Saluran PWM
- Timer / Counter Kacepetan 8-bit kanthi Prescaler Pisah
- 2 Output PWM Frekuensi Tinggi kanthi Output Bandingake Pisahake
- Generator Wektu Mati sing bisa diprogram
- USI - Antarmuka Serial Universal kanthi Detektor Kondisi Wiwitan
- 10-dicokot ADC
4 Saluran Pungkasan Single
2 Pasangan Saluran ADC Diferensial kanthi Programmable Gain (1x, 20x)
Pangukuran Suhu
Timer Watchdog sing bisa diprogram kanthi Osilator On-chip kapisah
Comparator Analog chip
Fitur Mikrokontroler Khusus
debugWIRE Sistem Debug On-chip
Programmable In-System liwat SPI Port
Sumber Interrupt Eksternal lan Internal
Nganggur Daya Cendhek, Pangirangan Noise ADC, lan Mode Daya Turun
Sirkuit Reset Power-on Enhanced
Sirkuit Deteksi Brown-Out sing bisa diprogram
Osilator Kalibrasi Internal
Aku / O lan Paket
Nenem Garis I / O Programmable
8-pin PDIP, 8-pin SOIC, 20-pad QFN / MLF, lan 8-pin TSSOP (mung ATtiny45 / V)
Operasional Voltage
- 1.8 - 5.5V kanggo ATtiny25V / 45V / 85V
- 2.7 - 5.5V kanggo ATtiny25 / 45/85
Kelas Kacepetan
- 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
Kisaran Suhu Industri
Konsumsi Daya Sedheng
Mode Aktif:
1 MHz, 1.8V: 300 µA
Mode Power-down:
Konfigurasi Pin
Pinout ATtiny25 / 45/85
Katrangan Pin
VCC: Pasokan voltage.
GND: Lemah.
Port B (PB5:PB0): Port B punika 6-bit bi-directional I/O port karo internal pull-up resistor (dipilih kanggo saben bit). Buffer output Port B duwe ciri drive simetris kanthi kemampuan sink lan sumber sing dhuwur. Minangka input, Port B pin sing externally ditarik kurang bakal sumber saiki yen resistor narik-up diaktifake. Pins Port B tri-nyatakake nalika kondisi reset dadi aktif, sanajan jam ora mlaku.
Port B uga duwe fungsi macem-macem fitur khusus ATtiny25 / 45/85 kaya sing kacathet
Ing ATtiny25, port I / O sing bisa diprogram PB3 lan PB4 (pin 2 lan 3) diijolake ing Mode Kompatibilitas ATtiny15 kanggo ndhukung kompatibilitas mundur karo ATtiny15.
RESET: Reset input. A tingkat kurang ing pin iki kanggo maneh saka dawa pulsa minimal bakal generate reset, malah yen jam ora mlaku lan kasedhiya pin reset durung dipatèni. Dawane pulsa minimal diwenehi ing Tabel 21-4 ing kaca 165. Pulsa sing luwih cekak ora dijamin ngasilake reset.
Pin reset uga bisa digunakake minangka pin I / O (lemah).
Swaraview
ATtiny25 / 45/85 minangka mikrokontroler CMOS 8-bit daya rendah adhedhasar arsitektur RISC sing ditingkatake AVR. Kanthi nglakokake instruksi sing kuat ing siklus jam siji, ATtiny25 / 45/85 entuk output sing nyedhaki 1 MIPS per MHz, saéngga desainer sistem ngoptimalake konsumsi daya lawan kacepetan pamrosesan.
Diagram Blokir
Inti AVR nggabungake macem-macem instruksi kanthi 32 panggunaan tujuan umum. Kabeh 32 registrasi langsung nyambung karo Unit Logika Aritmetika (ALU), saengga bisa entuk loro register independen ing siji instruksi sing dileksanakake ing siklus siji. Arsitektur sing diasilake luwih efisien karo kode nalika entuk output nganti sepuluh kaping luwih cepet tinimbang mikrokontroler CISC konvensional.
ATtiny25 / 45/85 nyedhiyakake fitur-fitur ing ngisor iki: 2/4 / 8K byte In-System Programmable Flash, 128/256/512 byte EEPROM, 128/256/256 bytes SRAM, 6 garis umum I / O tujuan umum, 32 umum ndhaptar tujuan, siji Timer / Counter 8-bit kanthi mode mbandhingake, siji Timer / Counter kecepatan tinggi 8-bit, Antarmuka Serial Universal, Gangguan Internal lan Eksternal, 4-kanal, 10-bit ADC, Timer Watchdog sing bisa diprogram kanthi internal Osilator, lan telung piranti lunak mode hemat daya sing bisa dipilih. Mode iddle mandhegake CPU nalika ngidini sistem SRAM, Timer / Counter, ADC, Analog Comparator, lan Interrupt bisa terus dienggo. Mode power-down bakal nyimpen konfirmasi panggunaan, mateni kabeh fungsi chip nganti Interrupt utawa Reset Hardware sabanjure. Mode ADC Noise Reduction mungkasi CPU lan kabeh modul I / O kajaba ADC, kanggo minimalake gangguan swara sajrone konversi ADC.
Piranti kasebut diproduksi nggunakake teknologi memori non-volatore Kapadhetan dhuwur. Flash ISP On-chip ngidini memori Program diprogram maneh ing-Sistem liwat antarmuka serial SPI, dening programmer memori non-volatable utawa kode boot On-chip sing mbukak ing inti AVR.
AVt ATtiny25 / 45/85 didhukung karo piranti lengkap program lan pangembangan sistem kalebu: C Com-piler, Macro Assemblers, Program Debugger / Simulator lan Evaluation kit.
Babagan Sumber Daya
Piranti pangembangan, cathetan aplikasi lan lembar data sing lengkap kasedhiya kanggo didownload ing http://www.atmel.com/avr.
Kode Examples
Dokumentasi iki ngemot kode ex sing sederhanaamples sing nuduhake kanthi cepet cara nggunakake macem-macem bagean ing piranti. Ex kode kasebutamples nganggep manawa header khusus bagean file kalebu sadurunge kompilasi. Elinga yen ora kabeh vendor compiler C kalebu definisi sethithik ing header files lan nangani interrupt ing C gumantung karo compiler. Monggo konfirmasi karo dokumentasi kompiler C kanggo rincian liyane.
Kanggo registrasi I / O sing ana ing peta I / O sing dawa, "IN", "OUT", "SBIS", "SBIC", "CBI", lan "SBI" kudu diganti nganggo instruksi sing ngidini akses menyang I / O. Biasane, iki tegese "LDS" lan "STS" digabungake karo "SBRS", "SBRC", "SBR", lan "CBR". Elinga yen ora kabeh piranti AVR kalebu peta I / O sing ditambahi.
Capacitive Touch Sensing
Atmel QTouch Library nyedhiyakake solusi sing gampang digunakake kanggo antarmuka sensitif tutul ing mikrokontroler Atmel AVR. Pustaka QTouch kalebu dhukungan kanggo metode akuisisi QTouch® lan QMatrix®.
Sensing tutul gampang ditambahake ing aplikasi apa wae kanthi ngubungake Pustaka QTouch lan nggunakake Program Aplikasi- ming Interface (API) perpustakaan kanggo netepake saluran tutul lan sensor. Aplikasi kasebut banjur nelpon API kanggo njupuk informasi saluran lan nemtokake kahanan sensor tutul.
Pustaka QTouch gratis lan bisa diunduh saka Atmel websitus Kanggo informasi luwih lengkap lan rincian implementasine, waca Pandhuan Pangguna Pustaka QTouch - uga kasedhiya saka Atmel websitus.
Penylametan data
Asil Kualifikasi Reliabilitas nuduhake manawa angka kegagalan retensi data sing diproyeksikan kurang saka 1 PPM sajrone 20 taun ing 85 ° C utawa 100 taun 25 ° C.
Inti CPU AVR
Pambuka
Bagean iki mbahas arsitektur inti AVR umume. Fungsi utama inti CPU yaiku njamin eksekusi program sing bener. CPU kasebut kudu bisa ngakses kenangan, nindakake kalkulasi, ngontrol periferal, lan ngatasi gangguan.
Swara Arsitekturview
Kanggo nggedhekake kinerja lan paralelisme, AVR nggunakake arsitektur Harvard - kanthi kenangan lan bus sing beda kanggo program lan data. Pandhuan ing memori Program dileksanakake kanthi pipelining level siji. Nalika siji instruksi lagi dileksanakake, pandhuan sabanjure wis dijupuk saka memori Program. Konsep iki ngidini instruksi bisa dieksekusi ing saben siklus jam. Memori Program yaiku memori Flash Reprogrammable In-System.
Ndhaptar akses cepet File ngandhut 32 x 8-dicokot umum waé ndhaftar apa karo siji wektu akses siklus jam. Iki ngidini operasi siji-siklus Arithmetic Logic Unit (ALU). Ing operasi ALU sing khas, rong operand sing metu saka Register File, operasi kasebut ditindakake, lan asile disimpen maneh ing Daftar File- ing sak siklus jam.
Enem saka 32 register bisa digunakake minangka telung petunjuk panggunaan alamat ora langsung 16-bit kanggo alamat Data Space - ngaktifake petungan alamat sing efisien. Salah sawijining petunjuk alamat iki uga bisa digunakake minangka penunjuk alamat kanggo golek tabel ing memori Program Flash. Ndhaptar fungsi sing ditambahake yaiku X-, Y-, lan Z-register 16-bit, sing dijelasake mengko ing bagean iki.
ALU ndhukung operasi aritmetika lan logika ing antarane register utawa ing antarane konstanta lan register. Operasi register tunggal uga bisa dileksanakake ing ALU. Sawise operasi aritmatika, Daftar Status dianyari kanggo nggambarake informasi babagan asil operasi.
Alur program diwenehake kanthi instruksi telpon lan kondisional tanpa syarat lan bisa langsung ngatasi kabeh ruang alamat. Umume pandhuan AVR duwe format tembung 16-bit, nanging uga ana pandhuan 32-bit.
Sajrone interupsi lan telpon subroutine, alamat bali Program Counter (PC) disimpen ing Stack. Tumpukan kasebut sacara efektif dialokasikan ing SRAM data umum, lan akibate ukuran Stack mung diwatesi dening ukuran SRAM lan panggunaan SRAM. Kabeh program pangguna kudu nggawe SP ing rutinitas Reset (sadurunge sub-rutin utawa interupsi dieksekusi). Stack Pointer (SP) diwaca / ditulis bisa diakses ing ruang I / O. Data SRAM bisa diakses kanthi gampang liwat limang mode ngarahake beda sing didhukung ing arsitektur AVR.
Ruang memori ing arsitektur AVR kabeh ana peta memori linier lan biasa.
Modul interupsi fleksibel nduwe register kontrol ing ruang I / O kanthi tambahan Global Interrupt Enable ing Daftar Status. Kabeh interupsi duwe Vektor Interrupt sing kapisah ing tabel Interrupt Vector. Gangguan kasebut duwe prioritas miturut posisi Interrupt Vector. Ngisor alamat Interrupt Vector, prioritas sampeyan bakal luwih dhuwur.
Ruang memori I / O ngemot 64 alamat fungsi CPU periferal minangka Registrasi Kontrol, SPI, lan fungsi I / O liyane. Memori I / O bisa diakses langsung, utawa minangka lokasi Data Space sing ngetutake sing kasebut Reg-ister File, 0x20 - 0x5F.
ALU - Unit Logika Aritmetika
AVR ALU performa tinggi bisa digunakake langsung ana hubungane karo kabeh 32 panggunaan tujuan umum. Sajrone siklus siji jam, operasi aritmetika antarane registrasi tujuan umum utawa antarane register lan cepet ditindakake. Operasi ALU dipérang dadi telung kategori utama - fungsi aritmatika, logis, lan bit-. Sawetara implementasi arsitektur uga nyedhiyakake multiplier kuat sing ndukung format multiplikasi sing ditandatangani / ora ditandatangani lan fraksional. Deleng bagean "Set Instruksi" kanggo katrangan lengkap.
Dhaptar Status
Daftar Status ngemot informasi babagan instruksi aritmatika sing paling anyar sing ditindakake. Informasi iki bisa digunakake kanggo ngowahi aliran program supaya bisa nindakake operasi bersyarat. Elinga yen Daftar Status dianyari sawise kabeh operasi ALU, kaya sing kasebut ing Referensi Set Instruksi. Akeh kasus bakal ngilangi prelu nggunakake pandhuan mbandhingake kanthi khusus, lan ngasilake kode sing luwih cepet lan luwih kompak.
Daftar Status ora disimpen kanthi otomatis nalika nindakake rutinitas ngganggu lan dipulihake nalika bali saka ngganggu. Iki kudu ditangani dening piranti lunak.
SREG - Dhaptar Status AVR
Daftar Status AVR - SREG - ditetepake minangka:
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3f | I | T | H | S | V | N | Z | C | SREG |
Maca / Nulis | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Nilai wiwitan | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 7 - I: Global Interrupt Enable
Bit Global Interrupt Enable kudu disetel supaya gangguan bisa diaktifake. Gangguan individu ngaktifake kontrol banjur ditindakake ing register kontrol sing beda. Yen Ndhaptar Enable Global Interrupt dibersihake, ora ana gangguan sing diaktifake dhewe saka setelan ngaktifake gangguan. I-bit diresiki dening piranti keras sawise ana gangguan, lan disetel karo instruksi RETI kanggo ngaktifake gangguan sabanjure. I-bit uga bisa disetel lan dirampungake karo aplikasi kanthi instruksi SEI lan CLI, kaya sing dijelasake ing referensi set instruksi.
Bit 6 - T: Panyimpenan Salin Bit
Instruksi Bit Copy BLD (Bit LoaD) lan BST (Bit STore) nggunakake T-bit minangka sumber utawa tujuan kanggo bit sing dioperasikake. Sedetik saka dhaptar ing Daftar File bisa disalin menyang T kanthi instruksi BST, lan sawetara ing T bisa disalin dadi sethithik ing dhaptar ing Daftar File dening instruksi BLD.
Bit 5 - H: Gendera Setengah
Gendera Setengah Bawa H nuduhake Setengah Bawa ing sawetara operasi aritmatika. Half Carry migunani ing aritmatika BCD. Deleng "Deskripsi Set Instruksi" kanggo informasi lengkap.
Bit 4 – S: Bit Sign, S = N ⊕ V
S-bit mesthi eksklusif utawa ing antarane Bendera Negatif N lan Loro-lorone Luwih Panji V. Waca "Deskripsi Set Instruksi" kanggo informasi lengkap.
Bit 3 - V: Tanduran Limpah Lengkap Loro
The Two's Complement Overflow Flag V ndhukung aritmatika loro. Deleng "Deskripsi Set Instruksi" kanggo informasi lengkap.
Bit 2 - N: Gendéra Negatif
Bendera Negatif N nuduhake asil negatif ing aritmatika utawa operasi logika. Deleng "Deskripsi Set Instruksi" kanggo informasi lengkap.
Bit 1 - Z: Bendera Nol
Zero Flag Z nuduhake asil nol ing aritmetika utawa operasi logika. Deleng "Deskripsi Set Instruksi" kanggo informasi lengkap.
Bit 0 - C: Nindakake Bendera
Carry Flag C nuduhake sawijining operasi aritmetika utawa logika. Deleng "Deskripsi Set Instruksi" kanggo informasi lengkap.
Ndhaptar Tujuan Umum File
The Register File dioptimalake kanggo pesawat instruksi AVR Enhanced RISC. Kanggo nggayuh kinerja lan keluwesan sing dibutuhake, skema input / output ing ngisor iki didhukung dening Dhaptar File:
Siji operan output 8-bit lan siji input asil 8-bit
Loro 8-bit output operan lan siji input asil 8-bit
Loro 8-bit output operan lan siji input asil 16-bit
Siji operan output 16-bit lan siji input asil 16-bit
Gambar 4-2 nuduhake struktur 32 panggunaan umum ing CPU.
Minangka ditampilake ing Gambar 4-2, saben register uga diwenehi alamat memori Data, pemetaan langsung menyang 32 lokasi pertama Space Data pangguna. Sanajan ora diimplementasikake dadi lokasi SRAM, organisasi memori iki nyedhiyakake keluwesan kanggo ngakses registrasi, amarga register X-, Y- lan Z-pointer bisa disetel kanggo ngindeks dhaptar apa wae ing file.Akeh instruksi operasi ing Register File duwe akses langsung menyang kabeh dhaptar, lan umume instruksi siklus.
Daftar X, register Y, lan Z-register
Registrasi R26..R31 duwe sawetara fungsi tambahan kanggo panggunaan tujuan umum. Registrasi kasebut minangka petunjuk alamat 16-bit kanggo ngatasi ruang data kanthi ora langsung. Telung registrasi alamat ora langsung X, Y, lan Z ditetepake kaya sing diandharake ing Gambar 4-3.
Ing mode alamat sing beda-beda, dhaptar alamat kasebut nduweni fungsi minangka pamindhahan tetep, kenaikan otomatis, lan penurunan otomatis (waca referensi set instruksi kanggo rincian).
Stack Pointer
Stack biasane digunakake kanggo nyimpen data sementara, kanggo nyimpen variabel lokal lan kanggo nyimpen alamat bali sawise ngganggu lan telpon subroutine. Daftar Stack Pointer mesthi nuduhake sisih ndhuwur Stack. Elinga yen Stack dileksanakake dadi akeh saka lokasi memori sing luwih dhuwur menyang lokasi memori sing luwih murah. Iki tegese prentah Stack PUSH nyuda Stack Pointer.
Stack Pointer nuduhake data area SRAM Stack ing endi dununge Subroutine lan Interrupt Stacks. Spasi tumpukan iki ing SRAM data kudu ditemtokake dening program sadurunge ana panggilan subroutine dieksekusi utawa antar-rupt diaktifake Stack Pointer kudu disetel ing ndhuwur 0x60. Stack Pointer dikurangi dadi siji nalika data di-push menyang Stack kanthi instruksi PUSH, lan dikurangi karo loro nalika alamat bali ditolak menyang Stack kanthi telpon subroutine utawa interrupt. Stack Pointer ditambah dening siji nalika data ditampilake saka Stack kanthi instruksi POP, lan ditambah karo loro nalika data ditampilake saka Stack kanthi bali saka RET subroutine utawa bali saka RETI sing ngganggu.
AVR Stack Pointer dileksanakake minangka rong register 8-bit ing ruang I / O. Jumlah bit sing sejatine digunakake gumantung karo implementasi. Elinga yen papan data ing sawetara implementasi arsitektur AVR pancen sithik mula mung SPL sing dibutuhake. Ing kasus iki, Daftar SPH ora bakal ana.
SPH lan SPL - Stack Pointer Registrasi
bit | 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 | ||
Maca / Nulis | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Maca / Nulis | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Nilai wiwitan | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | |
Nilai wiwitan | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND | RAMEND |
Timing Eksekusi Instruksi
Bagean iki nggambarake konsep wektu akses umum kanggo eksekusi instruksi. CPU AVR mimpin dening clkCPU jam CPU, langsung kui saka sumber jam milih kanggo chip. Ora divisi jam internal digunakake.
Gambar 4-4 nuduhake njupuk instruksi paralel lan eksekusi instruksi sing diaktifake kanthi arsitektur Harvard lan Registrasi akses cepet File konsep Iki minangka konsep pipelining dhasar kanggo entuk nganti 1 MIPS saben MHz kanthi asil unik sing cocog kanggo fungsi saben biaya, fungsi saben jam, lan fungsi saben unit daya.
Gambar 4-5. Operasi ALU Siklus Tunggal
Reset lan Nangani Interrupt
AVR nyedhiyakake macem-macem sumber gangguan. Gangguan kasebut lan Vector Reset sing kapisah duwe Program Vector sing beda ing ruang memori Program. Kabeh interrupts ditugasake supaya bisa ngaktifake bit sing kudu ditulis logika bebarengan karo Global Interrupt Enable bit ing Daftar Status supaya bisa ngganggu.
Alamat paling ngisor ing ruang memori Program minangka standar sing ditemtokake minangka Reset lan Interrupt Vector. Dhaptar lengkap vektor ditampilake ing "Ganggu" ing kaca 48. Dhaptar kasebut uga nemtokake level prioritas gangguan sing beda. Ngisor alamat sing luwih dhuwur yaiku level prioritas. RESET duwe prioritas paling dhuwur, lan sabanjure INT0 - Request Interrupt External 0.
Yen ana gangguan, Global Interrupt Enable I-bit bakal diresiki lan kabeh gangguan dipateni. Piranti lunak bisa nulis logika siji menyang bit supaya bisa ngganggu. Kabeh gangguan sing diaktifake banjur bisa ngganggu rutinitas ngganggu sing saiki. I-bit kanthi otomatis disetel nalika instruksi Return from Interrupt - RETI - dieksekusi.
Sejatine ana rong jinis gangguan. Jinis pertama dipicu dening acara sing nggawe Gendera Ganggu. Kanggo interupsi kasebut, Counter Program diluncurake menyang Vektor Interrupt nyata kanggo nglakokake rutinitas interrupt handling, lan perangkat keras mbusak Flag Interrupt sing cocog. Gendera Ganggu uga bisa diresiki kanthi nulis logika menyang posisi bit flag sing bakal diresiki. Yen ana kahanan interrupt nalika interrupt ngaktifake bit bisa dibusak, Flag Interrupt bakal disetel lan dieling-eling nganti interupsi diaktifake, utawa panji kasebut dibusak dening piranti lunak. Kajaba, yen ana siji utawa luwih kahanan interupsi nalika Global Interrupt Enable bit wis dirampungake, Flag Interrupt sing cocog bakal disetel lan dieling-eling nganti bit Global Interrupt Enable disetel, lan banjur bakal ditindakake kanthi prioritas utama.
Jinis interupsi nomer loro bakal dipicu sajrone kahanan interupsi ana. Gangguan kasebut ora mesthi duwe Gendera Ganggu. Yen kahanan ngganggu ilang sadurunge ngganggu diaktifake, gangguan kasebut ora bakal dipicu.
Nalika AVR metu saka interupsi, program kasebut bakal mesthi bali menyang program utama lan nglakokake instruksi siji maneh sadurunge gangguan sing ditundha.
Elinga yen Daftar Status ora disimpen kanthi otomatis nalika mlebu rutinitas ngganggu, utawa ora dibalekake maneh nalika bali saka rutinitas ngganggu. Iki kudu ditangani dening piranti lunak.
Nalika nggunakake instruksi CLI kanggo mateni gangguan, interupsi bakal langsung dipateni. Ora ana gangguan sing bakal ditindakake sawise instruksi CLI, sanajan kedadeyan bebarengan karo instruksi CLI. Ex ing ngisor ikiample nuduhake carane iki bisa digunakake kanggo nyegah gangguan sajrone urutan nulis EEPROM wektu.
Kode Majelis Example |
ing r16, SREG; nyimpen nilai SREG
cli ; mateni interrupts sajrone urutan wektu sbi EECR, EEMPE ; miwiti EEPROM nulis sbi EECR, EEPE metu SREG, r16; mulihake nilai SREG (I-bit) |
C Kode Example |
char cSREG;
cSREG = SREG; /* nyimpen nilai SREG */ /* mateni interupsi sajrone urutan wektu */ _CLI (); EECR |= (1< EECR | = (1 < SREG = cSREG; /* mulihake nilai SREG (I-bit) */ |
Nalika nggunakake instruksi SEI kanggo ngaktifake gangguan, instruksi SEI ing ngisor iki bakal dieksekusi sadurunge gangguan pendaptaran, kaya sing dituduhake ing mantan iki.ample.
Kode Majelis Example |
sei ; nyetel Global Interrupt Enable
turu; mlebu turu, ngenteni interupsi ; cathetan: bakal mlebu turu sadurunge ditundha ; ngganggu |
C Kode Example |
_SEI(); /* atur Global Interrupt Enable */
_TURU(); /* mlebu turu, ngenteni interupsi */ / * cathetan: bakal mlebu turu sadurunge ngganggu * * |
Ganggu Wektu Respon
Tanggepan eksekusi interupsi kanggo kabeh gangguan AVR sing diaktifake minimal patang siklus jam. Sawise patang siklus, alamat Program Vector kanggo rutin nangani interrupt nyata ditindakake. Sajrone wektu siklus patang jam iki, Counter Program di-push menyang Stack. Vektor biasane mlumpat menyang rutinitas sing ngganggu, lan mlumpat iki mbutuhake telung siklus jam. Yen ana interupsi sajrone nindakake instruksi multi-siklus, instruksi iki rampung sadurunge interrupt dilayani. Yen ana gangguan nalika MCU ing mode turu, wektu nanggepi eksekusi interupsi ditambah nganti patang siklus jam. Tambah iki saliyane wektu wiwitan saka mode turu sing dipilih.
Bali saka rutinitas interruptment njupuk papat siklus jam. Sajrone patang siklus jam kasebut, Counter Program (rong bait) ditampilake maneh saka Stack, Stack Pointer ditambah karo loro, lan I-bit ing SREG wis disetel.
Kenangan AVR
Bagean iki nggambarake kenangan sing beda ing ATtiny25 / 45/85. Arsitektur AVR nduweni rong ruang memori utama, yaiku memori Data lan ruang memori Program. Kajaba iku, ATtiny25 / 45/85 nampilake Memori EEPROM kanggo panyimpenan data. Katelu spasi memori kasebut linier lan biasa.
Memori Program Flash ing Program sing Bisa Diprogram maneh
ATtiny25 / 45/85 ngemot 2/4 / 8K bait On-chip Memori Flash ing Sistem sing bisa diprogram ulang kanggo nyimpen program. Amarga kabeh pandhuan AVR wiyaré 16 utawa 32 bit, Lampu kilat diatur dadi 1024/2048/4096 x 16.
Memori Flash nduweni ketahanan paling ora 10,000 siklus nulis / mbusak. Counter Program ATtiny25 / 45/85 (PC) wiyar 10/11/12, saengga ngatasi lokasi memori Program 1024/2048/4096. “Program Memori- ming ”ing kaca 147 ngemot katrangan rinci babagan undhuhan serial data Flash nggunakake pin SPI.
Tabel sing tetep bisa dialokasikan ing kabeh ruang alamat memori Program (deleng deskripsi instruksi memori memori LPM - Load Program).
Gambar 5-1. Peta Memori Program
Memori Data SRAM
Gambar 5-2 nuduhake carane ATtiny25 / 45/85 SRAM Memory diatur.
224/352/607 Lokasi memori data ngisor alamat alamat ing Daftar File, memori I / O lan SRAM data internal. 32 lokasi pisanan alamat Dhaptar File, 64 lokasi sabanjure memori I / O standar, lan 128/256/512 lokasi pungkasan ngatasi data internal SRAM.
Lima mode ngarahake beda kanggo tutup memori Data: Langsung, Ora Langsung karo Displaced, Indirect, Indi- straight karo Pre-decrement, lan Indirect with Post-increment. Ing Daftar File, ndhaptar R26 nganti R31 nampilake dhaptar pointer kanthi ora langsung.
Alamat langsung tekan kabeh ruang data.
Mode Indirect with Displaced tekan 63 lokasi alamat saka alamat dhasar sing diwenehi dhaptar Y- utawa Z-.
Nalika nggunakake mode alamat ora langsung kanthi pre-decrement otomatis lan post-increment, alamat register X, Y, lan Z bakal mudhun utawa tambah.
32 panggunaan tujuan umum, 64 I / O Registr, lan 128/256/512 bait data internal SRAM ing ATtiny25 / 45/85 kabeh bisa diakses nganggo kabeh mode ngatasi iki. Ndhaptar File diterangake ing "Gen- eral Tujuan Ndaftar File”Ing kaca 10.
Gambar 5-2. Peta Memori Data
Akses Memori Data kaping
Bagean iki nerangake konsep wektu akses umum kanggo akses memori internal. Akses SRAM data internal ditindakake ing rong siklus clkCPU kaya sing diterangake ing Gambar 5-3.
Gambar 5-3. Siklus Akses SRAM Data On-chip Memori Data EEPROM
ATtiny25 / 45/85 ngemot 128/256/512 bait memori data EEPROM. Diatur minangka ruang data sing kapisah, ing endi bait siji bisa diwaca lan ditulis. EEPROM duwe toleransi paling ora 100,000 siklus nulis / mbusak. Akses antarane EEPROM lan CPU diterangake ing ngisor iki, sing nemtokake Daftar Alamat EEPROM, Daftar Data EEPROM, lan Daftar Kontrol EEPROM. Kanggo rincian ndeleng "Ngundhuh Serial" ing kaca 151.
EEPROM Maca / Nulis Akses
Registrasi Akses EEPROM bisa diakses ing ruang I / O.
Wektu akses nulis kanggo EEPROM diwenehake ing Tabel 5-1 ing kaca 21. Nanging, fungsi timer wektu ngidini piranti lunak pangguna ndeteksi nalika byte sabanjure bisa ditulis. Yen kode pangguna ngemot instruksi sing nulis EEPROM, sawetara pancegahan kudu ditindakake. Ing pasokan daya sing akeh disaring, VCC bisa munggah utawa mudhun alon-alon
Power-up / down. Iki nyebabake piranti kanggo sawetara wektu bisa mlaku kanthi volumetage luwih murah tinimbang sing ditemtokake minangka minimal kanggo frekuensi jam sing digunakake. Delengen "Nyegah Korupsi EEPROM" ing kaca 19 kanggo rincian babagan cara supaya ora ana masalah ing kahanan kasebut.
Kanggo nyegah nulis EEPROM sing ora disengaja, prosedur nulis tartamtu kudu diikuti. Rujuk menyang “Atom Pemrograman Byte ”ing kaca 17 lan "Pemisahan Byte Programming" ing kaca 17 kanggo rincian babagan iki.
Nalika EEPROM diwaca, CPU dihentikan nganti patang siklus jam sadurunge instruksi sabanjure ditindakake. Nalika EEPROM ditulis, CPU dihentikan nganti rong siklus jam sadurunge instruksi sabanjure ditindakake.
Pemrograman Byte Atom
Nggunakake Atomic Byte Programming minangka mode sing paling gampang. Nalika nulis byte menyang EEPROM, pangguna kudu nulis alamat menyang EEAR Registrasi lan data menyang EEDR Register. Yen bit EEPMn nol, nulis EEPE (sajrone patang siklus sawise ditulis EEMPE) bakal nyebabake operasi pambusakan / nulis. Siklus mbusak lan nulis rampung ing siji operasi lan wektu program total diwenehake Tabel 5-1 ing kaca 21. Bit EEPE tetep disetel nganti operasi pambusakan lan nulis rampung. Nalika piranti sibuk karo pemrograman, sampeyan ora bisa nindakake operasi EEPROM liyane.
Pamrograman Byte Split
Sampeyan bisa misahake siklus mbusak lan nulis ing rong operasi sing beda. Iki bisa migunani yen sistem mbutuhake wektu akses cendhak kanggo sawetara wektu winates (biasane yen sumber listriktage tiba). Supaya bisa njupuk advance- tagMetode iki, dibutuhake supaya lokasi sing bakal ditulis wis dibusak sadurunge operasi nulis. Nanging amarga operasi pambusakan lan nulis dipisahake, bisa uga operasi pambusakan nalika sistem ngidini nindakake operasi kritis wektu (biasane sawise Power-up).
Mbusak
Kanggo mbusak byte, alamat kasebut kudu ditulis menyang EEAR. Yen bit EEPMn yaiku 0b01, nulis EEPE (sajrone patang siklus sawise ditulis EEMPE) bakal micu mung operasi pambusakan (wektu program diwenehake ing Tabel 5-1 ing kaca 21). Bit EEPE tetep disetel nganti operasi pambusakan rampung. Nalika piranti kasebut sibuk program, sampeyan ora bisa nindakake operasi EEPROM liyane.
Tulis
Kanggo nulis lokasi, pangguna kudu nulis alamat dadi EEAR lan data dadi EEDR. Yen bit EEPMn yaiku 0b10, nulis EEPE (sajrone patang siklus sawise ditulis EEMPE) bakal micu mung operasi nulis (wektu program- ming diwenehake ing Tabel 5-1 ing kaca 21). Bit EEPE tetep disetel nganti operasi nulis rampung. Yen lokasi sing bakal ditulis durung dipupus sadurunge ditulis, data sing disimpen kudu dianggep ilang. Nalika piranti sibuk karo pemrograman, sampeyan ora bisa nindakake operasi EEPROM liyane.
Osilator kalibrasi digunakake kanggo wektu akses EEPROM. Priksa manawa frekuensi Osilator ana ing syarat sing dijelasake ing "OSCCAL - Ndhaptar Kalibrasi Osilator" ing kaca 31.
Ex kode ing ngisor ikiamples nuduhake siji Déwan lan siji fungsi C kanggo mbusak, nulis, utawa nulis atom saka EEPROM. Mantanamples nganggep manawa interupsi dikendhaleni (contone, kanthi mateni gangguan global) supaya ora ana gangguan sing bakal ditindakake sajrone nindakake fungsi kasebut.
Kode Majelis Example |
EEPROM_write:
; Ngenteni rampung nulis sadurunge sbic EECR,EEPE rjmp EEPROM_write ; Setel mode Pemrograman ldi r16, (0<<EEPM1)|(0<<EEPM0) metu EECR, r16 ; Nyiyapake alamat (r18: r17) ing registrasi alamat metu EEARH, r18 metu EEARL, r17 ; Tulis data (r19) menyang dhaptar data metu EEDR, r19 ; Tulis siji sing logis menyang EEMPE sbi EECR,EEMPE ; Miwiti nulis eeprom kanthi nyetel EEPE sbi EECR,EEPE ret |
C Kode Example |
void EEPROM_write(unsigned char ucAddress, unsigned ucData char ucData)
{ /* Enteni rampunge nulis sadurunge */ while(EECR & (1< ; /* Setel mode Pemrograman */ EECR = (0 < / * Nggawe alamat lan data register * / EEAR = ucAddress; EEDR = ucData; /* Tulis logika menyang EEMPE */ EECR | = (1 < / * Miwiti nulis eeprom kanthi nyetel EEPE * / EECR | = (1 < } |
Ex kode sabanjureampfungsi les show lan C fungsi kanggo maca EEPROM. Bekasamples nganggep manawa interupsi dikendhalekake supaya ora ana gangguan sing bakal ditindakake sajrone nindakake fungsi kasebut.
Kode Majelis Example |
EEPROM_waca:
; Ngenteni rampung nulis sadurunge sbic EECR,EEPE rjmp EEPROM_read ; Nyiyapake alamat (r18: r17) ing registrasi alamat metu EEARH, r18 metu EEARL, r17 ; Mulai eeprom diwaca kanthi nulis EERE sbi EECR,EERE ; Maca data saka dhaptar data ing r16,EEDR ret |
C Kode Example |
unsigned char EEPROM_read(unsigned char ucAddress)
{ / * Ngenteni rampung nulis sadurunge * / nalika (EECR & (1 < ; / * Nggawe dhaptar alamat * / EEAR = ucAddress; /* Miwiti eeprom diwaca kanthi nulis EERE */ EECR | = (1 < / * Bali data saka data register * / bali EEDR; } |
Nyegah Korupsi EEPROM
Sajrone wektu VCC kurang, data EEPROM bisa rusak amarga sumber voltage kurang banget kanggo CPU lan EEPROM supaya bisa mlaku kanthi bener. Masalah kasebut padha karo sistem level dewan nggunakake EEPROM, lan solusi desain sing padha kudu ditrapake.
Korupsi data EEPROM bisa disebabake dening rong kahanan nalika voltage kurang banget. Kaping pisanan, urutan nulis biasa menyang EEPROM mbutuhake volume minimaltage kanggo operasi kanthi bener. Kapindho, CPU dhewe bisa nindakake instruksi kanthi salah, yen pasokan voltage kurang banget.
Korupsi data EEPROM bisa dihindari kanthi gampang miturut rekomendasi desain iki:
Jaga AVR RESET tetep aktif (kurang) sajrone suplai listrik ora cukuptage. Iki bisa ditindakake kanthi ngaktifake Detektor Brown-out internal (BOD). Yen level deteksi BOD internal ora cocog karo
tingkat deteksi needed, sirkuit pangayoman ulang VCC kurang external bisa digunakake. Yen reset ana nalika operasi nulis lagi, operasi nulis bakal rampung kasedhiya yen sumber daya voltage cekap.
Aku / O Memori
Definisi ruang I / O ATtiny25 / 45/85 ditampilake ing "Ringkesan Dhaptar" ing kaca 200.
Kabeh ATtiny25 / 45/85 I / Os lan periferal dilebokake ing ruang I / O. Kabeh lokasi I / O bisa diakses kanthi instruksi LD / LDS / LDD lan ST / STS / STD, ngirim data ing antarane 32 dhaptar umum sing digunakake kanggo umum lan ruang I / O. I / O Registrasi ing sawetara alamat 0x00 - 0x1F bisa diakses kanthi gampang nggunakake instruksi SBI lan CBI. Ing register kasebut, regane bit siji bisa dicenthang kanthi nggunakake instruksi SBIS lan SBIC. Deleng bagean instruksi kanggo rincian liyane. Nalika nggunakake printah tartamtu I / O IN lan OUT, alamat I / O 0x00 - 0x3F kudu digunakake. Nalika ngatasi Registrasi I / O minangka ruang data nggunakake instruksi LD lan ST, 0x20 kudu ditambahake ing alamat kasebut.
Kanggo kompatibilitas karo piranti mbesuk, bit sing dilindhungi undhang-undhang kudu ditulis nol yen diakses. Alamat memori I / O sing dilindhungi undhang-undhang ora bakal ditulis.
Sawetara Panji Status dibersihake kanthi nulis sing logis. Elinga yen pandhuan CBI lan SBI mung bakal bisa digunakake ing bit sing ditemtokake, mula bisa digunakake ing dhaptar sing ana Gendéra Status. Pandhuan CBI lan SBI bisa digunakake kanthi registrasi 0x00 nganti 0x1F.
Daftar Kontrol I / O lan Periferal diterangake ing bagean sabanjure.
Dhaptar Dhaptar
TAUN - Daftar Alamat EEPROM
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1f | – | – | – | – | – | – | – | TAHUN8 | SETELU |
Maca / Nulis | R | R | R | R | R | R | R | R/W | |
Nilai wiwitan | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X/0 |
Bit 7: 1 - Res: Bit Reservasi
Bit kasebut dilindhungi undhang-undhang kanggo digunakake ing mbesuk lan bakal diwaca nol.
Bit 0 - TAHUN8: Alamat EEPROM
Iki minangka alamat EEPROM sing paling penting ing ATtiny85. Ing piranti kanthi EEPROM kurang, yaiku ATtiny25 / ATtiny45, bit iki dilindhungi undhang-undhang lan bakal diwaca nol. Nilai awal Registrasi EEPROM Address (EEAR) durung ditemtokake lan mula kudune ditulis sadurunge EEPROM diakses.
EEARL - Ndhaptar Alamat EEPROM
bit
0x1E | TAHUN7 | TAHUN6 | TAHUN5 | TAHUN4 | TAHUN3 | TAHUN2 | TAHUN1 | TAHUN0 | TAUN |
Mburi / Nulis | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Nilai wiwitan | X | X | X | X | X | X | X | X |
Bit 7 - TAHUN7: Alamat EEPROM
Iki minangka alamat EEPROM sing paling penting ing ATtiny45. Ing piranti kanthi EEPROM kurang, yaiku ATtiny25, bit iki dilindhungi undhang-undhang lan bakal diwaca nol. Nilai awal Daftar Alamat EEPROM (EEAR) durung ditemtokake lan mula kudune ditulis sadurunge EEPROM diakses.
Bit 6: 0 - TAUN [6: 0]: Alamat EEPROM
Iki minangka potongan (murah) saka Daftar Alamat EEPROM. Bita data EEPROM ditangani kanthi linear ing kisaran 0… (128/256 / 512-1). Nilai awal E taun durung ditemtokake lan mula kudu ditulis sadurunge EEPROM bisa diakses.
EEDR - Dhaptar Data EEPROM
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1d | EEDR7 | EEDR6 | EEDR5 | EEDR4 | EEDR3 | EEDR2 | EEDR1 | EEDR0 | EEDR |
Maca / Nulis | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Nilai wiwitan | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Kanggo operasi nulis EEPROM, Ndhaptar EEDR ngemot data sing bakal ditulis menyang EEPROM ing alamat sing diwenehake dening EEAR Register. Kanggo operasi diwaca EEPROM, EEDR ngemot data sing diwaca saka
EEPROM ing alamat sing diwenehake dening EEAR.
5.5.4 EECR - Daftar Kontrol EEPROM |
|||||||||
Bit 7 6 5 | 4 | 3 | 2 | 1 | 0 | ||||
0x1c – | – | EEPM1 | EEPM0 | EERIE | EEMPE | EEP | IKI | EECR | |
Maca / Nulis R R R / W | R/W | R/W | R/W | R/W | R/W | ||||
Nilai Awal 0 0 X | X | 0 | 0 | X | 0 |
Bit 7 - Res: Bit Reservasi
Bit iki dikatutake kanggo digunakake ing mbesuk lan bakal diwaca dadi 0 ing ATtiny25 / 45/85. Kanggo kompatibilitas karo piranti AVR mbesuk, tulisen wae nganti nol. Sawise maca, tutup saka sawetara iki.
Bit 6 - Res: Bit Reservasi
Bit iki dilindhungi undhang-undhang ing ATtiny25 / 45/85 lan bakal diwaca nol.
Bit 5: 4 - EEPM [1: 0]: Mode Mode Programming EEPROM
Setelan bit Programming EEPROM nemtokake tumindak pamrograman sing bakal dipicu nalika nulis EEPE. Sampeyan bisa program data ing siji operasi atom (mbusak nilai lawas lan program nilai anyar) utawa kanggo mbagi operasi Erase lan Tulis ing rong operasi sing beda. Wektu Pemrograman kanggo mode sing beda ditampilake ing Tabel 5-1. Nalika EEPE wis disetel, nulis apa wae menyang EEPMn bakal diabaikan. Sajrone ngreset, bit EEPMn bakal disetel maneh menyang 0b00 kajaba EEPROM sibuk program.
Tabel 5-1. Bit Mode EEPROM
EEPM1 | EEPM0 | Wektu Programming | Operasi |
0 | 0 | 3.4 ms | Mbusak lan Tulis ing sak operasi (Operasi Atom) |
0 | 1 | 1.8 ms | Mung Mbusak |
1 | 0 | 1.8 ms | Mung Tulis |
1 | 1 | – | Reserved kanggo nggunakake mangsa |
Bit 3 - EERIE: EEPROM Siap Ganggu Ngaktifake
Nulis EERIE siji nggawe EEPROM Ready Interrupt yen I-bit ing SREG wis disetel. Nulis EERIE nganti nol ora bisa ngganggu. Gangguan Siap EEPROM ngasilake gangguan terus-terusan nalika memori Non-molah malih siyap kanggo program.
Bit 2 - EEMPE: Program Master EEPROM Aktifake
Bit EEMPE nemtokake manawa nulis EEPE menyang siji bakal ditrapake utawa ora.
Nalika EEMPE disetel, nyetel EEPE sajrone patang siklus jam bakal program EEPROM ing alamat sing dipilih. Yen EEMPE nol, setelan EEPE ora bakal ditrapake. Nalika EEMPE wis ditulis siji kanthi piranti lunak, perangkat keras bakal ilang nganti nol sawise patang siklus jam.
Bit 1 - EEPE: Program EEPROM Aktif
Program EEPROM Aktifake Sinyal EEPE minangka sinyal sing ngaktifake program menyang EEPROM. Nalika EEPE ditulis, EEPROM bakal diprogram miturut setelan bit EEPMn. Bit EEMPE kudu ditulis siji sadurunge logis ditulis menyang EEPE, yen ora, ora ana nulis EEPROM. Yen wektu akses nulis wis kliwat, bit EEPE bakal diresiki nganggo piranti keras. Yen EEPE wis disetel, CPU mandheg rong siklus sadurunge instruksi sabanjure ditindakake.
Bit 0 - EERE: EEPROM Maca Aktifake
EEPROM Read Enable Signal - EERE - minangka strobo sing diwaca menyang EEPROM. Nalika alamat sing bener wis disiyapake ing Daftar EEAR, bit EERE kudu ditulis menyang siji kanggo micu maca EEPROM. Akses diwaca EEPROM njupuk siji instruksi, lan data sing dijaluk kasedhiya langsung. Nalika EEPROM diwaca, CPU dihentikan nganti patang siklus sadurunge instruksi sabanjure ditindakake. Pangguna kudu milih poling EEPE sadurunge miwiti operasi maca. Yen operasi nulis lagi ditindakake, ora bisa maca EEPROM, utawa ora bakal ngganti Dhaptar EEAR.
Pilihan Sistem Jam lan Jam
Sistem Jam lan Distribusi
Jam CPU
Jam CPU diarahake menyang bagean-bagean sistem sing ana gandhengane karo operasi inti AVR. Exampmod sing kaya ngono yaiku Daftar Tujuan Umum File, Dhaptar Status lan memori Data sing nyekel Stack Pointer. Mungkasi jam CPU ngalangi inti supaya ora nindakake operasi lan petungan umum.
Jam I / O - clkI / O
Jam I / O digunakake dening mayoritas modul I / O, kayata Timer / Counter. Jam I / O uga digunakake dening modul Interrupt External, nanging elinga sawetara gangguan eksternal dideteksi kanthi logika asinkron, saengga gangguan kasebut bisa dideteksi sanajan jam I / O dihentikan.
Jam Flash - clkFLASH
Jam Flash ngontrol operasi antarmuka Flash. Jam Flash biasane aktif bebarengan karo jam CPU.
Jam ADC - clkADC
ADC diwenehake karo domain jam khusus. Iki ngidini nyetop jam CPU lan I / O supaya bisa nyuda swara sing digawe dening sirkuit digital. Iki menehi asil konversi ADC sing luwih akurat.
PLL Internal kanggo Generasi Jam Periferal Cepet - clkPCK
PLL internal ing ATtiny25 / 45/85 ngasilake frekuensi jam sing 8x dikalikan saka input sumber. Kanthi gawan, PLL nggunakake output osilator RC 8.0 MHz internal minangka sumber. Utawa, yen dicokot LSM saka PLLCSR, PLL bakal nggunakake output osilator RC sing dibagi dadi loro. Dadi output PLL, jam periferal sing cepet yaiku 64 MHz. Jam periferal sing cepet, utawa jam sing wis ditemtokake, bisa dipilih minangka sumber jam kanggo Timer / Counter1 utawa minangka jam sistem. Waca Gambar 6-2. Frekuensi jam periferal cepet dipérang dadi loro nalika LSM saka PLLCSR disetel, ngasilake frekuensi jam 32 MHz. Elinga, yen LSM ora bisa disetel yen PLLCLK digunakake minangka jam sistem.
Gambar 6-2. Sistem Jam PCK.
PLL dikunci ing osilator RC lan nyetel osilator RC liwat register OSCCAL bakal nyetel jam periferal sing cepet sekaligus. Nanging, sanajan osilator RC dijupuk nganti frekuensi sing luwih dhuwur tinimbang 8 MHz, frekuensi jam periferal cepet jenuh ing 85 MHz (kasus paling ala) lan tetep ayun ing frekuensi maksimum. Perlu dielingake yen PLL ing kasus iki ora dikunci maneh nganggo jam osilator RC. Mula, disaranake ora njupuk pangaturan OSCCAL kanthi frekuensi sing luwih dhuwur tinimbang 8 MHz supaya PLL tetep tetep ing kisaran operasi sing bener.
PLL internal diaktifake nalika:
Cithakan PLLE ing dhaptar PLLCSR wis disetel.
Sekering CKSEL diprogram dadi '0001'.
Sekering CKSEL diprogram dadi '0011'.
PLOCK bit PLLCSR disetel nalika PLL dikunci. Loro-lorone osilator RC internal lan PLL dipateni ing mode turu mudhun lan siyaga.
PLL internal ing Mode Kompatibilitas ATtiny15
Wiwit ATtiny25 / 45/85 minangka piranti migrasi kanggo pangguna ATtiny15, ana mode kompatibilitas ATtiny15 kanggo kompatibilitas mburi. Mode kompatibilitas ATtiny15 dipilih kanthi program CKSEL sekring dadi '0011'.
Ing mode kompatibilitas ATtiny15 frekuensi osilator RC internal dikalibrasi dadi 6.4 MHz lan faktor perkalian PLL disetel dadi 4x. Waca Gambar 6-3. Kanthi pangaturan kasebut, sistem jam bisa kompatibel karo ATtiny15 lan jam periferal sing cepet ngasilake frekuensi 25.6 MHz (padha karo ATtiny15).
Gambar 6-3. Sistem Jam PCK ing Mode Kompatibilitas ATtiny15.
Sumber Jam
Piranti kasebut duwe opsi sumber jam ing ngisor iki, bisa dipilih nganggo bit Flash Fuse kaya sing kapacak ing ngisor iki. Jam saka sumber sing dipilih minangka input menyang generator jam AVR, lan diterusake menyang modul sing cocog.
Tabel 6-1. Pilihan Jam Piranti Pilih
Pilihan Clocking Piranti | CKSEL[3:0](1) |
Jam njaba (ndeleng kaca 26) | 0000 |
Jam PLL Frekuensi Tinggi (ndeleng kaca 26) | 0001 |
Osilator Internal Kalibrasi (ndeleng kaca 27) | 0010(2) |
Osilator Internal Kalibrasi (ndeleng kaca 27) | 0011(3) |
Osilator 128 kHz internal (ndeleng kaca 28) | 0100 |
Osilator Kristal Frekuensi Rendah (ndeleng kaca 29) | 0110 |
Osilator Kristal / Resonator Keramik (ndeleng kaca 29) | 1000 – 1111 |
dilindhungi | 0101, 0111 |
Kanggo kabeh sekring, "1" tegese ora diprogram lan "0" tegese wis diprogram.
Piranti dikirim nganggo pilihan sing dipilih.
Iki bakal milih Mode Kompatibilitas ATtiny15, ing endi jam sistem dipérang dadi papat, nyebabake frekuensi jam 1.6 MHz. Kanggo inormasi liyane, waca "Osilator Internal Kalibrasi" ing kaca 27.
Pilihan macem-macem kanggo saben pilihan jam diwenehake ing bagean ing ngisor iki. Nalika CPU tangi saka Power-down, sumber jam sing dipilih digunakake kanggo nyiyapake wiwitan, supaya operasi Osilator stabil sadurunge eksekusi instruksi diwiwiti. Nalika CPU diwiwiti maneh, ana wektu tundha tambahan sing ngidini kekuwatan bisa nggayuh level sing stabil sadurunge miwiti operasi normal. Watchdog Oscillator digunakake kanggo nyetel bagean wektu nyata wektu wiwitan. Jumlah siklus WDT Osilator sing digunakake kanggo saben wektu entek ditampilake ing Tabel 6-2.
Tabel 6-2. Jumlah Siklus Osilator Watchdog
Ketik Time-out | Jumlah Siklus |
4 ms | 512 |
64 ms | 8K (8,192) |
Jam njaba
Kanggo nyopir piranti saka sumber jam eksternal, CLKI kudu didhukung kaya sing ditampilake ing Gambar 6-4. Kanggo mbukak piranti ing jam eksternal, sekring CKSEL kudu diprogram dadi "00".
Gambar 6-4. Konfigurasi Drive Jam Eksternal
Yen sumber jam iki dipilih, kaping wiwitan diwiwiti dening SUT Fuse kaya sing ditampilake ing Tabel 6-3.
Tabel 6-3. Wektu wiwitan kanggo Pilihan Jam Eksternal
SUT[1:0] | Wektu Start-up saka Power-down | Penundaan Tambahan saka Reset | Dianjurake Dianggo |
00 | 6 CK | 14CK | BOD diaktifake |
01 | 6 CK | 14CK + 4 ms | Cepet munggah daya |
10 | 6 CK | 14CK + 64 ms | Alon-alon mundhak daya |
11 | dilindhungi |
Nalika ngetrapake jam eksternal, dibutuhake supaya ora ana owah-owahan frekuensi frekuensi sing ditrapake kanggo operasi MCU sing stabil. Variasi frekuensi luwih saka 2% saka siji siklus jam menyang siklus sabanjure bisa nyebabake tumindak sing ora bisa diprediksi. Sampeyan kudu mesthekake yen MCU disimpen ing Reset sajrone owah-owahan frekuensi jam kasebut.
Elinga manawa System Clock Presale bisa digunakake kanggo ngetrapake pangowahan jangka frekuensi saka frekuensi jam internal nalika isih njamin operasi sing stabil. Rujuk menyang "Sistem Jam Prescaler" ing kaca 31 kanggo rincian.
Jam PLL Frekuensi Tinggi
Ana PLL internal sing nyedhiyakake tarif jam 64 MHz kanthi nominal sing dikunci menyang RC Oscillator kanggo panggunaan Timer Periferal / Counter1 lan kanggo sumber jam sistem. Yen dipilih dadi sumber jam sistem, kanthi program - gabungan CKSEL dadi '0001', dipérang dadi papat kaya sing ditampilake ing Tabel 6-4.
Tabel 6-4. Mode Operasi Jam PLL Frekuensi Dhuwur
CKSEL[3:0] | Frekuensi Nominal |
0001 | 16 MHz |
Yen sumber jam iki dipilih, kaping wiwitan bakal ditemtokake dening sekring SUT kaya sing ditampilake ing Tabel 6-5.
Tabel 6-5. Wektu wiwitan kanggo Jam PLL Frekuensi Dhuwur
SUT[1:0] | Wektu Start-up saka Power Down | Tundha Tambahan saka Reset Daya (VCC = 5.0V) | Dianjurake panggunaan |
00 | 14CK + 1K (1024) CK + 4 ms | 4 ms | BOD diaktifake |
Tabel 6-5. Wektu wiwitan kanggo Jam PLL Frekuensi Dhuwur
SUT[1:0] | Wektu Start-up saka Power Down | Tundha Tambahan saka Reset Daya (VCC = 5.0V) | Dianjurake panggunaan |
01 | 14CK + 16K (16384) CK + 4 ms | 4 ms | Cepet munggah daya |
10 | 14CK + 1K (1024) CK + 64 ms | 4 ms | Alon-alon mundhak daya |
11 | 14CK + 16K (16384) CK + 64 ms | 4 ms | Alon-alon mundhak daya |
Osilator Internal Kalibrasi
Kanthi gawan, Internal RC Osilator nyedhiyakake kira-kira jam 8.0 MHz. Sanadyan voltage lan gumantung suhu, jam iki bisa dikalibrasi kanthi akurat dening pangguna. Waca “Osilator RC Internal Kalibrasi racy ”ing kaca 164 lan "Kecepatan Osilator Internal" ing kaca 192 kanggo rincian liyane. Piranti kasebut dikirim karo Fuse CKDIV8 sing wis diprogram. Waca "Sistem Jam Prescaler" ing kaca 31 kanggo rincian liyane.
Jam iki bisa dipilih minangka jam sistem kanthi program CKSEL Fuse kaya sing ditampilake ing Tabel 6-6 ing kaca
27. Yen dipilih, bakal operate tanpa komponen eksternal. Sajrone reset, hardware ngemot angka kalibrasi sing wis diprogram menyang OSCCAL Register lan kanthi otomatis kalibrasi RC Oscillator. Akurasi kalibrasi iki ditampilake minangka kalibrasi Pabrik ing Tabel 21-2 ing kaca 164.
Kanthi ngganti dhaptar OSCCAL saka SW, waca "OSCCAL - Ndhaptar Kalibrasi Osilator" ing kaca 31, sampeyan bisa entuk akurasi kalibrasi sing luwih dhuwur tinimbang nggunakake kalibrasi pabrik. Akurasi kalibrasi iki ditampilake minangka Kalibrasi pangguna ing Tabel 21-2 ing kaca 164.
Nalika Osilator iki digunakake minangka jam chip, Osilator Watchdog isih bakal digunakake kanggo Watchdog Timer lan kanggo Reset Time-out. Kanggo informasi luwih lengkap babagan nilai kalibrasi sing wis diprogram, deleng bagean kasebut "Kali- bration Bytes ”ing kaca 150.
Osilator internal uga bisa disetel kanggo nyedhiyakake jam 6.4 MHz kanthi nulis sekring CKSEL dadi "0011", kaya sing ditampilake ing Tabel 6-6 ngisor iki Setelan iki dikatutake minangka Mode Kompatibilitas ATtiny15 lan dimaksudake kanggo nyedhiyakake sumber jam sing dikalibrasi ing 6.4 MHz, kaya ing ATtiny15. Ing Mode Kompatibilitas ATtiny15, PLL nggunakake osilator internal sing mlaku ing 6.4 MHz kanggo ngasilake sinyal jam periferal 25.6 MHz kanggo Timer / Counter1 (waca “Timer / Counter8 1-bit ing Mode ATtiny15 "ing kaca 95). Elinga yen ing mode operasi iki, sinyal jam 6.4 MHz mesthi dipérang dadi papat, nyedhiyakake jam sistem 1.6 MHz.
Tabel 6-6. Mode Operasi Osilator RC Internal Calibrated
CKSEL[3:0] | Frekuensi Nominal |
0010(1) | 8.0 MHz |
0011(2) | 6.4 MHz |
Piranti dikirim nganggo pilihan sing dipilih.
Setelan iki bakal milih Mode Kompatibilitas ATtiny15, ing endi jam sistem dibagi papat, dadi frekuensi jam 1.6 MHz.
Nalika osilator internal 8 MHz sing dikalibrasi dipilih dadi sumber jam, kaping wiwitan diwiwiti dening Fuse SUT kaya sing ditampilake Tabel 6-7 ngisor.
Tabel 6-7. Wektu wiwitan kanggo Jam Osilator RC Dikalibrasi Internal
SUT[1:0] | Wektu Start-up saka Power-down | Tundha Tambahan saka Reset (VCC = 5.0V) | Dianjurake Dianggo |
00 | 6 CK | 14CK(1) | BOD diaktifake |
01 | 6 CK | 14CK + 4 ms | Cepet munggah daya |
10(2) | 6 CK | 14CK + 64 ms | Alon-alon mundhak daya |
11 | dilindhungi |
1. Yen sekring RSTDISBL diprogram, wektu wiwitan iki bakal ditambah dadi 14CK + 4 ms kanggo mesthekake mode pamrograman bisa dilebokake.
2. Piranti dikirim nganggo pilihan sing dipilih.
Ing ATtiny15 Mode Kompatibilitas kaping wiwitan ditemtokake dening sekring SUT kaya sing ditampilake ing Tabel 6-8 ngisor.
Tabel 6-8. Wektu wiwitan kanggo Jam Osilator RC Dikalibrasi Internal (ing Mode ATtiny15)
SUT[1:0] | Wektu Start-up saka Power-down | Tundha Tambahan saka Reset (VCC = 5.0V) | Dianjurake Dianggo |
00 | 6 CK | 14CK + 64 ms | |
01 | 6 CK | 14CK + 64 ms | |
10 | 6 CK | 14CK + 4 ms | |
11 | 1 CK | 14CK(1) |
Cathetan: Yen sekring RSTDISBL wis diprogram, wektu wiwitan iki bakal ditambah dadi 14CK + 4 ms kanggo mesthekake mode program bisa dilebokake.
Ringkesan, informasi luwih lengkap babagan Mode Kompatibilitas ATtiny15 bisa ditemokake ing bagean "Port B (PB5: PB0)" ing kaca 2, "PLL Internal ing Mode Kompatibilitas ATtiny15" ing kaca 24, "8-bit Timer / Counter1 ing Mode ATtiny15" ing kaca 95, "Watesan debugWIRE" ing kaca 140, "Bytes Kalibrasi" ing kaca 150 lan ing meja "Prescaler Jam Pilih ”ing kaca 33.
Osilator 128 kHz internal
Osilator internal 128 kHz minangka Osilator daya rendah sing nyedhiyakake jam 128 kHz. Frekuensi nominal ing 3V lan 25°C. Jam iki bisa dipilih minangka jam sistem kanthi program CKSEL Fuses dadi "0100".
Yen sumber jam iki dipilih, kaping wiwitan diwiwiti dening SUT Fuse kaya sing ditampilake ing Tabel 6-9.
Tabel 6-9. Wektu wiwitan kanggo Osilator Internal 128 kHz
SUT[1:0] | Wektu Start-up saka Power-down | Penundaan Tambahan saka Reset | Dianjurake Dianggo |
00 | 6 CK | 14CK(1) | BOD diaktifake |
01 | 6 CK | 14CK + 4 ms | Cepet munggah daya |
10 | 6 CK | 14CK + 64 ms | Alon-alon mundhak daya |
11 | dilindhungi |
Cathetan: Yen sekring RSTDISBL wis diprogram, wektu wiwitan iki bakal ditambah dadi 14CK + 4 ms kanggo mesthekake mode program bisa dilebokake.
Osilator Kristal Frekuensi Rendah
Kanggo nggunakake kristal arloji 32.768 kHz minangka sumber jam kanggo piranti, Osilator Kristal frekuensi rendah kudu dipilih kanthi nyetel sekring CKSEL dadi '0110'. Kristal kudu disambungake kaya sing ditampilake ing Gambar 6-5. Kanggo nemokake kapasitas muatan sing cocog kanggo crysal 32.768 kHz, waca konsultasi karo pabrikan.
Nalika osilator iki dipilih, kaping wiwitan bakal ditemtokake dening sekring SUT kaya sing dituduhake ing Tabel 6-10.
Tabel 6-10. Wektu wiwitan kanggo Pilihan Jam Osilator Kristal Frekuensi Rendah
SUT[1:0] | Wektu Start-up saka Power Down | Tundha Tambahan saka Reset (VCC = 5.0V) | Dianjurake panggunaan |
00 | 1K (1024) CK(1) | 4 ms | Cepet munggah daya utawa BOD aktif |
01 | 1K (1024) CK(1) | 64 ms | Alon-alon mundhak daya |
10 | 32K (32768) CK | 64 ms | Frekuensi stabil nalika wiwitan |
11 | dilindhungi |
Cathetan: Opsi iki kudu digunakake mung yen stabilitas frekuensi nalika wiwitan ora penting.
Osilator Kristal frekuensi rendah nyedhiyakake kapasitas internal, deleng Tabel 6-11 ing saben pin TOSC.
Tabel 6-11. Kapasitansi Osilator Kristal Frekuensi Rendah
piranti | 32 kHz Osc. Jinis | Tutup (Xtal1 / Tosc1) | Tutup (Xtal2 / Tosc2) |
ATtiny25 / 45/85 | Sistem Osc. | 16 pF | 6 pF |
Osilator Kristal / Resonator Keramik
XTAL1 lan XTAL2 minangka input lan output, saben kuwalik amplifer sing bisa diatur kanggo digunakake minangka Oscillator on-chip, kaya sing ditampilake ing Gambar 6-5. Salah siji kristal kuarsa utawa resonator keramik bisa digunakake.
C1 lan C2 kudu tansah padha kanggo kristal lan resonator. Nilai optimal saka kapasitor gumantung ing kristal utawa resonator digunakake, jumlah kapasitansi kesasar, lan gangguan elektromagnetik lingkungan. Sawetara pedoman awal kanggo milih kapasitor kanggo nggunakake kristal diwenehi ing Tabel 6-12 ngisor iki Kanggo resonator keramik, angka kapasitor sing diwenehake dening pabrikan kudu digunakake.
Tabel 6-12. Mode Operasi Osilator Kristal
CKSEL[3:1] | Range Frekuensi (MHz) | Rentang sing Disaranake kanggo Kapasitor C1 lan C2 kanggo Gunakake Kristal (pF) |
100(1) | 0.4 – 0.9 | – |
101 | 0.9 – 3.0 | 12 – 22 |
110 | 3.0 – 8.0 | 12 – 22 |
111 | 8.0 – | 12 – 22 |
Cathetan: Opsi iki ora kudu digunakake karo kristal, mung karo resonator keramik.
Osilator bisa dioperasikake ing telung mode sing beda-beda, saben dioptimalake kanggo kisaran frekuensi tartamtu. Mode operasi dipilih dening sekring CKSEL [3: 1] kaya sing ditampilake ing Tabel 6-12.
Sekering CKSEL0 bebarengan karo SUT [1: 0] Seksi milih kaping wiwitan kaya sing ditampilake ing Tabel 6-13.
Tabel 6-13. Wektu wiwitan kanggo Pilihan Jam Osilator Kristal
CKSEL0 | SUT[1:0] | Wektu Start-up saka Power-down | Penundaan Tambahan saka Reset | Dianjurake Dianggo |
0 | 00 | 258 CK(1) | 14CK + 4 ms | Resonator keramik, tenaga munggah kanthi cepet |
0 | 01 | 258 CK(1) | 14CK + 64 ms | Resonator keramik, alon-alon nambah tenaga |
0 | 10 | 1K (1024) CK(2) | 14CK | Resonator keramik, aktif BOD |
0 | 11 | 1K (1024) CK(2) | 14CK + 4 ms | Resonator keramik, tenaga munggah kanthi cepet |
1 | 00 | 1K (1024) CK(2) | 14CK + 64 ms | Resonator keramik, alon-alon nambah tenaga |
1 | 01 | 16K (16384) CK | 14CK | Osilator Kristal, aktif BOD |
1 | 10 | 16K (16384) CK | 14CK + 4 ms | Osilator Kristal, tenaga sing saya cepet |
1 | 11 | 16K (16384) CK | 14CK + 64 ms | Osilator Kristal, alon-alon nambah tenaga |
Cathetan
Opsi kasebut mung kudu digunakake nalika ora operasi cedhak frekuensi maksimum piranti, lan mung yen stabilitas frekuensi nalika wiwitan ora penting kanggo aplikasi kasebut. Opsi kasebut ora cocog kanggo kristal.
Opsi iki ditrapake kanggo resonator keramik lan bakal njamin stabilitas frekuensi nalika wiwitan. Uga bisa digunakake nganggo kristal nalika ora operasi cedhak karo frekuensi maksimum piranti, lan yen stabilitas frekuensi nalika wiwitan ora penting kanggo aplikasi kasebut.
Sumber Jam Default
Piranti kasebut dikirim nganggo CKSEL = "0010", SUT = "10", lan CKDIV8 sing wis diprogram. Dadi, sumber sumber jam standar mula yaiku Internal RC Oscillator mlaku ing 8 MHz kanthi wektu wiwitan paling dawa lan presensi jam sistem dhisikan 8, ngasilake jam sistem 1.0 MHz. Setelan gawan iki njamin manawa kabeh pangguna bisa nggawe setelan sumber jam sing dikarepake kanthi nggunakake In-System utawa High-voltage Programer.
Pengatur Jam Sistem
Jam sistem ATtiny25 / 45/85 bisa dipisahake kanthi nyetel "CLKPR - Daftar Prescale Jam" ing kaca 32. Fitur iki bisa digunakake kanggo nyuda konsumsi daya nalika syarat daya pangolahan kurang. Iki bisa digunakake karo kabeh opsi sumber jam, lan iku bakal mengaruhi frekuensi jam saka CPU lan kabeh peripherals sinkron. clkI/O, clkADC, clkCPU, lan clkFLASH dipérang dadi faktor kaya sing dituduhake ing Tabel 6-15 ing kaca 33.
Ngalih Wektu
Nalika ngoper ing antarane setelan prescaler, System Clock Prescaler njamin ora ana gangguan ing sistem jam lan ora ana frekuensi menengah sing luwih dhuwur tinimbang frekuensi jam sing cocog karo setelan sadurunge, utawa frekuensi jam sing cocog karo setelan anyar.
Meja riak sing ngetrapake prescaler mlaku ing frekuensi jam sing durung dipisahake, sing bisa luwih cepet tinimbang frekuensi jam CPU. Mula, ora bisa nemtokake kahanan prescaler - sanajan bisa diwaca, lan wektu sing tepat kanggo ngalih saka divisi jam menyang liyane ora bisa diprediksi kanthi tepat.
Saka nilai CLKPS ditulis, butuh wektu antara T1 + T2 lan T1 + 2 * T2 sadurunge frekuensi jam anyar aktif. Ing interval iki, diprodhuksi 2 sudhut jam aktif. Ing kene, T1 minangka periode jam sadurunge, lan T2 minangka periode sing cocog karo setelan prescaler anyar.
Buffer Output Jam
Piranti kasebut bisa ngetokake jam sistem ing pin CLKO (yen ora digunakake minangka pin XTAL2). Kanggo ngaktifake output, CKOUT Fuse kudu diprogram. Mode iki cocog nalika jam chip digunakake kanggo nyopir sirkuit liyane ing sistem. Elinga yen jam ora bakal output nalika disetel maneh lan operasi normal pin I / O bakal diganti nalika sekring wis diprogram. Osilator RC Internal, Osilator WDT, PLL, lan jam eksternal (CLKI) bisa dipilih nalika jam output ing CLKO. Osilator kristal (XTAL1, XTAL2) ora bisa digunakake kanggo output jam ing CLKO. Yen System Clock Prescaler digunakake, yaiku jam sistem sing beda yaiku output.
Dhaptar Dhaptar
OSCCAL - Ndhaptar Kalibrasi Osilator
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x31 | CAL7 | CAL6 | CAL5 | CAL4 | CAL3 | CAL2 | CAL1 | CAL0 | OSCCAL |
Maca / Nulis | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Bit 7: 0 - CAL [7: 0]: Nilai Kalibrasi Osilator
Ndhaptar Kalibrasi Osilator digunakake kanggo motong Osilator RC Internal Kalibrasi kanggo ngilangi varia proses saka frekuensi osilator. Nilai kalibrasi sing wis diprogram kanthi otomatis ditulis ing dhaptar iki sajrone nyetel chip, menehi frekuensi kalibrasi Pabrik kaya sing wis ditemtokake ing Tabel 21-2 ing kaca 164. Piranti lunak aplikasi bisa nulis dhaptar iki kanggo ngganti frekuensi osilator. Osilator bisa dikalibrasi karo frekuensi kaya sing ditemtokake ing Tabel 21-2 ing kaca 164. Kalibrasi ing sanjabane kisaran kasebut ora bisa dijamin.
Elinga yen osilator iki digunakake kanggo akses EEPROM lan Flash kanthi cepet, lan wektu nulis kasebut bakal kena pengaruh. Yen EEPROM utawa Flash ditulis, aja kalibrasi luwih saka 8.8 MHz. Yen ora, nulis EEPROM utawa Flash bisa uga gagal.
Bit CAL7 nemtokake macem-macem operasi kanggo osilator. Setel iki dadi 0 menehi sawetara frekuensi paling murah, nyetel ukuran iki dadi 1 menehi sawetara frekuensi paling dhuwur. Rong rentang frekuensi kasebut tumpang tindih, kanthi tembung setting OSCCAL = 0x7F menehi frekuensi luwih dhuwur tinimbang OSCCAL = 0x80.
Bit CAL [6: 0] digunakake kanggo nyetel frekuensi ing kisaran sing dipilih. Setelan 0x00 menehi frekuensi paling murah ing kisaran kasebut, lan setelan 0x7F menehi frekuensi paling dhuwur ing kisaran kasebut.
Kanggo mesthekake yen operasi MCU stabil, nilai kalibrasi kudu diganti sethithik. Variasi frekuensi luwih saka 2% saka siji siklus menyang siklus sabanjure bisa nyebabake tumindak sing ora ditemtokake. Pangowahan ing OSCCAL ora kudu ngluwihi 0x20 kanggo saben kalibrasi. Sampeyan kudu mesthekake yen MCU disimpen ing Reset sajrone owah-owahan frekuensi jam kasebut
Tabel 6-14. Range Frekuensi Osilator RC Internal
Nilai OSCCAL | Frekuensi Paling Apik Paling Apik Babagan Frekuensi Nominal | Frekuensi Paling Dhuwur Biasane Babagan Frekuensi Nominal |
0x00 | 50% | 100% |
0x3f | 75% | 150% |
0x7f | 100% | 200% |
CLKPR - Daftar Prescale Jam
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x26 | CLKPCE | – | – | – | CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | CLKPR |
Maca / Nulis | R/W | R | R | R | R/W | R/W | R/W | R/W |
Nilai Awal 0 0 0 0 Waca Katrangan Bit
Bit 7 - CLKPCE: Ganti Prescaler Jam Aktifake
Bit CLKPCE kudu ditulis kanggo logika supaya bisa ngganti bit CLKPS. Bit CLKPCE mung dianyari nalika bit liyane ing CLKPR ditulis kanthi nol dadi nol. CLKPCE diresiki nganggo piranti keras papat siklus sawise ditulis utawa nalika bit CLKPS ditulis. Nulis maneh bit CLKPCE sajrone wektu entek iki uga ora ngluwihi wektu entek, uga ora mbusak bit CLKPCE.
Bit 6: 4 - Res: Bit Reservasi
Bit kasebut minangka bit cadangan ing ATtiny25 / 45/85 lan bakal diwaca nol.
Bit 3: 0 - CLKPS [3: 0]: Prescaler Jam Pilih Bit 3 - 0
Bit kasebut nemtokake faktor divisi antarane sumber jam sing dipilih lan jam sistem internal. Bit kasebut bisa ditulis jangka wektu kanggo beda-beda frekuensi jam sing cocog karo syarat aplikasi. Nalika pamisah misahake input jam master menyang MCU, kacepetan kabeh periferal sinkronis dikurangi nalika digunakake faktor divisi. Faktor divisi diwenehake ing Tabel 6-15.
Kanggo ngindhari frekuensi jam sing ora disengaja, prosedur nulis khusus kudu diikuti kanggo ngganti bit CLKPS:
Tulis Cards Prescaler Change Enable (CLKPCE) dadi siji lan kabeh bit liyane ing CLKPR dadi nol.
Sajrone patang siklus, tulis angka sing dikarepake ing CLKPS nalika nulis angka nol menyang CLKPCE.
Gangguan kudu dipateni nalika ngganti setelan prescaler supaya prosedur nulis ora diganggu.
CKDIV8 Fuse nemtokake nilai awal bit CLKPS. Yen CKDIV8 ora diprogram, bit CLKPS bakal direset menyang "0000". Yen CKDIV8 diprogram, bit CLKPS direset menyang "0011", menehi faktor divisi wolung nalika wiwitan. Fitur iki kudu digunakake yen sumber jam sing dipilih nduweni frekuensi sing luwih dhuwur tinimbang frekuensi maksimum piranti ing kahanan operasi saiki. Elinga yen sembarang nilai bisa ditulis kanggo bit CLKPS preduli saka setelan CKDIV8 Fuse. Piranti lunak Aplikasi kudu mesthekake yen faktor divisi cukup
dipilih yen sumber jam sing dipilih duwe frekuensi sing luwih dhuwur tinimbang frekuensi maksimum piranti ing kahanan operasi saiki. Piranti kasebut dikirim karo Fuse CKDIV8 sing wis diprogram.
Tabel 6-15. Clock Prescaler Pilih
CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | Faktor Divisi Jam |
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 | dilindhungi |
1 | 0 | 1 | 0 | dilindhungi |
1 | 0 | 1 | 1 | dilindhungi |
1 | 1 | 0 | 0 | dilindhungi |
1 | 1 | 0 | 1 | dilindhungi |
1 | 1 | 1 | 0 | dilindhungi |
1 | 1 | 1 | 1 | dilindhungi |
Wigati: Prescaler dipatèni ing mode kompatibilitas ATtiny15 lan ora nulis kanggo CLKPR, utawa program CKDIV8 sekring duweni pengaruh ing jam sistem (kang bakal tansah 1.6 MHz).
Manajemen Daya lan Mode Turu
Efisiensi kode kinerja sing dhuwur lan industri nggawe microcontroll AVR dadi pilihan sing cocog kanggo aplikasi daya sithik. Kajaba iku, mode turu ngaktifake aplikasi kanggo mateni modul sing ora digunakake ing MCU, mula ngirit daya. AVR nyedhiyakake macem-macem mode turu supaya pangguna bisa ngonsumsi konsumsi daya miturut syarat aplikasi.
Mode Turu
Gambar 6-1 ing kaca 23 nampilake macem-macem sistem jam lan distribusi ing ATtiny25 / 45/85. Tokoh kasebut bisa mbantu milih mode turu sing cocog. Tabel 7-1 nuduhake mode turu sing beda lan sumber bangunane.
Tabel 7-1. Domain Jam Aktif lan Sumber Wake-up ing Mode Turu sing Beda
Domain Jam Aktif | Osilator | Sumber Bangkit | ||||||||||
Mode Turu | clkCPU | clkFLASH | clkIO | clkADC | clkPCK | Sumber Jam Utama Diaktifake | INT0 lan Pin Change | SPM / EEPROM
siyap |
Kahanan Wiwitan USI |
ADC | I/O liyane | Pengawas ngganggu |
nganggur | X | X | X | X | X | X | X | X | X | X | ||
Pangirangan Noise ADC | X | X | X(1) | X | X | X | X | |||||
Daya mudhun | X(1) | X | X |
Cathetan: Kanggo INT0, mung level interrupt.
Kanggo ngetik salah siji saka telung mode turu, bit SE ing MCUCR kudu ditulis menyang logika siji lan instruksi TURU kudu dieksekusi. SM [1: 0] bit ing Daftar MCUCR pilih mode turu endi (Idle, ADC Noise Reduction utawa Power-down) sing bakal diaktifake kanthi instruksi SLEEP. Waca Tabel 7-2 kanggo ringkesan.
Yen ngganggu aktif nalika MCU ana ing mode turu, MCU tangi. MCU banjur dihentikan patang siklus saliyane wektu wiwitan, nglakokake rutinitas interupsi, lan nerusake eksekusi saka pandhuan sawise SLEEP. Isi Daftar File lan SRAM ora owah nalika piranti tangi turu. Yen ana reset sajrone mode turu, MCU tangi lan nglakokake saka Reset Vector.
Cathetan: yen level sing dipicu interupsi digunakake kanggo tangi, level sing diganti kudu ditahan sawetara wektu kanggo tangi MCU (lan supaya MCU mlebu rutinitas layanan interupsi). Delengen "Gangguan Eksternal" ing kaca 49 kanggo rincian.
Mode Idle
Nalika bit SM[1:0] ditulis dadi 00, instruksi SLEEP ndadekake MCU mlebu mode Idle, mungkasi CPU nanging ngidini Analog Comparator, ADC, USI, Timer/Counter, Watchdog, lan sistem interupsi kanggo nerusake operasi. ating. Mode turu iki biasane mandheg clkCPU lan clkFLASH, nalika ngidini jam liyane mlaku.
Mode iddle mbisakake MCU tangi saka gangguan sing dipicu eksternal uga internal kaya Timer Overflow. Yen tangi saka gangguan Analog Comparator ora dibutuhake, Comparator Analog bisa diaktifake kanthi nyetel ACD ing "ACSR - Kontrol Comparator Analog lan Dhaptar Status" ing kaca 120. Iki bakal nyuda konsumsi daya ing mode Idle. Yen ADC diaktifake, konversi bakal diwiwiti kanthi otomatis nalika mode iki dilebokake.
Mode Ngurangi Noise ADC
Nalika bit SM [1: 0] ditulis kanggo 01, instruksi SLEEP ndadekake MCU mlebu mode ADC Noise Reduction, mungkasi CPU nanging ngidini ADC, interrupts eksternal, lan Watchdog terus operasi (yen diaktifake). Mode turu iki mandheg clkI/O, clkCPU, lan clkFLASH, nalika ngidini jam liyane mlaku.
Iki nambah lingkungan swara kanggo ADC, supaya pangukuran résolusi luwih dhuwur. Yen ADC diaktifake, konversi bakal diwiwiti kanthi otomatis nalika mode iki dilebokake. Kajaba mbentuk interupsi ADC Conversion Lengkap, mung Reset Eksternal, Reset Watchdog, Reset Brown-out, SPM / EEPROM siap ngganggu, interupsi level eksternal ing INT0 utawa interupsi pangowahan pin bisa nggawe MCU saka ADC Noise Reduction mode
Mode Power-down
Nalika bit SM [1: 0] ditulis dadi 10, instruksi TURUN nggawe MCU mlebu mode Power-down. Ing mode iki, Osilator mandheg, nalika interupsi eksternal, USI miwiti deteksi kondhisi lan Watchdog terus dioperasikake (yen diaktifake). Mung Reset Eksternal, Reset Watchdog, Reset Brown-out, USI kondhisi ngganggu, interupsi level eksternal ing INT0 utawa interupsi pangowahan pin bisa nggawe MCU. Mode turu iki mandhegake kabeh jam sing digawe, saengga bisa mbukak modul asinkron.
BOD piranti lunak Pateni
Nalika Brown-out Detector (BOD) diaktifake kanthi sekering BODLEVEL (waca Tabel 20-4 ing kaca 148), BOD aktif ngawasi pasokan voltage sajrone turu. Ing sawetara piranti, sampeyan bisa ngirit daya kanthi ora nggunakake BOD kanthi piranti lunak ing mode turu Power-Down. Konsumsi mode mode turu banjur bakal ing level sing padha karo nalika BOD dipateni global dening sekring.
Yen BOD dipateni dening piranti lunak, fungsi BOD dipateni langsung sawise ngetik mode turu. Sawise tangi saka turu, BOD otomatis diaktifake maneh. Iki njamin operasi sing aman yen level VCC mudhun sajrone wektu turu.
Nalika BOD dipateni, wektu siyam saka mode turu bakal padha karo kanggo tangi saka RESET. Pangguna kudu ngatur wektu tangi kanthi manual supaya referensi bandgap kudu diwiwiti lan BOD bisa digunakake kanthi bener sadurunge MCU terus nglakokake kode. Deleng SUT [1: 0] lan CKSEL [3: 0] bit sekring ing tabel "Fuse Low Byte" ing kaca 149
Pateni BOD dikendhaleni dening BODS (BOD Sleep) saka MCU Control Control, waca “MCUCR - MCU Kontrol Ndhaptar ”ing kaca 37. Nulis potongan iki dadi siji mateni BOD ing Power-Down, nalika nulis nol dadi BOD aktif. Setelan gawan nul, yaiku BOD aktif.
Nulis menyang bit BODS dikendhaleni kanthi urutan wektu lan bit ngaktifake, deleng “MCUCR - MCU Kontrol Regis- ter ”ing kaca 37.
Watesan
Fungsi mateni BOD wis diterapake ing piranti ing ngisor iki, mung:
ATtiny25, revisi E, lan sing luwih anyar
ATtiny45, revisi D, lan sing luwih anyar
ATtiny85, revisi C, lan sing luwih anyar
Revisi ditandhani ing paket piranti lan bisa ditemokake kaya ing ngisor iki:
Sisih ngisor paket 8P3 lan 8S2
Sisih ndhuwur paket 20M1
Ndhaptar Pengurangan Daya
Daftar Pangurangan Daya (PRR), waca "PRR - Dhaptar Pengurangan Daya" ing kaca 38, nyedhiyakake cara kanggo nyuda konsumsi daya kanthi mandhegake jam menyang periferal individu. Negara periferal saiki beku lan registrasi I / O ora bisa diwaca utawa ditulis. Sumber daya sing digunakake dening periferal nalika nolak jam bakal tetep dikuwasani, mula periferal ing biasane kudu dipateni sadurunge nolak jam. Tangi modul, sing ditindakake kanthi ngresiki bit ing PRR, nggawe modul ing kahanan sing padha sadurunge mati.
Mateni modul bisa digunakake ing mode Idle lan mode Aktif kanggo nyuda konsumsi daya sakabehe kanthi signifikan. Ing kabeh mode turu liyane, jam wis mandheg. Waca "Pasokan Saiki modul I / O" ing kaca 177 kanggo examples.
Ngurangi Konsumsi Daya
Ana sawetara masalah sing kudu dipikirake nalika nyoba nyilikake konsumsi daya ing sistem kontrol AVR. Umumé, mode turu kudu digunakake sabisa-bisa, lan mode turu kudu dipilih supaya sawetara fungsi fungsi piranti bisa digunakake. Kabeh fungsi sing ora dibutuhake kudu dipateni. Utamane, modul ing ngisor iki bisa uga kudu dipikirake khusus nalika nyoba entuk konsumsi daya paling murah.
Konverter Analog menyang Digital
Yen diaktifake, ADC bakal diaktifake ing kabeh mode turu. Kanggo ngirit daya, ADC kudu dipateni sadurunge ngetik mode turu. Nalika ADC dipateni lan urip maneh, konversi sabanjure bakal dadi konversi lengkap. Rujuk menyang "Analog to Digital Converter" ing kaca 122 kanggo rincian babagan operasi ADC.
Comparator Analog
Nalika mlebu mode Idle, Comparator Analog kudu dipateni yen ora digunakake. Nalika mlebu mode ADC Noise Reduction, Comparator Analog kudu dipateni. Ing mode turu liyane, Analog Comparator otomatis dipateni. Nanging, yen Comparator Analog wis disetel kanggo nggunakake Vol Internaltage Referensi minangka input, Comparator Analog kudu dipateni ing kabeh mode turu. Yen ora, Vol Internaltage Referensi bakal diaktifake, ora kalebu mode turu. Rujuk menyang "Comparator Analog" ing kaca 119 kanggo rincian babagan cara ngatur Comparator Analog.
Detektor Coklat
Yen Detektor Brown-out ora dibutuhake ing aplikasi, modul iki kudu dipateni. Yen Detektor Brown-out diaktifake dening Fuse BODLEVEL, bakal diaktifake ing kabeh mode turu, lan mula, nggunakake tenaga terus. Ing mode turu sing luwih jero, iki bakal menehi kontribusi signifikan kanggo total konsumsi saiki. Waca “Coklat-metu Detec- tion ”ing kaca 41 lan “Piranti lunak BOD Pateni” ing kaca 35 kanggo rincian babagan cara ngatur Detektor Brown-out.
Internal Voltage Referensi
Internal Voltage Referensi bakal diaktifake yen dibutuhake dening Deteksi Brown-out, Comparator Analog utawa ADC. Yen modul iki dipateni kaya sing dijelasake ing bagean ing ndhuwur, volume internaltagreferensi e bakal dipateni lan ora bakal nggunakake daya. Yen diuripake maneh, pangguna kudu ngidini referensi diwiwiti sadurunge output digunakake. Yen referensi tetep ing mode turu, output bisa digunakake langsung. Rujuk menyang "Internal Voltage Referensi ”ing kaca 42 kanggo rincian babagan wektu wiwitan.
Watchdog Timer
Yen Watchdog Timer ora dibutuhake ing aplikasi, modul iki kudu dipateni. Yen Timer Watchdog diaktifake, mode kasebut bakal diaktifake ing kabeh mode turu, mula saka iku, nggunakake tenaga terus. Ing mode turu sing luwih jero, iki bakal menehi kontribusi signifikan kanggo total konsumsi saiki. Rujuk menyang "Timer Watchdog" ing kaca 42 kanggo rincian babagan cara ngatur Timer Watchdog.
Pelabuhan Pin
Nalika ngetik mode turu, kabeh pin port kudu dikonfigurasi kanggo nggunakake daya minimal. Sing paling penting yaiku kanggo mesthekake yen ora ana pin drive beban resistif. Ing mode turu ing ngendi jam I / O (clkI / O) lan jam ADC (clkADC) mandheg, buffer input piranti bakal dipateni. Iki mesthekake yen ora ana daya sing dikonsumsi
kanthi logika input yen ora prelu. Ing sawetara kasus, logika input dibutuhake kanggo ndeteksi kahanan siyap, lan
banjur bakal diaktifake. Waca bagean kasebut "Digital Input Enable and Sleep Mode" ing kaca 57 kanggo katrangan babagan pin sing diaktifake. Yen buffer input diaktifake lan sinyal input ditinggalake ngambang utawa nduweni level sinyal analog sing cedhak karo VCC / 2, buffer input bakal nggunakake daya sing gedhe banget.
Kanggo pin input analog, buffer input digital kudu dipateni sawayah-wayah. Tingkat sinyal analog sing cedhak karo VCC / 2 ing pin input bisa nyebabake arus sing signifikan sanajan ing mode aktif. Buffer input digital bisa dipateni kanthi nulis menyang Digital Input Disable Register (DIDR0). Rujuk menyang "DIDR0 - Input Digital Pateni Dhaptar 0" ing kaca 121 kanggo rincian.
Dhaptar Dhaptar
MCUCR - Daftar Kontrol MCU
Daftar Kontrol MCU ngemot bit kontrol kanggo manajemen daya.
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUD | SE | SM1 | SM0 | BODSE | ISC01 | ISC00 | MCUCR |
Maca / Nulis | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Nilai wiwitan | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 7 - BODS: Turu BOD
Fungsi mateni BOD mung kasedhiya ing sawetara piranti. Waca "Watesan" ing kaca 36.
Supaya bisa mateni BOD sajrone turu (waca Tabel 7-1 ing kaca 34) bit BODS kudu ditulis kanggo logika siji. Iki dikontrol kanthi urutan wektu lan bit sing bisa diaktifake, BODSE ing MCUCR. Kaping pisanan, loro BODS lan BODSE kudu disetel dadi siji. Kapindho, sajrone patang siklus jam, BODS kudu disetel dadi siji lan BODSE kudu disetel dadi nol. Bit BODS aktif telung siklus jam sawise disetel. Instruksi turu kudu dileksanakake nalika BODS aktif supaya bisa mateni BOD kanggo mode turu sing nyata. Bit BODS kanthi otomatis diresiki sawise telung siklus jam.
Ing piranti yen BOD Sleeping durung ditrapake bit iki ora digunakake lan bakal diwaca nol.
Bit 5 - SE: Turu Aktif
Bit SE kudu ditulis kanthi logika supaya MCU mlebu mode turu nalika instruksi SLEEP dieksekusi. Supaya MCU ora mlebu mode turu kajaba tujuane programer, disaranake nulis bit Sleep Enable (SE) menyang siji sadurunge eksekusi instruksi SLEEP lan mbusak langsung sawise tangi.
Bit 4: 3 - SM [1: 0]: Mode Turu Pilih Bit 1 lan 0
Bit kasebut milih ing antarane telung mode turu sing kasedhiya kaya sing ditampilake ing Tabel 7-2.
Tabel 7-2. Pilih Mode Turu
SM1 | SM0 | Mode Turu |
0 | 0 | nganggur |
0 | 1 | Pangirangan Noise ADC |
1 | 0 | Daya mudhun |
1 | 1 | dilindhungi |
Bit 2 - BODSE: BOD Sleep Enable
Fungsi mateni BOD mung kasedhiya ing sawetara piranti. Waca "Watesan" ing kaca 36.
Bit BODSE ngidini nyetel bit kontrol BODS, kaya sing diterangake ing deskripsi bit BODS. BOD dipateni dikontrol karo urutan wektu.
Bit iki ora digunakake ing piranti sing piranti lunak BOD dipateni durung diterapake lan bakal diwaca nul ing piranti kasebut.
PRR - Registrasi Pangurangan Daya
Daftar Pangurangan Daya nyedhiyakake cara kanggo nyuda konsumsi daya kanthi ngidini dinonaktifkan jam periferal.
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x20 | – | – | – | – | PRTIM 1 | PRTIM 0 | PRUSI | PRADC | PRR |
Maca / Nulis | R | R | R | R | R/W | R/W | R/W | R/W | |
Nilai wiwitan | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 7: 4 - Res: Bit Reservasi
Bit kasebut minangka bit cadangan ing ATtiny25 / 45/85 lan bakal diwaca nol.
Bit 3 - PRTIM1: Timer / Counter1 Pangurangan Daya
Nulis logika kanthi dicokot iki bakal mateni modul Timer / Counter1. Nalika Timer / Counter1 diaktifake, operasi bakal terus kaya sadurunge dipateni.
Bit 2 - PRTIM0: Timer / Counter0 Pangurangan Daya
Nulis logika kanthi dicokot iki bakal mateni modul Timer / Counter0. Nalika Timer / Counter0 diaktifake, operasi bakal terus kaya sadurunge dipateni.
Bit 1 - PRUSI: Pangurangan Daya USI
Nulis logika kanthi dicokot iki bakal nutup USI kanthi mandhegake jam menyang modul. Nalika tangi nggunakake USI maneh, USI kudu diwiwiti maneh kanggo mesthekake operasi sing tepat.
Bit 0 - PRADC: ADC Pangurangan Daya
Nulis logika kanthi bit iki bakal nutup ADC. ADC kudu dipateni sadurunge dipateni. Elinga yen jam ADC uga digunakake dening sawetara bagean saka komparator analog, sing tegese komparator analog ora bisa digunakake nalika bit iki dhuwur.
Kontrol Sistem lan Reset
Ngreset AVR
Sajrone disetel maneh, kabeh Registrasi I / O disetel menyang angka wiwitan, lan program kasebut diwiwiti saka Reset Vecor. Pandhuan sing diselehake ing Vektor Reset kudu RJMP - Langsung Relatif - instruksi kanggo rutin nangani reset. Yen program ora nate menehi sumber interupsi, Interrupt Vector ora digunakake, lan kode program biasa bisa dilebokake ing lokasi kasebut. Diagram sirkuit ing Gambar 8-1 nuduhake logika reset. Paralel listrik sirkuit reset diwenehake ing "Karakteristik Sistem lan Reset" ing kaca 165.
Gambar 8-1 Reset Logika
Port I / O saka AVR langsung disetel menyang kahanan wiwitan nalika sumber reset aktif. Iki ora mbutuhake sumber jam supaya bisa mlaku.
Sawise kabeh sumber ngreset dadi ora aktif, counter penundaan banjur diluncurake, mula dipasang maneh internal. Iki ngidini kekuwatan kanggo nggayuh level sing stabil sadurunge operasi normal diwiwiti. Periode wektu entek saka counter wektu tundha ditemtokake dening pangguna liwat SUT lan CKSEL Fuse. Pilihan liyane kanggo wektu tundha ditampilake ing “Jam Sumber ”ing kaca 25.
Reset Sumber
ATtiny25 / 45/85 duwe patang sumber reset:
Ngatur maneh Power-on. MCU disetel maneh nalika pasokan Voltage ana ing ngisor ambang Power-on Reset (VPOT).
Reset Eksternal. MCU disetel maneh nalika level kurang ing PIN RESET luwih dawa tinimbang dawa pulsa minimal.
Watchdog Reset. MCU disetel maneh nalika Watchdog Timer kadaluarso lan Watchdog diaktifake.
Brown-out Reset. MCU disetel maneh nalika pasokan Voltage VCC ana ing ngisor ambang Brown-out Reset (VBOT) lan Detektor Brown-out diaktifake.
Ngatur maneh Power-on
Pulsa Power-on Reset (POR) digawe karo sirkuit deteksi On-chip. Tingkat deteksi ditetepake ing "Sys- tem lan Reset Karakteristik ”ing kaca 165. POR diaktifake yen VCC kurang saka tingkat deteksi. Sirkuit POR bisa digunakake kanggo pemicu Reset wiwitan, uga kanggo ndeteksi Gagal ing sumber voltage.
Sirkuit Reset Power-on (POR) njamin manawa piranti direset saka Power-on. Nggayuh ambang Reset Power-on voltage invokes counter wektu tundha, kang nemtokake suwene piranti katahan ing RESET sawise VCC munggah. Sinyal RESET diaktifake maneh, tanpa wektu tundha, nalika VCC mudhun ing ngisor tingkat deteksi.
Gambar 8-2. MCU Start-up, RESET Diikat menyang VCC
RESET INTERNAL
Gambar 8-3. MCU Start-up, RESET Extended Externally
Reset Eksternal
Reset Eksternal digawe kanthi level murah ing PIN RESET yen diaktifake. Pulihake pulsa maneh saka jembaré denyut nadi minimal (waca "Karakteristik Sistem lan Reset" ing kaca 165) bakal ngasilake reset, sanajan jam ora mlaku. Pulsa sing luwih cekak ora dijamin ngasilake reset. Nalika sinyal sing ditrapake tekan Reset Ambang Voltage - VRST - ing pojok positif, counter tundha miwiti MCU sawise wektu Time-out wis kadaluwarsa.
Gambar 8-4. Reset njaba Sajrone Operasi
Deteksi Coklat
ATtiny25/45/85 duwe sirkuit On-chip Brown-out Detection (BOD) kanggo ngawasi level VCC sajrone operasi kanthi mbandhingake level pemicu tetep. Tingkat pemicu kanggo BOD bisa dipilih dening Sekering BODLEVEL. Tingkat pemicu duwe histeresis kanggo njamin Deteksi Brown-out gratis spike. Histeresis ing tingkat deteksi kudu diinterpretasikake minangka VBOT+ = VBOT + VHYST/2 lan VBOT- = VBOT – VHYST/2.
Nalika BOD diaktifake, lan VCC mudhun menyang nilai ngisor tingkat pemicu (VBOT-in Gambar 8-5), Reset Brown-out langsung diaktifake. Nalika VCC mundhak ndhuwur tingkat pemicu (VBOT + in Gambar 8-5), counter tundha miwiti MCU sawise wektu Time-out tTOUT wis kadaluwarsa.
Sirkuit BOD mung bakal ndeteksi gulung ing VCC yen voltage tetep ing ngisor tingkat pemicu luwih suwe tinimbang tBOD sing diwenehake "Karakteristik Sistem lan Reset" ing kaca 165.
Watchdog Reset
Nalika Watchdog kaping metu, iku bakal generate pulsa reset singkat saka siji siklus CK. Ing pojok pulsa sing tiba, wektu tundha wiwit ngetung tTOUT wektu wektu entek. Rujuk menyang "Timer Watchdog" ing kaca 42 kanggo rincian babagan operasi Timer Watchdog.
Voltage Referensi Ngaktifake Sinyal lan Wektu Wiwitan
Voltagreferensi duwe wektu wiwitan sing bisa mengaruhi cara panggunaan. Wektu wiwitan diwenehake ing "Karakteristik Sistem lan Reset" ing kaca 165. Kanggo ngirit daya, referensi ora mesthi diuripake. Referensi kasebut ditindakake sajrone kahanan ing ngisor iki:
Nalika BOD diaktifake (kanthi program BODLEVEL [2: 0] Fuse Bits).
Nalika referensi bandgap disambungake menyang Comparator Analog (kanthi nyetel bit ACBG ing ACSR).
Nalika ADC diaktifake.
Mangkono, yen BOD ora diaktifake, sawise nyetel bit ACBG utawa ngaktifake ADC, pangguna kudu tetep ngidini referensi diwiwiti sadurunge output saka Analog Comparator utawa ADC digunakake. Kanggo nyuda kompromi daya ing mode Power-down, pangguna bisa ngindhari telung kahanan ing ndhuwur kanggo mesthekake yen referensi dipateni sadurunge mlebu mode Power-down.
Watchdog Timer
Watchdog Timer dicithak saka Oscillator On-chip sing mlaku ing 128 kHz. Kanthi ngontrol prescaler Timer Watchdog, interval Watchdog Reset bisa diatur kaya sing ditampilake ing Tabel 8-3 ing kaca 46. WDR - Watchdog Reset - instruksi ngreset Timer Watchdog. Watchdog Timer uga disetel maneh nalika dipateni lan nalika Chip Reset kedadeyan. Sepuluh periode siklus jam sing beda bisa dipilih kanggo nemtokake periode ngreset. Yen periode reset kadaluwarsa tanpa Watchdog Reset liyane, ATtiny25 / 45/85 ngreset lan nglakokake saka Reset Vector. Kanggo rincian wektu ing Watchdog Reset, waca Tabel 8-3 ing kaca 46.
Watchdog Timer uga bisa dikonfigurasi kanggo nggawe interrupt tinimbang ngreset. Iki bisa migunani banget nalika nggunakake Watchdog kanggo tangi saka Power-down.
Kanggo nyegah ora aktif saka Watchdog utawa owah-owahan wektu entek sing ora disengaja, rong level keamanan sing beda dipilih dening sekring WDTON kaya sing ditampilake Tabel 8-1 Rujuk menyang "Urutan Wektu kanggo Ngganti Kon- gambar saka Timer Watchdog ”ing kaca 43 kanggo rincian.
Tabel 8-1. Konfigurasi WDT minangka Fungsi saka Setelan Sekring WDTON
WDTON | Tingkat Keamanan | WDT Negara Wiwitan | Cara Pateni WDT | Cara Ngganti Wektu-rampung |
Ora diprogram | 1 | dipatèni | Urutan wektu | Ora ana watesan |
Diprogram | 2 | diaktifake | Tansah diaktifake | Urutan wektu |
Gambar 8-7. Watchdog Timer
Urutan Wektu Kanggo Ngganti Konfigurasi Timer Watchdog
Urutan kanggo ngganti konfigurasi beda beda karo rong level keamanan kasebut. Prosedur kapisah diterangake kanggo saben level.
Level Safety 1: Ing mode iki, Watchdog Timer wiwitane dipateni, nanging bisa diaktifake kanthi nulis bit WDE menyang siji tanpa watesan. Urutan wektu dibutuhake nalika mateni Timer Watchdog sing diaktifake. Kanggo mateni Watchdog Timer sing aktif, prosedur ing ngisor iki kudu ditindakake:
Ing operasi sing padha, tulis logika menyang WDCE lan WDE. Logika kudu ditulis babagan WDE - kurang saka nilai sadurunge bit WDE.
Sajrone patang siklus jam sabanjure, ing operasi sing padha, tulis bit WDE lan WDP kaya sing dikarepake, nanging kanthi bit WDCE diresiki.
Level Safety 2: Ing mode iki, Watchdog Timer tansah diaktifake, lan bit WDE bakal tansah diwaca minangka siji. Urutan wektu dibutuhake nalika ngganti wektu Watchdog Time-out. Kanggo ngganti Watchdog Time-out, prosedur ing ngisor iki kudu ditindakake:
Ing operasi sing padha, tulis logis menyang WDCE lan WDE. Sanajan WDE mesthi disetel, WDE kudu ditulis siji kanggo miwiti urutan wektu.
Sajrone patang siklus jam sabanjure, ing operasi sing padha, tulis bit WDP kaya sing dikepengini, nanging kanthi bit WDCE diresiki. Nilai sing ditulis ing bit WDE ora relevan.
Kode Example
Ex kode ing ngisor ikiample nuduhake siji Déwan lan siji fungsi C kanggo mateni WDT. Bekasample nganggep manawa interupsi dikendhaleni (contone, kanthi mateni gangguan global) supaya ora ana gangguan sing bakal ditindakake sajrone nindakake fungsi kasebut.
Kode Majelis Example(1) |
WDT_mati:
wdr ; Mbusak WDRF ing MCUSR ldi r16, (0< metu MCUSR, r16 ; Tulis siji sing logis menyang WDCE lan WDE ; Tetep setelan prescaler lawas kanggo nyegah Watchdog Reset sing ora disengaja ing r16, WDTCR ori r16, (1< metu WDTCR, r16 ; Pateni WDT ldi r16, (0< metu WDTCR, r16 ret |
C Kode Example(1) |
void WDT_off(void)
{ _WDR (); /* Mbusak WDRF ing MCUSR */ MCUSR = 0x00 /* Tulis logika menyang WDCE lan WDE */ WDTCR |= (1< / * Pateni WDT * / WDTCR = 0x00; } |
Cathetan: 1. Deleng “Kode Examples ”ing kaca 6.
Dhaptar Dhaptar
MCUSR - Daftar Status MCU
Daftar Status MCU nyedhiyakake informasi babagan sumber reset sing nyebabake MCU Reset.
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x34 | – | – | – | – | WDRF | KANGGO | KANGGO | PORF | MCUSR |
Maca / Nulis | R | R | R | R | R/W | R/W | R/W | R/W |
Nilai Awal 0 0 0 0 Waca Katrangan Bit
Bit 7: 4 - Res: Bit Reservasi
Bit kasebut minangka bit cadangan ing ATtiny25 / 45/85 lan bakal diwaca nol.
Bit 3 - WDRF: Tandha Reset Watchdog
Bit iki disetel yen Watchdog Reset ana. Bit disetel maneh karo Reset Power-on, utawa nulis nol logika menyang gendera.
Bit 2 - BORF: Tandha Reset Coklat
Bit iki wis disetel yen Brown-out Reset ana. Bit disetel maneh karo Reset Power-on, utawa nulis nol logika menyang gendera.
Bit 1 - EXTRF: Bendera Reset Eksternal
Bit iki disetel yen Reset External ana. Bit disetel maneh karo Reset Power-on, utawa nulis nol logika menyang gendera.
Bit 0 - PORF: Tandha Reset Daya
Bit iki disetel yen Reset Daya aktif. Bit kasebut mung disetel maneh kanthi nulis nol logika menyang gendera.
Kanggo nggunakake Panji Reset kanggo ngenali kondhisi reset, pangguna kudu maca banjur ngreset MCUSR sedina mungkin ing program kasebut. Yen dhaptar wis dibersihake sadurunge ana reset liyane, sumber reset bisa ditemokake kanthi mriksa Flags Reset.
WDTCR - Watchdog Timer Control Register
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x21 | WDIF | WDIE | WDP3 | WDCE | WDE | WDP2 | WDP1 | WDP0 | WDTCR |
Maca / Nulis | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Nilai wiwitan | 0 | 0 | 0 | 0 | X | 0 | 0 | 0 |
Bit 7 - WDIF: Tandha Langsung Langsung Watchdog
Bit iki disetel yen wektu entek ing Watchdog Timer lan Watchdog Timer diatur kanggo ngganggu. WDIF diresiki nganggo perangkat keras nalika nglakokake vektor interrupt handling sing cocog. Utawa, WDIF diresiki kanthi nulis logika menyang bendera. Nalika I-bit ing SREG lan WDIE disetel, Watchdog Time-out Interrupt bakal dieksekusi.
Bit 6 - WDIE: Watchdog Timeout ngganggu ngaktifake
Yen bit iki ditulis dadi siji, WDE bakal diresiki, lan I-bit ing Dhaptar Status wis disetel, Gangguan Jam Tangan Watchdog diaktifake. Ing mode iki, interupsi sing cocog dieksekusi tinimbang ngreset yen wektu entek ing Watchdog Timer ana.
Yen WDE disetel, WDIE kanthi otomatis dibersihake dening hardware nalika wektu entek. Iki migunani kanggo njaga keamanan Watchdog Reset nalika nggunakake gangguan. Sawise bit WDIE diresiki, wektu entek mbesuk bakal ngasilake reset. Kanggo ngindhari Reset Watchdog, WDIE kudu disetel sawise saben gangguan.
Tabel 8-2. Konfigurasi Timer Watchdog
WDE | WDIE | Negara Pengawas Timer | Tindakan ing Wektu-rampung |
0 | 0 | mandheg | ora ana |
0 | 1 | mlaku | ngganggu |
1 | 0 | mlaku | Reset |
1 | 1 | mlaku | ngganggu |
Bit 4 - WDCE: Owahi Watchdog Ngaktifake
Bit iki kudu disetel nalika bit WDE ditulis dadi logika nol. Yen ora, Watchdog ora bakal dipateni. Sawise ditulis menyang siji, perangkat keras bakal mbusak bit iki sawise patang siklus jam. Waca katrangan babagan bit WDE kanggo prosedur mateni Watchdog. Bit iki uga kudu disetel nalika ngganti bit prescaler. Waca "Urutan Wektu kanggo Ngganti Konfigurasi Timer Watchdog ”ing kaca 43.
Bit 3 - WDE: Watchdog Ngaktifake
Nalika WDE ditulis dadi logika siji, Watchdog Timer diaktifake, lan yen WDE ditulis dadi logika nol, fungsi Watchdog Timer dipateni. WDE mung bisa diresiki yen bit WDCE duwe level logika siji. Kanggo mateni Timer Watchdog sing aktif, prosedur ing ngisor iki kudu ditindakake:
Ing operasi sing padha, tulis logika menyang WDCE lan WDE. Logika kudu ditulis menyang WDE sanajan wis disetel sadurunge operasi mateni diwiwiti.
Sajrone patang siklus jam, tulis logika 0 menyang WDE. Iki mateni Watchdog.
Ing level keamanan 2, ora bisa mateni Watchdog Timer, sanajan karo algoritma sing wis kasebut ing ndhuwur. Waca "Urutan Wektu Kanggo Ngganti Konfigurasi Timer Watchdog" ing kaca 43.
Ing level keamanan 1, WDE diganti dening WDRF ing MCUSR. Waca "MCUSR - Daftar Status MCU" ing kaca 44 kanggo katrangan WDRF. Iki tegese WDE mesthi disetel yen WDRF disetel. Kanggo mbusak WDE, WDRF kudu dibersihake sadurunge mateni Watchdog kanthi prosedur sing dijelasake ing ndhuwur. Fitur iki njamin macem-macem pulihake sajrone kahanan sing nyebabake kegagalan, lan wiwitan sing aman sawise gagal.
Cathetan: Yen timer watchdog ora arep digunakake ing aplikasi, iku penting kanggo pindhah liwat prosedur mateni watchdog ing initialization saka piranti. Yen Watchdog ora sengaja diaktifake, contoneampkanthi mbukak pointer utawa kahanan coklat-metu, piranti bakal disetel maneh, lan banjur bakal disetel maneh menyang watchdog anyar. Kanggo ngindhari kahanan iki, piranti lunak aplikasi kudu mbusak bendera WDRF lan kontrol WDE ing rutinitas rutin.
Bit 5, 2: 0 - WDP [3: 0]: Watchdog Timer Prescaler 3, 2, 1, lan 0
Bit WDP [3: 0] nemtokake Watchdog Timer prescaling nalika Watchdog Timer diaktifake. Nilai prescaling sing beda lan Periode Wektu Wektu sing cocog ditampilake ing Tabel 8-3.
Tabel 8-3. Watchdog Timer Prescale Pilih
WDP3 | WDP2 | WDP1 | WDP0 | Nomer Siklus Osilator WDT | Wektu-out khas ing VCC = 5.0V |
0 | 0 | 0 | 0 | Siklus 2K (2048) | 16 ms |
0 | 0 | 0 | 1 | Siklus 4K (4096) | 32 ms |
0 | 0 | 1 | 0 | Siklus 8K (8192) | 64 ms |
0 | 0 | 1 | 1 | Siklus 16K (16384) | 0.125 s |
0 | 1 | 0 | 0 | Siklus 32K (32764) | 0.25 s |
0 | 1 | 0 | 1 | Siklus 64K (65536) | 0.5 s |
0 | 1 | 1 | 0 | Siklus 128K (131072) | 1.0 s |
0 | 1 | 1 | 1 | Siklus 256K (262144) | 2.0 s |
1 | 0 | 0 | 0 | Siklus 512K (524288) | 4.0 s |
1 | 0 | 0 | 1 | Siklus 1024K (1048576) | 8.0 s |
Tabel 8-3. Watchdog Timer Prescale Select (Lanjutan)
WDP3 | WDP2 | WDP1 | WDP0 | Nomer Siklus Osilator WDT | Wektu-out khas ing VCC = 5.0V |
1 | 0 | 1 | 0 | dilindhungi(1) | |
1 | 0 | 1 | 1 | ||
1 | 1 | 0 | 0 | ||
1 | 1 | 0 | 1 | ||
1 | 1 | 1 | 0 | ||
1 | 1 | 1 | 1 |
Cathetan: 1. Yen dipilih, salah siji setelan sing bener ing ngisor 0b1010 bakal digunakake.
Ganggu
Bagean iki nggambarake spesifik penanganan interrupt kaya ing ATtiny25 / 45/85. Kanggo panjelasan umum babagan penanganan gangguan AVR, waca "Reset lan Nangani Interrupt" ing kaca 12.
Ganggu Vektor ing ATtiny25 / 45/85
Vektor ngganggu ATtiny25 / 45/85 diterangake ing Tabel 9-1ngisor.
Tabel 9-1. Reset lan ngganggu Vektor
Vektor No. | Alamat Program | Sumber | Definisi ngganggu |
1 | 0x0000 | RESET | Pin Eksternal, Reset Power-On, Reset Brown-Out, Reset Watchdog |
2 | 0x0001 | INT0 | Nyuwun Gangguan Eksternal 0 |
3 | 0x0002 | PCINT0 | Pin Ganti Panjaluk Ganggu 0 |
4 | 0x0003 | TIMER1_COMPA | Timer / Counter1 Bandhingake Pertandhingan A |
5 | 0x0004 | TIMER1_OVF | Timer / Counter1 Overflow |
6 | 0x0005 | TIMER0_OVF | Timer / Counter0 Overflow |
7 | 0x0006 | EE_RDY | EEPROM Siap |
8 | 0x0007 | ANA_COMP | Comparator Analog |
9 | 0x0008 | ADC | Konversi ADC Lengkap |
10 | 0x0009 | TIMER1_COMPB | Timer / Counter1 Bandhingake Pertandhingan B |
11 | 0x000A | TIMER0_COMPA | Timer / Counter0 Bandhingake Pertandhingan A |
12 | 0x000b | TIMER0_COMPB | Timer / Counter0 Bandhingake Pertandhingan B |
13 | 0x000c | WDT | Watchdog Wektu-rampung |
14 | 0x000d | USI_START | USI Miwiti |
15 | 0x000E | USI_OVF | USI Overflow |
Yen program ora nate nyedhiyakake sumber interupsi, Interrupt Vector ora digunakake, lan kode program biasa bisa dilebokake ing lokasi kasebut.
Persiyapan khas lan umum kanggo ngganggu alamat vektor ing ATtiny25 / 45/85 ditampilake ing program example ngisor.
Kode Majelis Example | ||
.org 0x0000 | ; Setel alamat sabanjure | pratelan |
rjmp RESET | ; Alamat 0x0000 | |
rjmp INT0_ISR | ; Alamat 0x0001 | |
rjmp PCINT0_ISR | ; Alamat 0x0002 | |
rjmp TIM1_COMPA_ISR | ; Alamat 0x0003 | |
rjmp TIM1_OVF_ISR | ; Alamat 0x0004 | |
rjmp TIM0_OVF_ISR | ; Alamat 0x0005 | |
rjmp EE_RDY_ISR | ; Alamat 0x0006 | |
rjmp ANA_COMP_ISR | ; Alamat 0x0007 | |
rjmp ADC_ISR | ; Alamat 0x0008 | |
rjmp TIM1_COMPB_ISR | ; Alamat 0x0009 | |
rjmp TIM0_COMPA_ISR | ; Alamat 0x000A | |
rjmp TIM0_COMPB_ISR | ; Alamat 0x000B | |
rjmp WDT_ISR | ; Alamat 0x000C | |
rjmp USI_START_ISR | ; Alamat 0x000D | |
rjmp USI_OVF_ISR | ; Alamat 0x000E | |
RESET: | ; Program utama diwiwiti | |
; Alamat 0x000F | ||
… |
Cathetan: Waca “Kode Examples ”ing kaca 6.
Gangguan Eksternal
Gangguan Eksternal dipicu pin INT0 utawa pin PCINT [5: 0]. Elinga yen, yen diaktifake, interupsi bakal dipicu sanajan pin INT0 utawa PCINT [5: 0] dikonfigurasi minangka output. Fitur iki nyedhiyakake cara kanggo nggawe gangguan piranti lunak. Ngganti pin ngganggu PCI bakal micu yen ana pin PCINT sing aktif [5: 0]. Kontrol PCMSK Register sing pin menehi kontribusi kanggo gangguan pangowahan pin. Ganti pin gangguan ing PCINT [5: 0] dideteksi bedo. Iki tegese interupsi iki bisa digunakake kanggo nggugah bagean uga saka mode turu kajaba mode Idle.
Gangguan INT0 bisa dipicu dening ujung utawa mudhun utawa level sing kurang. Iki wis disetel kaya sing dituduhake ing spesifikasi kanggo MCU Control Register - MCUCR. Nalika interupsi INT0 diaktifake lan dikonfigurasi nalika level dipicu, interupsi kasebut bakal dipicu anggere pin kasebut ditahan. Elinga manawa pangenalan gangguan utawa mudhun ing INT0 mbutuhake anane jam I / O, sing diterangake ing "Sistem Jam lan Distribusi" ing kaca 23.
Ganggu Tingkat Sithik
Gangguan tingkat rendah ing INT0 dideteksi kanthi sinkron. Iki tegese interupsi iki bisa digunakake kanggo nggawe bagean uga saka mode turu kajaba mode Idle. Jam I / O dihentikan ing kabeh mode turu kajaba mode Idle.
Elinga yen interupsi sing dipicu level digunakake kanggo tangi saka Power-down, level sing dibutuhake kudu ditahan cukup suwe kanggo MCU ngrampungake tangi kanggo micu interupsi level. Yen level ilang sadurunge pungkasan Wektu Mulai, MCU isih bakal tangi, nanging ora ana interupsi sing bakal digawe. Wektu wiwitan ditemtokake dening Sekring SUT lan CKSEL kaya sing diterangake ing "Pilihan Jam lan Jam Sistem" ing kaca 23.
Yen level kurang ing pin interrupt dipindhah sadurunge piranti wis tangi, eksekusi program ora bakal dialihake menyang rutinitas interupsi nanging terus saka instruksi ing ngisor printah SLEEP.
Pin Ganti Wektu Ganggu
Exampwektu gangguan pangowahan pin ditampilake ing Gambar 9-1.
Dhaptar Dhaptar
MCUCR - Daftar Kontrol MCU
Ndhaptar Kontrol Gangguan Eksternal A ngemot bit kontrol kanggo ngontrol rasa ngganggu.
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUD | SE | SM1 | SM0 | BODSE | ISC01 | ISC00 | MCUCR |
Maca / Nulis | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Nilai wiwitan | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 1: 0 - ISC0 [1: 0]: Ganggu Kontrol Rasa 0 Bit 1 lan Bit 0
Interrupt External 0 diaktifake dening pin eksternal INT0 yen flag SREG I lan topeng interrupt sing cocog disetel. Tingkat lan sudhut ing pin INT0 eksternal sing ngaktifake gangguan kasebut ing Tabel 9-2. Nilai ing pin INT0 yaiku sampdipimpin sadurunge ndeteksi pinggiran. Yen interupsi pinggiran utawa toggle dipilih, pulsa sing tahan suwene siji wektu jam bakal nyebabake gangguan. Pulsa sing luwih cendhek ora dijamin ngasilake gangguan. Yen interupsi level rendah dipilih, level kurang kudu dicekel nganti rampung instruksi sing lagi ditindakake kanggo ngganggu.
Tabel 9-2. Ngganggu 0 Sense Control
ISC01 | ISC00 | Katrangan |
0 | 0 | Tingkat INT0 sing kurang ngasilake panjaluk ngganggu. |
0 | 1 | Pangowahan logis ing INT0 bakal ngasilake panjaluk. |
1 | 0 | Intine INT0 sing tiba nggawe panjaluk ngganggu. |
1 | 1 | Intine INT0 sing mundhak nggawe panjaluk ngganggu. |
GIMSK - Daftar Topeng Gangguan Umum
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3b | – | INT0 | PCIe | – | – | – | – | – | GIMSK |
Maca / Nulis | R | R/W | R/W | R | R | R | R | R | |
Nilai wiwitan | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 7, 4: 0 - Res: Bit Reservasi
Bit kasebut minangka bit cadangan ing ATtiny25 / 45/85 lan bakal diwaca nol.
Bit 6 - INT0: Nyuwun Gangguan Eksternal 0 Aktifake
Nalika bit INT0 wis disetel (siji) lan I-bit ing Daftar Dhaptar (SREG) disetel (siji), gangguan pin eksternal diaktifake. Interrupt Sense Control0 bit 1/0 (ISC01 lan ISC00) ing MCU Control Register (MCUCR) nemtokake manawa interupsi eksternal diaktifake kanthi munggah lan / utawa mudhun ing pin INT0 utawa level sensed. Aktivitas ing pin bakal nyebabake panjaluk ngganggu sanajan INT0 diatur minangka output. Gangguan Exect-nal Interrupt Request 0 sing cocog ditindakake saka INT0 Interrupt Vector.
Bit 5 - PCIE: Ngganti Ganti Pin Ngganggu
Nalika bit PCIE wis disetel (siji) lan I-bit ing Daftar Dhaptar (SREG) disetel (siji), gangguan pangowahan pin bakal diaktifake. Pangowahan ing pin PCINT [5: 0] sing aktif bakal nyebabake gangguan. Gangguan Pin Request Interrupt Pin Ganti kasebut dileksanakake saka PCI Interrupt Vector. Pin PCINT [5: 0] diaktifake kanthi masing-masing dening Daftar PCMSK0.
GIFR - Daftar Bendera Gangguan Umum
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3A | – | INTF0 | PCIF | – | – | – | – | – | GIFR |
Maca / Nulis | R | R/W | R/W | R | R | R | R | R | |
Nilai wiwitan | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 7, 4: 0 - Res: Bit Reservasi
Bit kasebut minangka bit cadangan ing ATtiny25 / 45/85 lan bakal diwaca nol.
Bit 6 - INTF0: Gendéra Gangguan Eksternal 0
Nalika pangowahan utawa logika ing pin INT0 nyebabake panjaluk ngganggu, INTF0 bakal disetel (siji). Yen I-bit ing SREG lan INT0 bit ing GIMSK disetel (siji), MCU bakal mlumpat menyang Interrupt Vector sing cocog. Gendera kasebut dibersihake nalika rutinitas ngganggu ditindakake. Utawa, gendera bisa dicopot kanthi nulis tandha logis. Gendera iki mesthi diresiki nalika INT0 dikonfigurasi minangka gangguan level.
Bit 5 - PCIF: Ganti Ganti Tandha Ganggu
Nalika pangowahan logika ing PCINT [5: 0] pin nyebabake panjaluk ngganggu, PCIF dadi disetel (siji). Yen I-bit ing SREG lan PCIE bit ing GIMSK wis disetel (siji), MCU bakal mlumpat menyang Interrupt Vector sing cocog. Gendera kasebut dibersihake nalika rutinitas ngganggu ditindakake. Utawa, gendera bisa dicopot kanthi nulis tandha logis.
PCMSK - Pin Ganti Dhaptar Topeng
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x15 | – | – | PCINT5 | PCINT4 | PCINT3 | PCINT2 | PCINT1 | PCINT0 | PCMSK |
Maca / Nulis | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Nilai wiwitan | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 7: 6 - Res: Bit Reservasi
Bit kasebut minangka bit cadangan ing ATtiny25 / 45/85 lan bakal diwaca nol.
Bit 5: 0 - PCINT [5: 0]: Pin Ganti Aktifake Topeng 5: 0
Saben PCINT [5: 0] milih manawa interupsi pangowahan pin diaktifake ing pin I / O sing cocog. Yen PCINT [5: 0] wis disetel lan bit PCIE ing GIMSK wis disetel, interrupt pangowahan pin diaktifake ing pin I / O sing cocog. Yen PCINT [5: 0] dibersihake, pin ganti ngganggu pin I / O sing cocog dipateni.
Port I/O
Pambuka
Kabeh port AVR duwe fungsi Read-Modify-Writing sing sejatine digunakake minangka port I / O digital umum. Iki tegese arah siji pin port bisa diganti tanpa sengaja ngowahi arah pin liyane kanthi instruksi SBI lan CBI. Iki uga ditrapake nalika ngganti nilai drive (yen diatur minangka output) utawa ngaktifake / mateni resistor penarik (yen diatur minangka input). Saben buffer output duwe karakteristik drive simetris kanthi sink lan kemampuan sumber sing dhuwur. Driver pin cukup kuat kanggo ngarahake tampilan LED kanthi langsung. Kabeh pin port duwe resistor pull-up sing bisa dipilih kanthi supply-voltage resistensi invarian. Kabeh pin I / O duwe dioda proteksi kanggo VCC lan Ground kaya sing dituduhake ing Gambar 10-1. Rujuk menyang "Karakteristik Listrik" ing kaca 161 kanggo dhaptar lengkap paramèter.
Gambar 10-1. Skema Setara Pin I/O
Kabeh dhaptar lan referensi bit ing bagean iki ditulis kanthi formulir umum. "X" huruf cilik nggambarake huruf nomer kanggo port, lan huruf cilik "n" nuduhake nomer bit. Nanging, nalika nggunakake dhaptar utawa nemtokake ing program, formulir sing tepat kudu digunakake. Kanggo mantanample, PORTB3 kanggo bit. 3 ing Pelabuhan B, ing kene dokumentasi umume diarani PORTxn. Daftar I / O fisik lan lokasi bit didhaptar ing "Dhaptar Dhaptar" ing kaca 64.
Telung lokasi alamat memori I / O diparengake kanggo saben port, saben siji kanggo Dhaptar Data - PORTx, Dhaptar Arah Data - DDRx, lan Pin Input Port - PINx. Lokasi I / O Input Pelabuhan mung diwaca, dene Daftar Data lan Dhaptar Arah Data diwaca / ditulis. Nanging, nulis logika kanthi sethithik ing PINx Reg- ister, bakal ngasilake alihan bit sing cocog ing Dhaptar Data. Kajaba iku, Pull-up Disable - PUD bit ing MCUCR mateni fungsi penarik kanggo kabeh pin ing kabeh port yen wis disetel.
Nggunakake port I / O minangka General Digital I / O diterangake ing "Port minangka Umum Digital I / O" ing kaca 53. Umume pin port multiplexed karo fungsi sulih kanggo fitur periferal ing piranti. Kepiye saben fungsi interaktif nganggo pin port diterangake ing "Fungsi Port Alternatif" ing kaca 57. Waca bagean modul individu kanggo gambaran lengkap babagan fungsi alternatif.
Elinga yen ngaktifake fungsi alternatif sawetara pin port ora mengaruhi panggunaan pin liyane ing port minangka digital digital I / O.
Pelabuhan minangka Umum Digital I / O
Port kasebut minangka port I / O kanthi arah loro kanthi internal internal opsional. Gambar 10-2 nuduhake katrangan fungsional saka pin I / O-port, ing kene umume diarani Pxn.
Gambar 10-2. I/O Digital Umum(1)
Ngonfigurasi Pin
Saben pin port kalebu telung bit register: DDxn, PORTxn, lan PINxn. Kaya sing dituduhake ing "Dhaptar Dhaptar" ing kaca 64, bit DDxn diakses ing alamat DDRx I / O, bit PORTxn ing alamat PORTx I / O, lan bit PINxn ing alamat PINx I / O.
Bit DDxn ing Daftar DDRx milih arah pin iki. Yen DDxn ditulis logika siji, Pxn diatur minangka pin output. Yen DDxn ditulis logika nol, Pxn diatur minangka pin input.
Yen PORTxn ditulis logika nalika pin dikonfigurasi minangka pin input, resistor penarik bakal diaktifake. Kanggo mateni resistor penarik, PORTxn kudu ditulis logika nol utawa pin kudu diatur minangka pin output. Pin port dicantumake kaping telu nalika kondhisi reset dadi aktif, sanajan ora ana jam sing mlaku.
Yen PORTxn ditulis logika siji nalika pin diatur minangka pin output, pin port bakal didhuwur (siji). Yen PORTxn ditulis logika nol nalika pin diatur minangka pin output, pin port bakal mudhun (nol).
Ngganti Pin
Nulis logika siji menyang PINxn ngonversi nilai PORTxn, bebas saka nilai DDRxn. Elinga yen instruksi SBI bisa digunakake kanggo muter siji bit ing port.
Ngalih ing Antarane Input lan Output
Nalika ngoper antarane tri-state ({DDxn, PORTxn} = 0b00) lan output dhuwur ({DDxn, PORTxn} = 0b11), negara intermediate kanthi salah siji pull-up aktif {DDxn, PORTxn} = 0b01) utawa output kurang ({DDxn, PORTxn} = 0b10) kudu kedadeyan. Biasane, negara sing diaktifake narik munggah bisa ditrima, amarga lingkungan impedansi dhuwur ora bakal ngelingi prabédan antarane pembalap dhuwur sing kuwat lan pull-up. Yen ora, bit PUD ing MCUCR Register bisa disetel kanggo mateni kabeh pull-ups ing kabeh bandar.
Ngalih ing antarane input kanthi pull-up lan output sing kurang ngasilake masalah sing padha. Pangguna kudu nggunakake tri-state ({DDxn, PORTxn} = 0b00) utawa state high output ({DDxn, PORTxn} = 0b10) minangka langkah menengah.
Tabel 10-1 ngringkes sinyal kontrol kanggo nilai pin.
Tabel 10-1. Konfigurasi Pin Port
DDxn | PORTxn | PUD
(ing MCUCR) |
Aku/O | Narik munggah | Komentar |
0 | 0 | X | Input | Ora | Tri-negara (Hi-Z) |
0 | 1 | 0 | Input | ya wis | Pxn bakal sumber saiki yen ext. ditarik mudhun. |
0 | 1 | 1 | Input | Ora | Tri-negara (Hi-Z) |
1 | 0 | X | Output | Ora | Output Kurang (Tenggelam) |
1 | 1 | X | Output | Ora | Output Dhuwur (Sumber) |
Maca Nilai Pin
Bebas saka setelan Data Direction bit DDxn, pin port bisa diwaca liwat PINxn Register bit. Kaya sing dituduhake ing Gambar 10-2, bit PINxn Register lan selak sadurunge dadi sinkronisasi. Iki dibutuhake supaya ora gampang metastabil yen pin fisik ngganti regane cedhak karo jam internal, nanging uga nggawe wektu tundha. Gambar 10-3 nuduhake diagram wektu sinkronisasi nalika maca nilai pin externally Applied. Tundha panyebaran maksimum lan minimal dilambangake tpd, max lan tpd, min.
Coba waca wektu jam diwiwiti sawise ujung sistem sing tiba pisanan. Selat ditutup nalika jam kurang, lan dadi transparan nalika jam dhuwur, kaya sing dituduhake ing wilayah sing teduh saka sinyal "SYNC LATCH". Nilai sinyal dipasang nalika jam sistem kurang. Iki dipasang ing Daftar PINxn ing ujung jam sing positif. Kaya sing dituduhake dening loro panah tpd, max lan tpd, min, transisi sinyal siji ing pin bakal ditundha ing antarane clock lan 1½ wektu jam sistem gumantung saka wektu negesake.
Nalika maca maneh nilai pin sing ditrapake piranti lunak, instruksi ora kudu dilebokake kaya sing dituduhake ing Gambar 10-4. Instruksi metu nyetel sinyal "SYNC LATCH" ing ujung positif jam. Ing kasus iki, wektu tundha tpd liwat sinkronisasi minangka salah sawijining wektu jam sistem.
Ex kode ing ngisor ikiample nuduhake carane nyetel port B lencana 0 lan 1 dhuwur, 2 lan 3 kurang, lan nemtokake lencana port saka 4 kanggo 5 minangka input karo narik-munggah diutus kanggo port pin 4. Nilai pin asil diwaca maneh, nanging minangka sadurunge rembugan, instruksi nop klebu kanggo bisa maca maneh Nilai bubar diutus kanggo sawetara saka lencana.
Kode Majelis Example(1) |
…
; Netepake pull-up lan nyetel output dhuwur ; Netepake pituduh kanggo pin port ldi r16,(1<<PB4)|(1<<PB1)|(1<<PB0) ldi r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0) metu PORTB, r16 metu DDRB, r17 ; Lebokake nop kanggo sinkronisasi ora ; Maca pin port ing r16,PINB … |
Cathetan: Kanggo program perakitan, rong register sauntara digunakake kanggo nyilikake wektu saka pull-up sing disetel ing pin 0, 1 lan 4, nganti bit arah disetel kanthi bener, nemtokake bit 2 lan 3 minangka bit kurang lan redefining bit 0 lan 1 minangka pembalap dhuwur sing kuwat.
C Kode Example |
unsigned char i;
… /* Nemtokake pull-up lan nyetel output dhuwur */ /* Nemtokake arah kanggo pin port */ PORTB = (1< DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0); /* Lebokake nop kanggo sinkronisasi*/ _NOP (); /* Maca pin port */ i = PINB; … |
Input Digital Ngaktifake lan Mode Turu
Minangka ditampilake ing Gambar 10-2, sinyal input digital bisa dadi clamped kanggo lemah ing input saka schmitt-pemicu. Sinyal sing dituduhake SLEEP ing tokoh kasebut, disetel dening Kontroler Turu MCU ing mode Power-down kanggo nyegah konsumsi daya dhuwur yen sawetara sinyal input ditinggal ngambang, utawa duwe level sinyal analog sing cedhak karo VCC / 2.
TUTUP diganti kanggo pin port sing diaktifake minangka pin interrupt external. Yen panjaluk ngganggu eksternal ora diaktifake, SLEEP uga aktif kanggo pin kasebut. TURU uga ditimpa macem-macem fungsi sulih liyane kaya sing dijelasake ing "Fungsi Port Alternatif" ing kaca 57.
Yen logika tingkat dhuwur ("siji") ana ing pin interrupt eksternal asinkron sing dikonfigurasi minangka "Interrupt on Rising Edge, Falling Edge, utawa Sembarang Logic Change on Pin" nalika interupsi eksternal ora diaktifake, Flag Interrupt Eksternal sing cocog bakal disetel nalika nerusake saka mode Turu kasebut ing ndhuwur, minangka clamping mode turu iki ngasilake pangowahan logika sing dijaluk.
Pin sing ora nyambung
Yen sawetara pin ora digunakake, disaranake supaya pin kasebut duwe level sing wis ditemtokake. Sanajan umume input digital dipateni ing mode turu jero kaya sing dijelasake ing ndhuwur, masukan ngambang kudu diindhari kanggo nyuda konsumsi saiki ing kabeh mode liyane ing endi input digital diaktifake (Reset, Mode aktif lan mode Idle).
Cara paling gampang kanggo mesthekake tingkat ditetepake saka pin ora digunakake, iku kanggo ngaktifake internal narik-munggah. Ing kasus iki, pull-up bakal dipatèni sak reset. Yen konsumsi daya kurang sak reset penting, dianjurake kanggo nggunakake external pull-up utawa pulldown. Nyambungake pin sing ora digunakake langsung menyang VCC utawa GND ora dianjurake, amarga iki bisa nyebabake arus sing gedhe banget yen pin kasebut ora sengaja dikonfigurasi minangka output.
Fungsi Port Alternatif
Umume pin port duwe fungsi sulih saliyane digital I / Os digital umum. Gambar 10-5 nuduhake kepiye sinyal kontrol pin port saka sing wis disederhanakake Gambar 10-2 bisa ditrapake kanthi fungsi alternatif. Sinyal overriding bisa uga ora ana ing kabeh pin port, nanging gambar kasebut minangka deskripsi umum sing ditrapake kanggo kabeh pin port ing kulawarga mikrokontroler AVR.
Tabel 10-2. Katrangan Umum Sinyal Overriding kanggo Fungsi Alternatif
Jeneng Sinyal | Jeneng Lengkap | Katrangan |
PUOE | Narik-munggah Ngganti Aktifake | Yen sinyal iki disetel, ngaktifake pull-up bakal dikontrol karo sinyal PUOV. Yen sinyal iki dibersihake, pull-up bakal diaktifake nalika
{DDxn, PORTxn, PUD} = 0b010. |
PUOV | Nilai Override Narik-munggah | Yen PUOE disetel, pull-up diaktifake / dipateni nalika PUOV disetel / diresiki, preduli saka setelan bit DDxn, PORTxn, lan PUD Register. |
DDOE | Ngarahake Arah Data Ngaktifake | Yen sinyal iki wis disetel, Output Driver Enable bakal dikontrol dening sinyal DDOV. Yen sinyal iki diresiki, driver Output bakal diaktifake dening bit Daptar DDxn. |
DDOV | Nilai Ngatasi Arahan Data | Yen DDOE wis disetel, Driver Output diaktifake / dipateni nalika DDOV disetel / diresiki, preduli saka setelan bit DDxn Register. |
PVOE | Ngalahake Nilai Port Bisa | Yen sinyal iki wis disetel lan Driver Output diaktifake, angka port bisa dikontrol dening sinyal PVOV. Yen PVOE diresiki, lan Driver Output diaktifake, Nilai port dikontrol dening bit PORTxn Register. |
PVOV | Nilai Override Nilai Port | Yen PVOE disetel, angka port disetel menyang PVOV, preduli saka setelan bit PORTxn Register. |
PTOE | Port Toggle Override Ngaktifake | Yen PTOE disetel, bit PORTxn Register bakal dibalikke. |
DIEOE | Input Digital Aktifake Override Aktifake | Yen bit iki wis disetel, Digital Input Enable bakal dikontrol dening sinyal DIEOV. Yen sinyal iki diresiki, Enput Input Digital ditemtokake dening negara MCU (Mode normal, mode turu). |
DIEOV | Input Digital Aktifake Nilai Ngatasi | Yen DIEOE disetel, Input Digital diaktifake / dipateni nalika DIEOV disetel / diresiki, preduli saka kahanan MCU (Mode normal, mode turu). |
DI | Input Digital | Iki minangka Input Digital kanggo fungsi sulih. Ing gambar kasebut, sinyal kasebut disambungake menyang output pemicu schmitt nanging sadurunge sinkronisasi. Kajaba Input Digital digunakake minangka sumber jam, modul kanthi fungsi sulih bakal nggunakake sinkronisasi dhewe. |
AIO | Input / Output Analog | Iki minangka Input / Output Analog menyang / saka fungsi sulih. Sinyal kasebut disambungake langsung menyang bantalan, lan bisa digunakake kanthi arah loro. |
Ing bagean ngisor iki njlentrehake sawetara fungsi alternatif kanggo saben port, lan ngubungake sinyal sing overriding karo fungsi alternate. Waca katrangan fungsi alternatif kanggo katrangan luwih lengkap.
Fungsi Alternatif Pelabuhan B
Pin Port B kanthi fungsi sulih ditampilake ing Tabel 10-3.
Tabel 10-3. Port B Pins Fungsi Alternatif
Pin Port | Fungsi Alternate |
PB5 | ![]() RESET: Reset Pin dW: debugWIRE I / O ADC0: ADC Channel Input 0 PCINT5: Ngganti Pin Ganggu, Sumber 5 |
PB4 | XTAL2: Crystal Osilator Output CLKO: Output Clock Sistem ADC2: ADC Input Channel 2
OC1B: Timer / Counter1 Bandingake Match B Output PCINT4: Pin Change Interrupt 0, Source 4 |
PB3 | XTAL1: Input Osilator Kristal CLKI: Input Jam Eksternal ADC3: Saluran Input ADC 3
OC1B: Timer Tambahan / Counter1 Bandingake Match B Output PCINT3: Pin Change Interrupt 0, Source 3 |
PB2 | SCK: Input Jam Serial ADC1: Saluran Input ADC 1
T0: Timer / Counter0 Clock Source USCK: USI Clock (Three Wire Mode) SCL: USI Clock (Two Wire Mode) INT0: External Interrupt 0 Input PCINT2: Pin Change Interrupt 0, Source 2 |
PB1 | MISO: Input Data Master SPI / Output Data Budhak AIN1: Comparator Analog, Input Negatif OC0B: Timer / Counter0 Bandingake Match B Output OC1A: Timer / Counter1 Bandingake Pertandhingan A Output DO: Output Data USI (Three Wire Mode) PCINT1: Pin Change Interrupt 0, Sumber 1 |
PB0 | MOSI :: Output Data Master SPI / Input Data Budhak AIN0: Comparator Analog, Input Positif
OC0A: Timer / Counter0 Mbandhingake Match A output OC1A: Timer Tambahan / Counter1 Bandingake Pertandhingan A Output DI: Input Data USI (Mode Tiga Kawat) SDA: USI Data Input (Two Wire Mode) AREF: Eksternal Analog Referensi PCINT0: Pin Change Interrupt 0, Source 0 |
Port B, Bit 5 - RESET / dW / ADC0 / PCINT5
RESET: Input Reset Eksternal aktif kurang lan diaktifake kanthi ora diprogram ("1") RSTDISBL Fuse. Pullup diaktifake lan driver output lan input digital dipateni nalika pin digunakake minangka PIN RESET.
dW: Nalika Fuse debugWIRE Aktifake (DWEN) wis diprogram lan Bit bit ora diprogram, sistem debugWIRE ing piranti target diaktifake. PIN port RESET dikonfigurasi minangka kabel I / O arah loro-arah (open-drain) kanthi aktif pull-up lan dadi gateway komunikasi antarane target lan emulator.
ADC0: Konverter Analog menyang Digital, Saluran 0.
PCINT5: Ngganti Pin Ganggu sumber 5.
Port B, Bit 4 - XTAL2 / CLKO / ADC2 / OC1B / PCINT4
XTAL2: Chip Clock Oscillator pin 2. Digunakake minangka pin jam kanggo kabeh sumber jam chip kajaba calibrateble internal RC Oscillator lan jam eksternal. Yen digunakake minangka pin jam, pin ora bisa digunakake minangka pin I / O. Nalika nggunakake RC Osilator internal utawa jam Eksternal minangka sumber jam Chip, PB4 dadi pin I / O biasa.
CLKO: Jam sistem sing dipotong bisa output ing pin PB4. Jam sistem sing dibagi bakal output yen CKOUT Fuse wis diprogram, preduli saka setelan PORTB4 lan DDB4. Uga bakal output nalika direset.
ADC2: Konverter Analog menyang Digital, Saluran 2.
OC1B: Output Compare Match output: Pin PB4 bisa dadi output eksternal kanggo Timer / Counter1 Compare Match B nalika dikonfigurasi minangka output (set DDB4). PIN OC1B uga pin output kanggo fungsi timer mode PWM.
PCINT4: Ngganti Pin Ganggu sumber 4.
Port B, Bit 3 - XTAL1 / CLKI / ADC3 / OC1B / PCINT3
XTAL1: Chip Clock Oscillator pin 1. Digunakake kanggo kabeh sumber jam chip kajaba osilator RC kalibrateble internal. Yen digunakake minangka pin jam, pin ora bisa digunakake minangka pin I / O.
CLKI: Input Jam saka sumber jam eksternal, deleng "Jam Eksternal" ing kaca 26.
ADC3: Konverter Analog menyang Digital, Saluran 3.
OC1B: Output kuwalik Mbandhingake output Cocokake: Pin PB3 bisa dadi output eksternal kanggo Timer / Counter1 Compare Match B nalika dikonfigurasi minangka output (set DDB3). PIN OC1B uga pin output kuwalik kanggo fungsi timer mode PWM.
PCINT3: Ngganti Pin Ganggu sumber 3.
Port B, Bit 2 - SCK / ADC1 / T0 / USCK / SCL / INT0 / PCINT2
SCK: Output Jam Master, pin input Jam Budha kanggo saluran SPI. Nalika SPI diaktifake dadi Budhak, pin iki dikonfigurasi minangka input preduli saka setelan DDB2. Nalika SPI diaktifake dadi Master, arah data pin iki dikendhaleni dening DDPB2. Nalika pin dipeksa dening SPI dadi input, penarik isih bisa dikontrol dening bit PORTB2.
ADC1: Konverter Analog menyang Digital, Saluran 1.
T0: Sumber counter Timer / Counter0.
USCK: Mode telung kabel Universal Serial Interface Clock.
SCL: Mode Serat Kawat Serial Clock kanggo mode USI Two-wire.
INT0: Sumber Interrupt Eksternal 0.
PCINT2: Ngganti Pin Ganggu sumber 2.
Port B, Bit 1 - MISO / AIN1 / OC0B / OC1A / DO / PCINT1
MISO: Input Data Master, Pin output output budak kanggo saluran SPI. Nalika SPI diaktifake dadi Master, pin iki dikonfigurasi minangka input preduli saka setelan DDB1. Nalika SPI diaktifake dadi Slave, arah data pin iki dikontrol dening DDB1. Nalika pin dipeksa dening SPI dadi input, penarik isih bisa dikontrol dening bit PORTB1.
AIN1: Input Negatif Comparator Analog. Konfigurasi pin port minangka input kanthi internal pull-up dipateni supaya fungsi port digital ora ngganggu fungsi Comparator Analog.
OC0B: Output Compare Match match. Pin PB1 bisa dadi output eksternal kanggo Timer / Counter0 Compare Match B. PIN PB1 kudu dikonfigurasi minangka output (set DDB1 (siji)) kanggo fungsi iki. PIN OC0B uga pin output kanggo fungsi timer mode PWM.
OC1A: Output Compare Match output: Pin PB1 bisa dadi output eksternal kanggo Timer / Counter1 Compare Match B nalika dikonfigurasi minangka output (set DDB1). PIN OC1A uga pin output kanggo fungsi timer mode PWM.
DO: Mode telung kawat Universal Serial Interface Data output. Mode telung kawat Output data ngilangi nilai PORTB1 lan didorong menyang port nalika arah data bit DDB1 disetel (siji). PORTB1 isih ngaktifake pull-up, yen arah wis input lan PORTB1 wis disetel (siji).
PCINT1: Ngganti Pin Ganggu sumber 1.
Port B, Bit 0 - MOSI / AIN0 / OC0A / OC1A / DI / SDA / AREF / PCINT0
MOSI: Output Data Master SPI, Input Slave Data kanggo saluran SPI. Nalika SPI diaktifake dadi Budhak, pin iki dikonfigurasi minangka input preduli saka setelan DDB0. Nalika SPI diaktifake dadi Master, arah data pin iki dikontrol dening DDB0. Nalika pin dipeksa dening SPI dadi input, penarik isih bisa dikontrol dening bit PORTB0.
AIN0: Masukan Positif Analog Comparator. Konfigurasi pin port minangka input kanthi internal pull-up dipateni supaya fungsi port digital ora ngganggu fungsi Comparator Analog.
OC0A: Output Compare output Cocokake. Pin PB0 bisa dadi output eksternal kanggo Timer / Counter0 Compare Match A nalika dikonfigurasi minangka output (set DDB0 (siji)). PIN OC0A uga pin output kanggo fungsi timer mode PWM.
OC1A: Output kuwalik Mbandhingake output Cocokake: PIN PB0 bisa dadi output eksternal kanggo Timer / Counter1 Compare Match B nalika dikonfigurasi minangka output (set DDB0). PIN OC1A uga pin output kuwalik kanggo fungsi timer mode PWM.
SDA: Data Antarmuka Serial mode loro-kabel.
AREF: Referensi Analog Eksternal kanggo ADC. Pullup lan driver output dipateni ing PB0 nalika pin digunakake minangka referensi eksternal utawa Internal Voltage Referensi nganggo kapasitor eksternal ing pin AREF.
DI: Input Data ing mode Telung kabel USI. Mode USI Telung kawat ora ngluwihi fungsi port normal, mula pin kudu dikonfigurasi minangka input kanggo fungsi DI.
PCINT0: Ngganti Pin Ganggu sumber 0.
Tabel 10-4 lan Tabel 10-5 sambungake fungsi alternatif Port B karo sinyal sing ditampilake ing Gambar 10-5 ing kaca 58.
Tabel 10-4. Sinyal Overriding kanggo Fungsi Alternatif ing PB[5:3]
Jeneng Sinyal | PB5 / RESET / ADC0 / PCINT5 | PB4/ADC2/XTAL2/ OC1B/PCINT4 | PB3/ADC3/XTAL1/ OC1B/PCINT3 |
PUOE | ![]() |
0 | 0 |
PUOV | 1 | 0 | 0 |
DDOE | RSTDISBL(1) • DWEN(1) | 0 | 0 |
DDOV | ngirimake debugWire | 0 | 0 |
PVOE | 0 | OC1B Ngaktifake | ![]() OC1B Ngaktifake |
PVOV | 0 | OC1B | OC1B |
PTOE | 0 | 0 | 0 |
DIEOE | ![]() RSTDISBL(1) + (PCINT5 • PCIE + ADC0D) |
PCINT4 • PCIE + ADC2D | PCINT3 • PCIE + ADC3D |
DIEOV | ADC0D | ADC2D | ADC3D |
DI | Input PCINT5 | Input PCINT4 | Input PCINT3 |
AIO | RESET Input, Input ADC0 | Masukan ADC2 | Masukan ADC3 |
Cathetan: nalika Fuse "0" (Diprogram).
Tabel 10-5. Sinyal Overriding kanggo Fungsi Alternatif ing PB[2:0]
Jeneng Sinyal | 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 |
PUOE | 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 |
PVOE | USI_TWO_WIRE • DDB2 | OC0B Aktifake + OC1A Aktifake + USI_THREE_WIRE | ![]() OC0A Aktifake + OC1A Aktifake + (USI_TWO_WIRE DDB0) |
PVOV | 0 | OC0B + OC1A + DO | ![]() OC0A + OC1A |
PTOE | USITC | 0 | 0 |
DIEOE | PCINT2 • PCIE + ADC1D + USISIE | PCINT1 • PCIE + AIN1D | PCINT0 • PCIE + AIN0D + USISIE |
DIEOV | ADC1D | AIN1D | AIN0D |
DI | T0 / USCK / SCL / INT0 /
Input PCINT2 |
Input PCINT1 | Input DI / SDA / PCINT0 |
AIO | Masukan ADC1 | Input Negatif Comparator Analog | Input Positif Analog Comparator |
Dhaptar Dhaptar
MCUCR - Daftar Kontrol MCU
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BODS | PUD | SE | SM1 | SM0 | BODSE | ISC01 | ISC00 | MCUCR |
Maca / Nulis | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Nilai wiwitan | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 6 - PUD: Narik-munggah Pateni
Nalika bit iki ditulis siji, pull-up ing port I / O dipateni sanajan DDxn lan PORTxn Registrere dikonfigurasi kanggo ngaktifake pull-up ({DDxn, PORTxn} = 0b01). Waca "Ngatur Pin" ing kaca 54 kanggo rincian liyane babagan fitur iki.
PORTB - Dhaptar Data Port B
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x18 | – | – | PORTB5 | PORTB4 | PORTB3 | PORTB2 | PORTB1 | PORTB0 | PORTB |
Maca / Nulis | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Nilai wiwitan | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
DDRB - Dhaptar Arah Data Port B
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x17 | – | – | DDB5 | DDB4 | DDB3 | DDB2 | DDB1 | DDB0 | DDRB |
Maca / Nulis | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Nilai wiwitan | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
PINB - Alamat Input Port B
bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x16 | – | – | PINB5 | PINB4 | PINB3 | PINB2 | PINB1 | PINB0 | PINB |
Maca / Nulis | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Nilai wiwitan | 0 | 0 | N/A | N/A | N/A | N/A | N/A | N/A |
8-bit Timer / Counter0 karo PWM
Fitur
Rong Output Mbandhingake Unit
Output Buffer dobel Mbandhingake Ndhaptar
Mbusak Timer babagan Bandingake Pertandhingan (Muat Ulang Otomatis)
Gratis Glitch, Phase True Pulse Width Modulator (PWM)
Periode PWM sing Variable
Generator Frekuensi
Telung Sumber Interrupt Independen (TOV0, OCF0A, lan OCF0B)
Swaraview
Timer / Counter0 minangka modul Timer / Counter 8-bit tujuan umum, kanthi rong Unit Mbandhingake Output independen, lan dhukungan PWM. Ngidini wektu eksekusi program sing akurat (manajemen acara) lan generasi gelombang.
Diagram blok sing disederhanakake saka Timer / Counter 8-bit ditampilake ing Gambar 11-1. Kanggo pin I / O sing nyata, delengen "Pinout ATtiny25 / 45/85" ing kaca 2. Daftar I / O sing bisa diakses CPU, kalebu bit I / O lan pin I / O, ditampilake kanthi kendel. Ndhaptar I / O khusus piranti lan lokasi bit kacathet ing "Dhaptar Dhaptar" ing kaca 77.
Timer/Counter (TCNT0) lan Output Compare Registers (OCR0A lan OCR0B) minangka register 8-bit. Panjaluk interrupt (disingkat Int.Req. ing tokoh) sinyal kabeh katon ing Timer Interrupt Flag Register (TIFR). Kabeh interupsi ditutupi kanthi otomatis karo Timer Interrupt Mask Register (TIMSK). TIFR lan TIMSK ora ditampilake ing tokoh.
Timer / Counter bisa clocked internal, liwat prescaler, utawa dening sumber jam external ing pin T0. Blok logika Clock Select ngontrol sumber jam lan pinggiran sing digunakake Timer / Counter kanggo nambah (utawa nyuda) regane. Timer/Counter ora aktif nalika ora ana sumber jam sing dipilih. Output saka logika Clock Select diarani minangka jam timer (clkT0).
Ndhaptar Output Compare buffered dobel (OCR0A lan OCR0B) dibandhingake karo nilai Timer / Counter sawayah-wayah. Asil mbandhingake bisa digunakake dening Waveform Generator kanggo ngasilake output PWM utawa variabel frekuensi ing pin Output Compare (OC0A lan OC0B). Deleng "Output Compare Unit" ing kaca 69. kanggo rincian. Acara Compare Match uga bakal nyetel Compare Flag (OCF0A utawa OCF0B) sing bisa digunakake kanggo ngasilake panjaluk gangguan Output Compare.
Definisi
Akeh referensi registrasi lan bit ing bagean iki ditulis kanthi formulir umum. Kasus ngisor "n" ngganti nomer Timer / Counter, ing kasus iki 0. Cilik ngisor "x" ngganti Unit Compare Output, ing kasus iki Bandingake Unit A utawa Bandingake Unit B. Nanging, nalika nggunakake register utawa bit nemtokake ing program, formulir sing tepat kudu digunakake, yaiku, TCNT0 kanggo ngakses nilai counter Timer / Counter0 lan liya-liyane.
Definisi ing Tabel 11-1 uga digunakake ing saindhenging dokumen.
Tabel 11-1. Definisi
pancet | Katrangan |
NGIRING | Konter tekan BOTTOM nalika dadi 0x00 |
MAX | Konter tekan MAXimum nalika dadi 0xFF (desimal 255) |
TOP | Counter tekan TOP nalika padha karo nilai paling dhuwur ing urutan count. Nilai TOP bisa diwenehake dadi nilai tetep 0xFF (MAX) utawa nilai sing disimpen ing Daftar OCR0A. Penugasan gumantung karo mode operasi |
Sumber Timer / Counter Prescaler lan Jam
Timer / Counter bisa dicithak dening sumber jam internal utawa eksternal. Sumber jam dipilih kanthi logika Clock Select sing dikontrol dening Clock Select (c) bit sing ana ing Daftar Kontrol Timer / Counter0 (TCCR0B).
Sumber Jam Internal karo Prescaler
Timer / Counter0 bisa clocked langsung dening jam sistem (kanthi nyetel CS0 [2: 0] = 1). Iki nyedhiyakake operasi paling cepet, kanthi frekuensi jam timer / counter maksimum sing padha karo frekuensi jam sistem (fCLK_I/O). Utawa, salah siji saka papat tunyuk saka prescaler bisa digunakake minangka sumber jam. Jam prescaled nduweni frekuensi salah siji
Reset Prescaler
Prescaler mlaku kanthi gratis, yaiku ngoperasikake independen saka logika Jam Pilih Timer / Counter0. Amarga prescaler ora kena pengaruh jam pilihan wektu / counter, mula kahanan prescaler bakal menehi pengaruh kanggo kahanan sing digunakake jam preskresi. Salah mantanample artefak prescaling yaiku nalika timer / counter diaktifake lan diatur dening prescaler (6> CS0 [2: 0]> 1). Nomer siklus jam sistem nalika wektu aktif kanggo count kaping pisanan bisa diwiwiti saka 1 nganti N + 1 siklus jam sistem, ing endi N padha karo pembagi prescaler (8, 64, 256, utawa 1024).
Sampeyan bisa nggunakake Prescaler Reset kanggo nyinkronake Timer / Counter kanggo eksekusi program.
Sumber Jam Eksternal
Sumber jam eksternal sing ditrapake ing pin T0 bisa digunakake minangka jam timer / counter (clkT0). Pin T0 yaiku sampdipimpin sapisan saben siklus jam sistem kanthi logika sinkronisasi pin. Sing wis disinkronakeampled) sinyal banjur liwati
liwat detektor pinggiran. Gambar 11-2 nuduhake diagram blok sing padha karo fungsi sinkronisasi T0 lan logika detektor pinggiran. Register sing clocked ing pojok positif saka jam sistem internal (clkI/O). Latch transparan ing wektu dhuwur saka jam sistem internal.
Detektor pinggiran ngasilake siji pulsa clkT0 kanggo saben pojok positif (CS0 [2: 0] = 7) utawa negatif (CS0 [2: 0] = 6) sing dideteksi.
Ndhaptar OCR0x kaping pindho buffer nalika nggunakake mode Pulse Width Modulation (PWM). Kanggo mode operasi normal lan Clear Timer on Compare (CTC), buffering dobel dipateni. Buffet dobel nyinkronake nganyari OCR0x Compare Register kanggo ndhuwur utawa ngisor urutan ngetang. Sinkronisasi nyegah kedadeyan pulsa PWM sing dawane dawa, ora simetris, saengga nggawe output bebas glitch.
Akses Ndhaptar OCR0x kayane rumit, nanging iki ora ngono. Nalika buffering dobel diaktifake, CPU nduweni akses menyang Daftar Buffer OCR0x, lan yen buffering dobel dinonaktifake, CPU bakal ngakses OCR0x kanthi langsung.
Output Force Bandhingake
Ing mode generasi gelombang non-PWM, output match saka komparator bisa dipeksa kanthi nulis siji menyang bit Force Output Compare (FOC0x). Meksa Compare Match ora bakal nyetel Bendera OCF0x utawa mbukak ulang / ngresiki wektu, nanging pin OC0x bakal dianyari kaya yen ana Compare Compare sing nyata (COM0x [1: 0] setelan bit sing nemtokake manawa pin OC0x wis disetel, dibusak utawa diowahi).
Bandhingake Blokir Pertandhingan karo TCNT0 Tulis
Kabeh operasi nulis CPU menyang Dhaptar TCNT0 bakal mblokir Pertandhingan Banding sing kedadeyan ing siklus jam sabanjure, sanajan wektu mandheg. Fitur iki ngidini OCR0x bisa diinisialisasi menyang nilai sing padha karo TCNT0 tanpa nyebabake gangguan nalika jam Timer / Counter diaktifake.
Nggunakake Output Compare Unit
Wiwit nulis TCNT0 ing mode operasi apa wae, bakal mblokir kabeh Compare Match kanggo sak siklus jam otomatis, ana risiko nalika ngganti TCNT0 nalika nggunakake Output Compare Unit, kanthi mandhiri apa Timer / Counter mlaku utawa ora. Yen nilai sing ditulis menyang TCNT0 padha karo nilai OCR0x, Match Compare bakal ora kejawab, ngasilake generasi gelombang sing salah. Kajaba iku, aja nulis nilai TCNT0 sing padha karo BOTTOM nalika penghitung mundur.
Persiyapan OC0x kudu ditindakake sadurunge nyetel Dhaptar Arah Data supaya pin port bisa diasilake. Cara paling gampang nyetel nilai OC0x yaiku nggunakake bit strobo Force Output Compare (FOC0x) ing mode Normal. Ndhaptar OC0x tetep njaga nilai sanajan ganti ing antarane mode Generasi Waveform.
Elinga yen bit COM0x [1: 0] ora disangga kaping pindho bebarengan karo nilai mbandhingake. Ganti bit COM0x [1: 0] bakal enggal ditrapake.
Bandingake Unit Output Pertandhingan
Bit Compare Mode Output (COM0x [1: 0]) duwe loro fungsi. Waveform Generator nggunakake bit COM0x [1: 0] kanggo netepake negara Output Compare (OC0x) ing Compare Match sabanjure. Uga, bit COM0x [1: 0] ngontrol sumber output pin OC0x. Gambar 11-6 nuduhake skema logika sing disederhanakake sing kena pengaruh setelan COM0x [1: 0]. Ndhaptar I / O, bit I / O, lan pin I / O ditampilake kanthi kandel. Mung bagean-bagean umum saka I / O Port Control Registr (DDR lan PORT) sing kena pengaruh COM0x [1: 0] sing ditampilake. Nalika ngrujuk menyang negara OC0x, referensi kasebut kanggo Ndhaptar OC0x internal, dudu pin OC0x. Yen sistem diwiwiti maneh, Daftar OC0x disetel maneh menyang "0".
Nalika OC0A / OC0B disambungake menyang pin I / O, fungsi bit COM0A [1: 0] / COM0B [1: 0] gumantung karo setelan bit WGM0 [2: 0]. Tabel 11-2 nuduhake fungsi bit COM0x [1: 0] nalika bit WGM0 [2: 0] disetel menyang mode normal utawa CTC (non-PWM).
Tabel 11-2. Bandingake Mode Output, Mode non-PWM
COM0A1 COM0B1 | COM0A0 COM0B0 | Katrangan |
0 | 0 | Operasi port normal, OC0A / OC0B pedhot. |
0 | 1 | Togol OC0A / OC0B ing Compare Match |
1 | 0 | Mbusak OC0A / OC0B ing Compare Match |
1 | 1 | Setel OC0A / OC0B ing Compare Match |
Tabel 11-3 nuduhake fungsi bit COM0x [1: 0] nalika bit WGM0 [2: 0] disetel menyang mode PWM cepet.
Tabel 11-3. Mbandhingake Mode Output, Mode PWM Cepet(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | Katrangan |
0 | 0 | Operasi port normal, OC0A / OC0B pedhot. |
0 | 1 | dilindhungi |
1 | 0 | Mbusak OC0A / OC0B ing Compare Match, atur OC0A / OC0B ing BOTTOM (mode non-inverting) |
1 | 1 | Setel OC0A / OC0B ing Compare Match, busak OC0A / OC0B ing BOTTOM (mode inverting) |
Cathetan: Kasus khusus kedadeyan nalika OCR0A utawa OCR0B padha karo TOP lan COM0A1/COM0B1 disetel. Ing kasus iki, pertandhingan mbandhingake ora digatekake, nanging set utawa jelas ditindakake ing BOTTOM. Delengen "Mode PWM Cepet" ing kaca 73 kanggo rincian liyane.
Tabel 11-4 nuduhake fungsi bit COM0x [1: 0] nalika bit WGM0 [2: 0] disetel dadi mode PWM sing bener.
Tabel 11-4. Mbandhingake Mode Output, Mode PWM Fase Bener(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | Katrangan |
0 | 0 | Operasi port normal, OC0A / OC0B pedhot. |
0 | 1 | dilindhungi |
1 | 0 | Mbusak OC0A / OC0B ing Compare Match nalika munggah-ngetung. Setel OC0A / OC0B ing Compare Match nalika ngetung mudhun. |
1 | 1 | Setel OC0A / OC0B ing Compare Match nalika munggah-ngetung. Mbusak OC0A / OC0B ing Compare Match nalika ngetung mudhun. |
Wigati: 1. Kasus khusus dumadi nalika OCR0A utawa OCR0B padha karo TOP lan COM0A1 / COM0B1 disetel. Ing kasus iki, Pertandhingan Bandingake ora digatekake, nanging set utawa jelas ditindakake ing TOP. Delengen "Mode PWM sing bener fase" ing kaca 74 kanggo rincian liyane.
Bit 3: 2 - Res: Bit Reservasi
Bit kasebut minangka bit cadangan ing ATtiny25 / 45/85 lan bakal diwaca nol.
Bit 1: 0 - WGM0 [1: 0]: Mode Generasi Gelombang
Digabungake karo bit WGM02 sing ditemokake ing Daftar TCCR0B, bit kasebut ngontrol urutan ngetang counter, sumber kanggo nilai counter maksimum (TOP), lan jinis generasi gelombang apa sing bakal digunakake, waca Tabel 11-5. Mode operasi sing didhukung dening unit Timer / Counter yaiku: Mode normal (counter), Clear Timer on Compare Match (CTC) mode, lan rong jinis mode Pulse Width Modulation (PWM) (waca "Cara Operasi" ing kaca 71).
Tabel 11-5. Deskripsi Bit Mode Generasi Gelombang
Mode | WGM 02 | WGM 01 | WGM 00 | Mode Operasi Timer / Counter | TOP | Nganyari OCRx ing | Tandha TOV disetel |
0 | 0 | 0 | 0 | Normal | 0xff | Langsung | MAX(1) |
1 | 0 | 0 | 1 | PWM, Fase Bener | 0xff | TOP | NGIRING(2) |
2 | 0 | 1 | 0 | CTC | OCRA | Langsung | MAX(1) |
3 | 0 | 1 | 1 | PWM cepet | 0xff | NGIRING(2) | MAX(1) |
4 | 1 | 0 | 0 | dilindhungi | – | – | – |
5 | 1 | 0 | 1 | PWM, Fase Bener | OCRA | TOP | NGIRING(2) |
6 | 1 | 1 | 0 | dilindhungi | – | – | – |
7 | 1 | 1 | 1 | PWM cepet | OCRA | NGIRING(2) | TOP |
Bit 7 - FOC0A: Output Kekuwatan Bandingake A
Bit FOC0A mung aktif nalika bit WGM nemtokake mode non-PWM.
Nanging, kanggo njamin kompatibilitas karo piranti mbesuk, bit iki kudu disetel dadi nol nalika TCCR0B ditulis nalika operasi ing mode PWM. Nalika nulis sing logis menyang FOC0A, Match Compare langsung dipeksa ing unit Generasi Waveform. Output OC0A diganti miturut setelan COM0A [1: 0] bit. Elinga yen bit FOC0A diterapake minangka strobo. Mula iku nilai sing ana ing bit COM0A [1: 0] sing nemtokake efek saka bandhing paksa.
Strobo FOC0A ora bakal ngganggu, uga ora mbusak wektu ing mode CTC nggunakake OCR0A minangka TOP. Bit FOC0A mesthi diwaca nol.
Bit 6 - FOC0B: Bandhingake Output Pasukan B
Bit FOC0B mung aktif nalika bit WGM nemtokake mode non-PWM.
Nanging, kanggo njamin kompatibilitas karo piranti mbesuk, bit iki kudu disetel dadi nol nalika TCCR0B ditulis nalika operasi ing mode PWM. Nalika nulis sing logis menyang bit FOC0B, Match Compare langsung dipeksa ing unit Generasi Waveform. Output OC0B diganti miturut setelan bit COM0B [1: 0]. Elinga yen bit FOC0B diterapake minangka strobo. Mula iku nilai sing ana ing COM0B [1: 0] bit sing nemtokake efek saka bandhing paksa.
Strobo FOC0B ora bakal ngasilake gangguan, uga ora bakal mbusak timer ing mode CTC nggunakake OCR0B minangka TOP.
Bit FOC0B mesthi diwaca nol.
Bit 5: 4 - Res: Bit Reservasi
Bit kasebut minangka bit cadangan ing ATtiny25 / 45/85 lan bakal diwaca nol.
Bit 3 - WGM02: Mode Generasi Gelombang
Deleng katrangan ing “TCCR0A - Dhaptar Kontrol Timer / Counter A” ing kaca 77.
Bit 2: 0 - CS0 [2: 0]: Pilih Jam
Telung Clock Select bit milih sumber jam sing bakal digunakake Timer / Counter.
Tabel 11-6. Jam Pilih Katrangan Bit
CS02 | CS01 | CS00 | Katrangan |
0 | 0 | 0 | Ora ana sumber jam (Timer / Counter mandheg) |
0 | 0 | 1 | clkI/O/(Ora ana prescaling) |
0 | 1 | 0 | clkI/O/8 (Saka prescaler) |
0 | 1 | 1 | clkI/O/64 (Saka prescaler) |
1 | 0 | 0 | clkI/O/256 (Saka prescaler) |
1 | 0 | 1 | clkI/O/1024 (Saka prescaler) |
1 | 1 | 0 | Sumber jam eksternal ing pin T0. Jam ing ujung sing tiba. |
1 | 1 | 1 | Sumber jam eksternal ing pin T0. Jam ing pinggiran munggah. |
Yen mode pin eksternal digunakake kanggo Timer / Counter0, transisi ing pin T0 bakal menehi counter malah yen pin dikonfigurasi minangka output. Fitur iki ngidini kontrol piranti lunak ngetung.
Counter lan Bandhingake Unit
Operasi umum Timer / Counter1 diterangake ing mode asinkron lan operasi ing mode synchro-nous mung kasebut yen ana bedane ing antarane rong mode kasebut. Gambar 12-2 nuduhake diagram blok blok sinkronisasi Timer / Counter 1 lan telat sinkronisasi ing antarane dhaptar. Elinga yen kabeh rincian gerbang jam ora ditampilake ing gambar. Nilai dhaptar Timer / Counter1 ngliwati dhaptar sinkronisasi internal, sing nyebabake wektu tundha sinkronisasi input, sadurunge kena pengaruh operasi counter. Ndhaptar TCCR1, GTCCR, OCR1A, OCR1B, lan OCR1C bisa diwaca maneh sawise nulis dhaptar. Nilai maca maneh ditundha kanggo dhaptar lan panji Timer / Counter1 (TCNT1) (OCF1A, OCF1B, lan TOV1), amarga ana sinkronisasi input lan output.
Timer / Counter1 nampilake resolusi dhuwur lan panggunaan akurasi sing dhuwur kanthi kesempatan presensi sing luwih murah. Uga bisa ndhukung loro Modulator Lebar Pulsa 8-bit sing akurat, kacepetan dhuwur nggunakake kacepetan jam nganti 64 MHz (utawa 32 MHz ing Mode Kacepetan Low). Ing mode iki, Timer / Counter1 lan output mbandhingake dhaptar minangka PWM sing mandhiri kanthi output non-terbalik lan output kuwalik. Rujuk menyang kaca 86 kanggo katrangan rinci babagan fungsi iki. Kajaba iku, kesempatan preskusi sing dhuwur nggawe unit iki migunani kanggo fungsi kacepetan luwih murah utawa fungsi wektu sing tepat kanthi tumindak sing ora asring.
Gambar 12-2. Timer/Counter 1 Sinkronisasi Register Blok Diagram.
Timer / Counter1 lan prescaler ngidini mbukak CPU saka sumber jam apa wae, nalika prescaler lagi aktif ing jam PCK 64 MHz (utawa 32 MHz ing Mode Kecep Rendah) ing mode asinkron.
Elinga yen frekuensi jam sistem kudu luwih murah tinimbang sepertiga frekuensi PCK. Mekanisme sinkronisasi Timer / Counter1 asinkron mbutuhake paling ora rong pojok PCK nalika jam sistem dhuwur. Yen frekuensi jam sistem dhuwur banget, bisa dadi risiko yen data utawa nilai kontrol bakal ilang.
Ing ngisor iki Gambar 12-3 nuduhake diagram blok kanggo Timer / Counter1.
Tabel 12-1. Bandhingake Mode Pilih ing Mode PWM
COM1x1 | COM1x0 | Pengaruh Output Compare Pin |
0 | 0 | OC1x ora nyambung. OC1x ora nyambung. |
0 | 1 | OC1x diresiki nalika mbandhingake match. Setel nalikaTCNT1 = $ 00. OC1x disetel ing mbandhingake match. Dibusak nalika TCNT1 = $ 00. |
1 | 0 | OC1x diresiki nalika mbandhingake match. Setel nalika TCNT1 = $ 00. OC1x ora nyambung. |
1 | 1 | OC1x Setel ing mbandhingake match. Dibusak nalika TCNT1 = $ 00. OC1x ora nyambung. |
Karakteristik ADC
Tabel 21-8. Karakteristik ADC, Saluran Tunggal. TA = -40°C nganti +85°C
Simbol | Paramèter | kahanan | Min | Tipe | Maks | Unit |
Resolusi | 10 | bit | ||||
Akurasi absolut (Kalebu kesalahan INL, DNL, lan Quantization, Gain lan Offset) | VREF = 4V, VCC = 4V,
Jam ADC = 200 kHz |
2 | LSB | |||
VREF = 4V, VCC = 4V,
Jam ADC = 1 MHz |
3 | LSB | ||||
VREF = 4V, VCC = 4V,
Jam ADC = 200 kHz Mode Ngurangi Kebisingan |
1.5 | LSB | ||||
VREF = 4V, VCC = 4V,
Jam ADC = 1 MHz Mode Ngurangi Kebisingan |
2.5 | LSB | ||||
Non-linearity integral (INL) (Akurasi sawise nutup kerugian lan entuk kalibrasi) | VREF = 4V, VCC = 4V,
Jam ADC = 200 kHz |
1 | LSB | |||
Ora linearitas (DNL) sing beda | VREF = 4V, VCC = 4V,
Jam ADC = 200 kHz |
0.5 | LSB | |||
Entuk Kesalahan | VREF = 4V, VCC = 4V,
Jam ADC = 200 kHz |
2.5 | LSB | |||
Kesalahan Offset | VREF = 4V, VCC = 4V,
Jam ADC = 200 kHz |
1.5 | LSB | |||
Wektu Konversi | Konversi Mlaku Gratis | 14 | 280 | s | ||
Frekuensi Jam | 50 | 1000 | kHz | |||
VIN | Vol inputtage | GND | VREF | V | ||
Bandwidth Input | 38.4 | kHz | ||||
AREF | Referensi Eksternal Voltage | 2.0 | VCC | V | ||
VINT | Internal Voltage Referensi | 1.0 | 1.1 | 1.2 | V | |
Referensi 2.56V Internal (1) | VCC > 3.0V | 2.3 | 2.56 | 2.8 | V | |
RREF | 32 | k | ||||
UJIAN | Resistensi Input Analog | 100 | MΩ | |||
Output ADC | 0 | 1023 | LSB |
Cathetan: 1. Nilai mung minangka pedoman.
Tabel 21-9. Karakteristik ADC, Saluran Diferensial (Mode Unipolar). TA = -40°C nganti +85°C
Simbol | Paramèter | kahanan | Min | Tipe | Maks | Unit |
Resolusi | Entuk = 1x | 10 | bit | |||
Entuk = 20x | 10 | bit | ||||
Akurasi mutlak (Kalebu INL, DNL, lan
Quantization, Gain lan Kesalahan Offset) |
Entuk = 1x
VREF = 4V, VCC = 5V Jam ADC = 50 - 200 kHz |
10.0 | LSB | |||
Entuk = 20x
VREF = 4V, VCC = 5V Jam ADC = 50 - 200 kHz |
20.0 | LSB | ||||
Non-Linearity (INL) integral (Akurasi sawise Offset lan Kalibrasi Gain) | Entuk = 1x
VREF = 4V, VCC = 5V Jam ADC = 50 - 200 kHz |
4.0 | LSB | |||
Entuk = 20x
VREF = 4V, VCC = 5V Jam ADC = 50 - 200 kHz |
10.0 | LSB | ||||
Entuk Kesalahan | Entuk = 1x | 10.0 | LSB | |||
Entuk = 20x | 15.0 | LSB | ||||
Kesalahan Offset | Entuk = 1x
VREF = 4V, VCC = 5V Jam ADC = 50 - 200 kHz |
3.0 | LSB | |||
Entuk = 20x
VREF = 4V, VCC = 5V Jam ADC = 50 - 200 kHz |
4.0 | LSB | ||||
Wektu Konversi | Konversi Mlaku Gratis | 70 | 280 | s | ||
Frekuensi Jam | 50 | 200 | kHz | |||
VIN | Vol inputtage | GND | VCC | V | ||
VDIFF | Input Diferensial Voltage | VREF / Gain | V | |||
Bandwidth Input | 4 | kHz | ||||
AREF | Referensi Eksternal Voltage | 2.0 | VCC - 1.0 | V | ||
VINT | Internal Voltage Referensi | 1.0 | 1.1 | 1.2 | V | |
Referensi 2.56V Internal (1) | VCC > 3.0V | 2.3 | 2.56 | 2.8 | V | |
RREF | Resistansi Input Referensi | 32 | k | |||
UJIAN | Resistensi Input Analog | 100 | MΩ | |||
Output Konversi ADC | 0 | 1023 | LSB |
Cathetan: Nilai mung minangka pedoman.
Tabel 21-10. Karakteristik ADC, Saluran Diferensial (Mode Bipolar). TA = -40°C nganti +85°C
Simbol | Paramèter | kahanan | Min | Tipe | Maks | Unit |
Resolusi | Entuk = 1x | 10 | bit | |||
Entuk = 20x | 10 | bit | ||||
Akurasi mutlak (Kalebu INL, DNL, lan
Quantization, Gain lan Kesalahan Offset) |
Entuk = 1x
VREF = 4V, VCC = 5V Jam ADC = 50 - 200 kHz |
8.0 | LSB | |||
Entuk = 20x
VREF = 4V, VCC = 5V Jam ADC = 50 - 200 kHz |
8.0 | LSB | ||||
Non-Linearity (INL) integral (Akurasi sawise Offset lan Kalibrasi Gain) | Entuk = 1x
VREF = 4V, VCC = 5V Jam ADC = 50 - 200 kHz |
4.0 | LSB | |||
Entuk = 20x
VREF = 4V, VCC = 5V Jam ADC = 50 - 200 kHz |
5.0 | LSB | ||||
Entuk Kesalahan | Entuk = 1x | 4.0 | LSB | |||
Entuk = 20x | 5.0 | LSB | ||||
Kesalahan Offset | Entuk = 1x
VREF = 4V, VCC = 5V Jam ADC = 50 - 200 kHz |
3.0 | LSB | |||
Entuk = 20x
VREF = 4V, VCC = 5V Jam ADC = 50 - 200 kHz |
4.0 | LSB | ||||
Wektu Konversi | Konversi Mlaku Gratis | 70 | 280 | s | ||
Frekuensi Jam | 50 | 200 | kHz | |||
VIN | Vol inputtage | GND | VCC | V | ||
VDIFF | Input Diferensial Voltage | VREF / Gain | V | |||
Bandwidth Input | 4 | kHz | ||||
AREF | Referensi Eksternal Voltage | 2.0 | VCC - 1.0 | V | ||
VINT | Internal Voltage Referensi | 1.0 | 1.1 | 1.2 | V | |
Referensi 2.56V Internal (1) | VCC > 3.0V | 2.3 | 2.56 | 2.8 | V | |
RREF | Resistansi Input Referensi | 32 | k | |||
UJIAN | Resistensi Input Analog | 100 | MΩ | |||
Output Konversi ADC | -512 | 511 | LSB |
Ringkesan Instruksi Set
Mnemonics | Operasi | Katrangan | Operasi | Gendéra | # Jam |
INSTRUKSI ARITMETIK LAN LOGIK | |||||
ADD | Rd, Rr | Tambah loro Ndhaptar | Rd ← Rd + Rr | Z, C, N, V, H | 1 |
ADC | Rd, Rr | Tambahake karo Mbeta loro Dhaptar | Rd ← Rd + Rr + C | Z, C, N, V, H | 1 |
ADIW | Rdl, K | Tambah Langsung menyang Tembung | Rdh:Rdl ← Rdh:Rdl + K | Z, C, N, V, S | 2 |
SUB | Rd, Rr | Kurangi loro Registrasi | Rd ← Rd – Rr | Z, C, N, V, H | 1 |
AKU TINGGAL | Rd, K | Kurangi Constant saka Ndhaptar | Rd ← Rd – K | Z, C, N, V, H | 1 |
SBC | Rd, Rr | Nyuda karo Mbeta loro Registrasi | Rd ← Rd – Rr – C | Z, C, N, V, H | 1 |
SBCI | Rd, K | Kurangi karo Carry Constant saka Reg. | Rd ← Rd – K – C | Z, C, N, V, H | 1 |
SBIW | Rdl, K | Kurangi Langsung saka Tembung | Rdh:Rdl ← Rdh:Rdl – K | Z, C, N, V, S | 2 |
LAN | Rd, Rr | Logis LAN Ndhaptar | Rd ← Rd ∙ Rr | Z, N, V | 1 |
ANDI | Rd, K | Logis Lan Ndhaptar lan Konstan | Rd ← Rd ∙ K | Z, N, V | 1 |
OR | Rd, Rr | Logis UTAWA Ndhaptar | Rd ← Rd v Rr | Z, N, V | 1 |
ORI | Rd, K | Logis UTAWA Ndhaptar lan Konstan | Rd ← Rd v K | Z, N, V | 1 |
EOR | Rd, Rr | Ndhaptar Eksklusif UTAWA | Rd ← Rd ⊕ Rr | Z, N, V | 1 |
COM | Rd | Siji Komplementer | Rd ← 0xFF − Rd | Z, C, N, V | 1 |
NEG | Rd | Komplemen Loro | Rd ← 0x00 − Rd | Z, C, N, V, H | 1 |
SBR | Rd, K | Setel Bit ing Dhaptar | Rd ← Rd v K | Z, N, V | 1 |
CBR | Rd, K | Mbusak Bit ing Dhaptar | Rd ← Rd ∙ (0xFF – K) | Z, N, V | 1 |
INC | Rd | Tambah | Rd ← Rd + 1 | Z, N, V | 1 |
DEC | Rd | Penurunan | Rd ← Rd − 1 | Z, N, V | 1 |
TST | Rd | Tes kanggo Nol utawa Minus | Rd ← Rd ∙ Rd | Z, N, V | 1 |
CLR | Rd | Mbusak Dhaptar | Rd ← Rd ⊕ Rd | Z, N, V | 1 |
SER | Rd | Set Ndhaptar | Rd ← 0xFF | ora ana | 1 |
PITUTUR Cabang | |||||
RJMP | k | Langsung Relatif | PC ← PC + k + 1 | ora ana | 2 |
IJMP | Langsung Langsung menyang (Z) | PC ← Z | ora ana | 2 | |
RCALL | k | Telpon Subroutine Relatif | PC ← PC + k + 1 | ora ana | 3 |
CALL | Telpon ora langsung menyang (Z) | PC ← Z | ora ana | 3 | |
RET | Bali Bali | PC ← STACK | ora ana | 4 | |
RETI | Ganggu Bali | PC ← STACK | I | 4 | |
CPSE | Rd, Rr | Bandingake, Langsung yen padha | yen (Rd = Rr) PC ← PC + 2 utawa 3 | ora ana | 1/2/3 |
CP | Rd, Rr | Mbandhingake | Rd − Rr | Z, N, V, C, H | 1 |
BPK | Rd, Rr | Bandingake karo Carry | Rd − Rr − C | Z, N, V, C, H | 1 |
CPI | Rd, K | Bandingake Ndhaptar karo Langsung | Rd − K | Z, N, V, C, H | 1 |
SBRC | Rr, b | Liwati yen Bit ing Daftar Mbusak | yen (Rr(b)=0) PC ← PC + 2 utawa 3 | ora ana | 1/2/3 |
SBRS | Rr, b | Liwati yen Bit in Register wis disetel | yen (Rr(b)=1) PC ← PC + 2 utawa 3 | ora ana | 1/2/3 |
SBIC | P, b | Liwati yen Bit ing Daftar I / O Dihapus | yen (P(b)=0) PC ← PC + 2 utawa 3 | ora ana | 1/2/3 |
SBIS | P, b | Liwati yen Dhaptar Bit / I wis disetel | yen (P(b)=1) PC ← PC + 2 utawa 3 | ora ana | 1/2/3 |
BRBS | s, k | Cabang yen Setelan Bendera Panji | yen (SREG(s) = 1) banjur PC←PC+k + 1 | ora ana | 1/2 |
BRBC | s, k | Cabang yen Tandha Status Dibersihake | yen (SREG(s) = 0) banjur PC←PC+k + 1 | ora ana | 1/2 |
BREQ | k | Cabang yen Podo | yen (Z = 1) banjur PC ← PC + k + 1 | ora ana | 1/2 |
BRNE | k | Cabang yen Ora Podo | yen (Z = 0) banjur PC ← PC + k + 1 | ora ana | 1/2 |
BRCS | k | Cabang yen Nggawa Set | yen (C = 1) banjur PC ← PC + k + 1 | ora ana | 1/2 |
BRCC | k | Cabang yen Digawa Dibersih | yen (C = 0) banjur PC ← PC + k + 1 | ora ana | 1/2 |
BRSH | k | Cabang yen padha utawa luwih dhuwur | yen (C = 0) banjur PC ← PC + k + 1 | ora ana | 1/2 |
BRLO | k | Cabang yen ngisor | yen (C = 1) banjur PC ← PC + k + 1 | ora ana | 1/2 |
BRMI | k | Cabang yen Minus | yen (N = 1) banjur PC ← PC + k + 1 | ora ana | 1/2 |
BRPL | k | Cabang yen Ditambah | yen (N = 0) banjur PC ← PC + k + 1 | ora ana | 1/2 |
BRGE | k | Cabang yen Gedhe utawa padha, Tandha | yen (N ⊕ V= 0) banjur PC ← PC + k + 1 | ora ana | 1/2 |
BRLT | k | Cabang yen Kurang Saka Nol, Ditandatangani | yen (N ⊕ V= 1) banjur PC ← PC + k + 1 | ora ana | 1/2 |
BRHS | k | Cabang yen Setengah Gendéra Tandha Set | yen (H = 1) banjur PC ← PC + k + 1 | ora ana | 1/2 |
BRHC | k | Cabang yen Gendera Setengah Mbawa | yen (H = 0) banjur PC ← PC + k + 1 | ora ana | 1/2 |
BRTS | k | Cabang yen T Flag Set | yen (T = 1) banjur PC ← PC + k + 1 | ora ana | 1/2 |
BRTC | k | Cabang yen T Tandha Dibersih | yen (T = 0) banjur PC ← PC + k + 1 | ora ana | 1/2 |
BRVS | k | Cabang yen Overflow Flag wis disetel | yen (V = 1) banjur PC ← PC + k + 1 | ora ana | 1/2 |
BRVC | k | Cabang yen Flag Overflow Dibersihake | yen (V = 0) banjur PC ← PC + k + 1 | ora ana | 1/2 |
SENGKAP | k | Cabang yen Ganggu Diaktifake | yen (I = 1) banjur PC ← PC + k + 1 | ora ana | 1/2 |
BRID | k | Cabang yen Ngganggu Dipatèni | yen (I = 0) banjur PC ← PC + k + 1 | ora ana | 1/2 |
ING TITIK BIT lan TITIK | |||||
SBI | P, b | Setel Bit ing Daftar I / O | I/O(P,b) ← 1 | ora ana | 2 |
CBI | P, b | Clear Bit ing I / O Register | I/O(P,b) ← 0 | ora ana | 2 |
LSL | Rd | Shift Logis Ngiwa | Rd(n+1) ← Rd(n), Rd(0) ← 0 | Z, C, N, V | 1 |
LSR | Rd | Logis Shift Kanan | Rd(n) ← Rd(n+1), Rd(7) ← 0 | Z, C, N, V | 1 |
peran | Rd | Puter Ngiwa Liwat nggawa | Rd(0)←C,Rd(n+1)← Rd(n),C←Rd(7) | Z, C, N, V | 1 |
ROR | Rd | Puter nengen Liwat nggawa | Rd(7)←C,Rd(n)← Rd(n+1),C←Rd(0) | Z, C, N, V | 1 |
ASR | Rd | Nggeser Aritmatika Kanan | Rd(n) ← Rd(n+1), n=0..6 | Z, C, N, V | 1 |
Mnemonics | Operasi | Katrangan | Operasi | Gendéra | # Jam |
SWAP | Rd | Tukar Nibles | Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) | ora ana | 1 |
BSET | s | Gendéra Set | SREG(s) ← 1 | SREG | 1 |
BCLR | s | Tandha Clear | SREG(s) ← 0 | SREG | 1 |
BST | Rr, b | Toko Bit saka Ndhaptar menyang T | T ← Rr(b) | T | 1 |
BLD | Rd, b | Munggah bit saka T kanggo Ndhaptar | Rd(b) ← T | ora ana | 1 |
SEK | Setel Nggawa | C ← 1 | C | 1 | |
CLC | Mbusak Mbukak | C ← 0 | C | 1 | |
SEN | Setel Bendera Negatif | N ← 1 | N | 1 | |
CLN | Gendera Negatif sing Cetha | N ← 0 | N | 1 | |
SEZ | Setel Panji Zero | Z ← 1 | Z | 1 | |
CLZ | Hapus Gendera Nol | Z ← 0 | Z | 1 | |
SEI | Global Interrupt Aktifake | Aku ← 1 | I | 1 | |
CLI | Gangguan Global Pateni | Aku ← 0 | I | 1 | |
SES | Setel Tandha Uji Tandha | S ← 1 | S | 1 | |
CLS | Hapus Tandha Uji Tandha | S ← 0 | S | 1 | |
SEV | Setel Liwat Liwat Twos. | V ← 1 | V | 1 | |
CLV | Clear Twos Komplement Overflow | V ← 0 | V | 1 | |
SET | Setel T ing SREG | T ← 1 | T | 1 | |
CLT | Mbusak T ing SREG | T ← 0 | T | 1 | |
Seh | Setel Tandha Setengah, ing SREG | H ← 1 | H | 1 | |
CLH | Mbusak Setengah Mbawa Bendera ing SREG | H ← 0 | H | 1 | |
INSTRUKSI TRANSFER DATA | |||||
MOV | Rd, Rr | Pindhah Antarane Registrasi | Rd ← Rr | ora ana | 1 |
Pindhah | Rd, Rr | Salin Tembung Dhaptar | Rd+1:Rd ← Rr+1:Rr | ora ana | 1 |
LDI | Rd, K | Muat Langsung | Rd ← K | ora ana | 1 |
LD | Rd, X | Muat Ora Langsung | Rd ← (X) | ora ana | 2 |
LD | Rd, X + | Muat Ora Langsung lan Pasca-Inc. | Rd ← (X), X ← X + 1 | ora ana | 2 |
LD | Rd, - X | Muat Ora Langsung lan Pra-Des. | X ← X – 1, Rd ← (X) | ora ana | 2 |
LD | Rd, Y | Muat Ora Langsung | Rd ← (Y) | ora ana | 2 |
LD | Rd, Y + | Muat Ora Langsung lan Pasca-Inc. | Rd ← (Y), Y ← Y + 1 | ora ana | 2 |
LD | Rd, - Y | Muat Ora Langsung lan Pra-Des. | Y ← Y – 1, Rd ← (Y) | ora ana | 2 |
LDD | Rd, Y + q | Muat Ora Langsung karo Dipindhah | Rd ← (Y + q) | ora ana | 2 |
LD | Rd, Z | Muat Ora Langsung | Rd ← (Z) | ora ana | 2 |
LD | Rd, Z + | Muat Ora Langsung lan Pasca-Inc. | Rd ← (Z), Z ← Z+1 | ora ana | 2 |
LD | Rd, -Z | Muat Ora Langsung lan Pra-Des. | Z ← Z – 1, Rd ← (Z) | ora ana | 2 |
LDD | Rd, Z + q | Muat Ora Langsung karo Dipindhah | Rd ← (Z + q) | ora ana | 2 |
LDS | Rd, k | Muat Langsung saka SRAM | Rd ← (k) | ora ana | 2 |
ST | X, Rr | Toko Ora Langsung | (X) ← Rr | ora ana | 2 |
ST | X +, Rr | Toko Ora Langsung lan Pasang-Inc. | (X) ← Rr, X ← X + 1 | ora ana | 2 |
ST | - X, Rr | Simpen Ora Langsung lan Pra-Des. | X ← X – 1, (X) ← Rr | ora ana | 2 |
ST | Y, Rr | Toko Ora Langsung | (Y) ← Rr | ora ana | 2 |
ST | Y +, Pak | Toko Ora Langsung lan Pasang-Inc. | (Y) ← Rr, Y ← Y + 1 | ora ana | 2 |
ST | - Y, Rr | Simpen Ora Langsung lan Pra-Des. | Y ← Y – 1, (Y) ← Rr | ora ana | 2 |
STD | Y + q, Rr | Simpen Ora Langsung karo Kapindahan | (Y + q) ← Rr | ora ana | 2 |
ST | Z, Rr | Toko Ora Langsung | (Z) ← Rr | ora ana | 2 |
ST | Z +, Rr | Toko Ora Langsung lan Pasang-Inc. | (Z) ← Rr, Z ← Z + 1 | ora ana | 2 |
ST | -Z, Rr | Simpen Ora Langsung lan Pra-Des. | Z ← Z – 1, (Z) ← Rr | ora ana | 2 |
STD | Z + q, Rr | Simpen Ora Langsung karo Kapindahan | (Z + q) ← Rr | ora ana | 2 |
STS | k, Rr | Simpen Langsung menyang SRAM | (k) ← Rr | ora ana | 2 |
LPM | Memori Program Muat | R0 ← (Z) | ora ana | 3 | |
LPM | Rd, Z | Memori Program Muat | Rd ← (Z) | ora ana | 3 |
LPM | Rd, Z + | Memori Program Beban lan Pasca-Inc. | Rd ← (Z), Z ← Z+1 | ora ana | 3 |
SPM | Memori Program Toko | (z) ← R1:R0 | ora ana | ||
IN | Rd, P | Ing Pelabuhan | Rd ← P | ora ana | 1 |
OUT | P, Rr | Metu Pelabuhan | P ← Rr | ora ana | 1 |
PUSH | Rr | Push Ndhaptar ing Stack | Tumpukan ← Rr | ora ana | 2 |
POP | Rd | Pop Ndhaptar saka Stack | Rd ← STACK | ora ana | 2 |
PETUNJUK KONTROL MCU | |||||
NOP | Ora Operasi | ora ana | 1 | ||
TURU | Turu | (deleng deskripsi khusus kanggo fungsi Turu) | ora ana | 1 | |
WDR | Watchdog Reset | (deleng deskripsi khusus kanggo WDR / Timer) | ora ana | 1 | |
BREAK | Break |
Kacepetan (MHz) (1) | Pasokan Voltage (V) | Range Suhu | Paket (2) | Kode Order (3) |
10 | 1.8 – 5.5 | Industri
(-40 ° C kanggo 85 ° C) (4) |
8P3 | ATtiny 45V-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 | Industri
(-40 ° C kanggo 85 ° C) (4) |
8P3 | ATtiny45-20PU |
8S2 | ATtiny45-20SU ATtiny45-20SUR
ATtiny45-20SH ATtiny45-20SHR |
|||
8X | ATtiny45-20XU ATtiny45-20XUR | |||
20M1 | ATtiny45-20MU ATtiny45-20MUR |
Cathetan: 1. Kanggo kacepetan vs. suplai voltage, deleng bagean 21.3 "Kacepetan" ing kaca 163.
Kabeh paket bebas Pb, bebas halida lan ijo kabeh lan padha tundhuk karo arahan Eropa kanggo Watesan Bahan-bahan Bahaya (RoHS).
Indikator kode
H: NiPdAu timbal rampung
U: timah matte
R: tape & gulungan
Piranti kasebut uga bisa disedhiyakake kanthi bentuk wafer. Hubungi kantor sales Atmel lokal kanggo informasi lengkap babagan informasi babagan jumlah lan jumlah minimal.
salahe
Errata ATtiny25
Huruf revisi ing bagean iki nuduhake revisi piranti ATtiny25.
Rev D - F
Ora ana errata sing dingerteni.
Rev B - C
EEPROM sing diwaca bisa uga gagal kanthi jumlah pasokan sing kurangtage / frekuensi jam kurang
EEPROM sing diwaca bisa uga gagal kanthi jumlah pasokan sing kurangtage / frekuensi jam kurang
Nyoba maca EEPROM kanthi frekuensi jam kurang lan / utawa volume pasokan kurangtage bisa nyebabake data sing ora valid.
Ndandani Masalah / Ngatasi Masalah
Aja nggunakake EEPROM nalika frekuensi jam ngisor 1MHz lan volume suplaitage ngisor 2V. Yen frekuensi operasi ora bisa diunggahake ing ndhuwur 1MHz, mula pasokan volumetage kudu luwih saka 2V. Kajaba, yen pasokan voltage ora bisa diangkat ing ndhuwur 2V banjur frekuensi operasi kudu luwih saka 1MHz.
Fitur iki dikenal gumantung karo suhu nanging durung bisa ditondoi. Pandhuan diwenehake mung kanggo suhu ruangan.
Rev A
Dudu sampdipimpin
Errata ATtiny45
Huruf revisi ing bagean iki nuduhake revisi piranti ATtiny45.
Rev F - G
Ora ana errata sing dingerteni
Rev D - E
EEPROM sing diwaca bisa uga gagal kanthi jumlah pasokan sing kurangtage / frekuensi jam kurang
EEPROM sing diwaca bisa uga gagal kanthi jumlah pasokan sing kurangtage / frekuensi jam kurang
Nyoba maca EEPROM kanthi frekuensi jam kurang lan / utawa volume pasokan kurangtage bisa nyebabake data sing ora valid.
Ndandani Masalah / Ngatasi Masalah
Aja nggunakake EEPROM nalika frekuensi jam ngisor 1MHz lan volume suplaitage ngisor 2V. Yen frekuensi operasi ora bisa diunggahake ing ndhuwur 1MHz, mula pasokan volumetage kudu luwih saka 2V. Kajaba, yen pasokan voltage ora bisa diangkat ing ndhuwur 2V banjur frekuensi operasi kudu luwih saka 1MHz.
Fitur iki dikenal gumantung karo suhu nanging durung bisa ditondoi. Pandhuan diwenehake mung kanggo suhu ruangan.
Rev B - C
PLL ora ngunci
EEPROM sing diwaca saka kode aplikasi ora bisa digunakake ing Lock Bit Mode 3
EEPROM sing diwaca bisa uga gagal kanthi jumlah pasokan sing kurangtage / frekuensi jam kurang
Timer Counter 1 PWM output output ing OC1B- XOC1B ora bisa digunakake kanthi bener
PLL ora ngunci
Yen frekuensi ing ngisor 6.0 MHz, PLL ora bakal dikunci
Ndandani masalah / Ngatasi masalah
Nalika nggunakake PLL, mbukak 6.0 MHz utawa luwih dhuwur.
EEPROM sing diwaca saka kode aplikasi ora bisa digunakake ing Lock Bit Mode 3
Nalika Memory Lock Bits LB2 lan LB1 diprogram menyang mode 3, maca EEPROM ora bisa digunakake saka kode aplikasi.
Masalah Ndandani / Bisa
Aja nyetel Lock Bit Protection Mode 3 nalika kode aplikasi kudu diwaca saka EEPROM.
EEPROM sing diwaca bisa uga gagal kanthi jumlah pasokan sing kurangtage / frekuensi jam kurang
Nyoba maca EEPROM kanthi frekuensi jam kurang lan / utawa volume pasokan kurangtage bisa nyebabake data sing ora valid.
Ndandani Masalah / Ngatasi Masalah
Aja nggunakake EEPROM nalika frekuensi jam ngisor 1MHz lan volume suplaitage ngisor 2V. Yen frekuensi operasi ora bisa diunggahake ing ndhuwur 1MHz, mula pasokan volumetage kudu luwih saka 2V. Kajaba, yen pasokan voltage ora bisa diangkat ing ndhuwur 2V banjur frekuensi operasi kudu luwih saka 1MHz.
Fitur iki dikenal gumantung karo suhu nanging durung bisa ditondoi. Pandhuan diwenehake mung kanggo suhu ruangan.
Timer Counter 1 PWM output output ing OC1B - XOC1B ora bisa digunakake kanthi bener
Timer Counter1 PWM output OC1B-XOC1B ora bisa digunakake kanthi bener. Mung yen bit kontrol, COM1B1 lan COM1B0 ana ing mode sing padha karo COM1A1 lan COM1A0, output OC1B-XOC1B bisa digunakake kanthi bener.
Masalah Ndandani / Bisa
Siji-sijine solusi yaiku nggunakake setelan kontrol sing padha ing bit kontrol COM1A [1: 0] lan COM1B [1: 0], deleng tabel 14- 4 ing lembar data. Masalah kasebut wis diatasi kanggo Tiny45 rev D.
Rev A
Konsumsi daya listrik mudhun banget
DebugWIRE ngeculake komunikasi nalika ana siji sing ngganggu
PLL ora ngunci
EEPROM sing diwaca saka kode aplikasi ora bisa digunakake ing Lock Bit Mode 3
EEPROM sing diwaca bisa uga gagal kanthi jumlah pasokan sing kurangtage / frekuensi jam kurang
Konsumsi daya listrik mudhun banget
Telung kahanan bakal nyebabake konsumsi daya mudhun banget. Iki yaiku:
Jam eksternal dipilih kanthi sekring, nanging PORT I / O isih diaktifake minangka output.
EEPROM diwaca sadurunge mati mudhun.
VCC 4.5 volt utawa luwih dhuwur.
Penafian: Informasi ing dokumen iki diwenehake gegayutan karo produk Atmel. Ora ana lisensi, nyata utawa diwenehake, kanthi estoppel utawa liya-liyane, kanggo hak properti intelektual apa wae sing diwenehake dening dokumen iki utawa gegayutan karo adol produk Atmel. Kajaba sing wis kasebut ing ATMEL SYARAT-SYARAT lan KETENTUAN SALES sing ana ing ATMEL. WEBSITUS, ATMEL NO TANGGUNG JAWAB APA-APA lan DISCLAIMS ANY EXPRESS, GRATIS UTAWA JAMINAN STATUTORY RELATING TO PRODUK-PRODUK KANGGO, Nanging ora winates kanggo, JAMINAN sing diwenehake saka MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSEIN,. ATMEL ORA TANGGUNG JAWAB ATAS KERUSAKAN LANGSUNG, LANGSUNG, LANGSUNG, KONSEKUENSIAL, PUNITIF, KHUSUS UTAWA INSIDENTAL (kalebu, TANPA WATASAN, RUSAK KERUGIAN LAN BAGI, GANGGUAN BISNIS, UTAWA KEHILANGAN INFORMASI PENGGUNAAN) DOKUMEN IKI, sanajan ATMEL wis diwènèhi pitutur bab kamungkinan saka karusakan kuwi.
Atmel ora menehi perwakilan utawa garansi babagan akurasi utawa kelengkapan isi dokumen iki lan duwe hak kanggo ngganti spesifikasi lan deskripsi produk kapan wae tanpa kabar. Atmel ora nggawe prasetya kanggo nganyari informasi sing ana ing kene. Kajaba khusus diwenehake, produk Atmel ora cocok kanggo, lan ora bakal digunakake ing, aplikasi otomotif. Produk Atmel ora dimaksudake, sah, utawa dijamin digunakake minangka komponen ing aplikasi sing dimaksudake kanggo ndhukung utawa nylametake urip.