Atmel 8-bit AVR Microcontroller dengan 2/4/8K Bytes In-System Programmable Flash
Ciri-ciri
- Prestasi Tinggi, Pengawal Mikro AVR® 8-Bit Kuasa Rendah
- Senibina RISC yang maju
- 120 Arahan Kuat - Pelaksanaan Kitaran Jam Paling Banyak
- 32 x 8 Daftar Kerja Tujuan Umum
- Operasi Statik Sepenuhnya
- Program dan Kenangan Data yang tidak menentu
- 2/4 / 8K Byte Flash Memory Program yang Dapat Diprogramkan Dalam Sistem
- Ketahanan: 10,000 Kitaran Tulis/Padam
- 128/256/512 Byte Dalam Sistem EEPROM yang Boleh Diprogramkan
- Ketahanan: 100,000 Kitaran Tulis/Padam
- 128/256/512 SRAM Dalaman Byte
- Kunci Pengaturcaraan untuk Program Flash Pengaturcaraan Sendiri dan Keselamatan Data EEPROM
Ciri-ciri Periferal
- Pemasa / Kaunter 8-bit dengan Prescaler dan Dua Saluran PWM
- Pemasa / Kaunter Berkelajuan Tinggi 8-bit dengan Pemisah Berasingan
- 2 Output PWM Frekuensi Tinggi dengan Daftar Perbandingan Output Berasingan
- Penjana Masa Mati yang boleh diprogramkan
- USI - Antaramuka Bersiri Sejagat dengan Pengesan Keadaan Mula
- ADC 10-bit
4 Saluran Berakhir Tunggal
2 Pasangan Saluran ADC Berbeza dengan Keuntungan yang Dapat Diprogramkan (1x, 20x)
Pengukuran Suhu
Pemasa Pengawas yang Boleh Diprogramkan dengan Pengayun On-chip Berasingan
Pembanding Analog On-chip
Keistimewaan Mikrokontroler Khas
debugWIRE Sistem Debug cip
Dalam Sistem Boleh Diprogramkan melalui SPI Port
Sumber Gangguan Luaran dan Dalaman
Idle Daya Rendah, Pengurangan Kebisingan ADC, dan Mod Power-down
Litar Reset Kuasa Hidup yang dipertingkatkan
Litar Pengesanan Brown-out yang boleh diprogramkan
Pengayun Dikalibrasi Dalaman
I / O dan Pakej
Enam Garis I / O yang Dapat Diprogramkan
PDIP 8-pin, SOIC 8-pin, QFN / MLF 20-pad, dan TSSOP 8-pin (hanya ATtiny45 / V)
Vol Operasitage
- 1.8 - 5.5V untuk ATtiny25V / 45V / 85V
- 2.7 - 5.5V untuk ATtiny25 / 45/85
Gred Kelajuan
- 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
Julat Suhu Industri
Penggunaan Kuasa Rendah
Mod Aktif:
1 MHz, 1.8V: 300 µA
Mod Kuasa Mati:
Konfigurasi Pin
Pinout ATtiny25 / 45/85
Pin Perihalan
VCC: Bekalan voltage.
GND: Tanah.
Port B (PB5:PB0): Port B ialah port I/O dwiarah 6-bit dengan perintang tarik-ke atas dalaman (dipilih untuk setiap bit). Penampan keluaran Port B mempunyai ciri pemacu simetri dengan kedua-dua sinki tinggi dan keupayaan sumber. Sebagai input, pin Port B yang ditarik secara luaran rendah akan menghasilkan arus jika perintang tarik-ke atas diaktifkan. Pin Port B dinyatakan tiga kali apabila keadaan set semula menjadi aktif, walaupun jam tidak berjalan.
Port B juga melayani fungsi pelbagai ciri khas ATtiny25 / 45/85 seperti yang disenaraikan
Pada ATtiny25, port I / O PB3 dan PB4 yang dapat diprogram (pin 2 dan 3) ditukar dalam Mod Keserasian ATtiny15 untuk menyokong keserasian ke belakang dengan ATtiny15.
TETAP SEMULA: Tetapkan semula input. Tahap rendah pada pin ini lebih lama daripada panjang nadi minimum akan menghasilkan tetapan semula, walaupun jam tidak berjalan dan dengan syarat pin tetapan semula tidak dilumpuhkan. Panjang nadi minimum diberikan dalam Jadual 21-4 di muka surat 165. Denyutan yang lebih pendek tidak dijamin menghasilkan tetapan semula.
Pin reset juga boleh digunakan sebagai pin I / O (lemah).
Berakhirview
ATtiny25 / 45/85 adalah mikrokontroler CMOS 8-bit berkuasa rendah berdasarkan seni bina RISC yang dipertingkatkan AVR. Dengan melaksanakan arahan yang kuat dalam satu pusingan jam, ATtiny25 / 45/85 mencapai throughput yang mendekati 1 MIPS per MHz yang membolehkan pereka sistem mengoptimumkan penggunaan kuasa berbanding kelajuan pemprosesan.
Gambarajah blok
Inti AVR menggabungkan set arahan kaya dengan 32 daftar kerja tujuan umum. Semua 32 register dihubungkan secara langsung ke Arithmetic Logic Unit (ALU), yang membolehkan dua register bebas diakses dalam satu arahan tunggal yang dilaksanakan dalam satu pusingan jam. Senibina yang dihasilkan lebih cekap kod sambil mencapai throughput hingga sepuluh kali lebih pantas daripada mikrokontroler CISC konvensional.
ATtiny25 / 45/85 menyediakan ciri-ciri berikut: 2/4 / 8K bait Flash Dalam Program yang Boleh Diprogramkan, 128/256/512 bait EEPROM, 128/256/256 bait SRAM, 6 baris I / O tujuan umum, 32 umum register kerja tujuan, satu Pemasa / Kaunter 8-bit dengan mod perbandingan, satu Pemasa / Kaunter berkelajuan tinggi 8-bit, Antara Muka Serial Universal, Gangguan Dalaman dan Luaran, 4-saluran, ADC 10-bit, Pemasa Pengawas yang boleh diprogram dengan Oscillator, dan tiga mod penjimatan kuasa yang boleh dipilih perisian. Mod idle menghentikan CPU sambil membiarkan sistem SRAM, Timer / Counter, ADC, Analog Comparator, dan Interrupt terus berfungsi. Mod power-down menyimpan kandungan register, melumpuhkan semua fungsi cip sehingga Interrupt atau Hardware Reset seterusnya. Mod Pengurangan Kebisingan ADC menghentikan CPU dan semua modul I / O kecuali ADC, untuk meminimumkan kebisingan beralih semasa penukaran ADC.
Peranti ini dihasilkan menggunakan teknologi memori tidak mudah ubah berketumpatan Atmel. Flash On-chip ISP membolehkan memori Program diprogramkan semula dalam Sistem melalui antara muka bersiri SPI, oleh programmer memori tidak mudah ubah konvensional atau oleh kod boot On-chip yang berjalan di teras AVR.
ATtiny25 / 45/85 AVR disokong dengan rangkaian lengkap program dan alat pembangunan sistem termasuk: C Kompilator, Makro Assemblers, Program Debugger / Simulator dan kit Penilaian.
Mengenai Sumber
Satu set alat pembangunan, nota aplikasi dan lembaran data yang komprehensif tersedia untuk dimuat turun di http://www.atmel.com/avr.
Kod Cthamples
Dokumentasi ini mengandungi kod ringkas sepertiamples yang secara ringkas menunjukkan cara menggunakan pelbagai bahagian peranti. Contoh kod iniamples menganggap bahawa tajuk khusus bahagian file disertakan sebelum penyusunan. Ketahuilah bahawa tidak semua vendor penyusun C menyertakan definisi bit dalam tajuk files dan pengendalian gangguan dalam C bergantung kepada penyusun. Sila sahkan dengan dokumentasi penyusun C untuk maklumat lebih lanjut.
Untuk arahan I / O yang terletak di peta I / O yang diperluas, arahan "IN", "OUT", "SBIS", "SBIC", "CBI", dan "SBI" mesti diganti dengan arahan yang membolehkan akses ke I diperpanjang / O. Biasanya, ini berarti "LDS" dan "STS" digabungkan dengan "SBRS", "SBRC", "SBR", dan "CBR". Perhatikan bahawa tidak semua peranti AVR menyertakan peta I / O yang diperluas.
Penderiaan Sentuhan Kapasitif
Perpustakaan Atmel QTouch menyediakan penyelesaian yang mudah digunakan untuk antara muka sensitif sentuhan pada pengawal mikro Atmel AVR. Perpustakaan QTouch termasuk sokongan untuk kaedah pemerolehan QTouch® dan QMatrix®.
Sensing sentuh dengan mudah ditambahkan ke aplikasi apa pun dengan menghubungkan Perpustakaan QTouch dan menggunakan Interface Pemrograman Aplikasi (API) perpustakaan untuk menentukan saluran sentuhan dan sensor. Aplikasi kemudian memanggil API untuk mengambil maklumat saluran dan menentukan keadaan sensor sentuh.
Perpustakaan QTouch adalah percuma dan boleh dimuat turun dari Atmel webtapak. Untuk maklumat lebih lanjut dan perincian pelaksanaan, rujuk Panduan Pengguna Perpustakaan QTouch - juga tersedia dari Atmel webtapak.
Pengekalan Data
Hasil Kelayakan Kebolehpercayaan menunjukkan bahawa kadar kegagalan penyimpanan data yang diproyeksikan jauh lebih rendah daripada 1 PPM selama 20 tahun pada 85 ° C atau 100 tahun pada 25 ° C.
Teras CPU AVR
pengenalan
Bahagian ini membincangkan seni bina teras AVR secara umum. Fungsi utama inti CPU adalah untuk memastikan pelaksanaan program yang betul. Oleh itu, CPU mesti dapat mengakses kenangan, melakukan pengiraan, mengawal periferal, dan menangani gangguan.
Seni bina Lebihview
Untuk memaksimumkan prestasi dan paralelisme, AVR menggunakan seni bina Harvard - dengan memori dan bas yang berasingan untuk program dan data. Arahan dalam memori Program dilaksanakan dengan pipelining satu tahap. Sementara satu arahan sedang dijalankan, instruksi berikutnya diambil dari memori Program. Konsep ini membolehkan arahan dilaksanakan dalam setiap pusingan jam. Memori Program adalah memori Flash yang Boleh Diprogramkan Dalam Sistem.
Daftar akses pantas File mengandungi daftar kerja tujuan umum 32 x 8-bit dengan masa capaian kitaran jam tunggal. Ini membenarkan operasi Unit Logik Aritmetik (ALU) kitaran tunggal. Dalam operasi ALU biasa, dua operan adalah output daripada Daftar File, operasi dijalankan, dan hasilnya disimpan kembali dalam Daftar File- dalam satu pusingan jam.
Enam dari 32 daftar boleh digunakan sebagai tiga penunjuk alamat tidak langsung 16-bit untuk pengalamatan Ruang Data - memungkinkan pengiraan alamat yang cekap. Salah satu penunjuk alamat ini juga dapat digunakan sebagai penunjuk alamat untuk mencari tabel dalam memori Program Flash. Daftar fungsi tambahan ini adalah register X-, Y-, dan Z-bit 16-bit, yang dijelaskan kemudian di bahagian ini.
ALU menyokong operasi aritmetik dan logik antara daftar atau antara pemalar dan daftar. Operasi daftar tunggal juga dapat dilaksanakan di ALU. Selepas operasi aritmetik, Daftar Status dikemas kini untuk menggambarkan maklumat mengenai hasil operasi tersebut.
Aliran program disediakan dengan arahan lompatan dan panggilan bersyarat dan tanpa syarat, yang dapat secara langsung mengatasi keseluruhan ruang alamat. Sebilangan besar arahan AVR mempunyai format kata 16-bit tunggal, tetapi terdapat juga arahan 32-bit.
Semasa gangguan dan panggilan subrutin, Kaunter Program alamat kembali (PC) disimpan di Stack. Stack secara efektif dialokasikan dalam SRAM data umum, dan akibatnya ukuran Stack hanya dibatasi oleh jumlah ukuran SRAM dan penggunaan SRAM. Semua program pengguna mesti menginisialisasi SP dalam rutin Reset (sebelum sub rutin atau gangguan dijalankan). Stack Pointer (SP) dibaca / ditulis diakses di ruang I / O. Data SRAM dapat diakses dengan mudah melalui lima mod pengalamatan yang berbeza yang disokong dalam seni bina AVR.
Ruang memori dalam seni bina AVR adalah peta memori linier dan biasa.
Modul interrupt yang fleksibel mempunyai daftar kawalannya di ruang I / O dengan tambahan Global Interrupt Enable bit dalam Status Status. Semua gangguan mempunyai Vektor Interrupt yang terpisah dalam jadual Interrupt Vector. Interupsi mempunyai keutamaan sesuai dengan kedudukan Vector Interrupt mereka. Semakin rendah alamat Interrupt Vector, semakin tinggi keutamaannya.
Ruang memori I / O mengandungi 64 alamat untuk fungsi periferal CPU seperti Control Registers, SPI, dan fungsi I / O lain. Memori I / O dapat diakses secara langsung, atau sebagai lokasi Ruang Data yang mengikuti lokasi Pendaftar File, 0x20 - 0x5F.
ALU - Unit Logik Aritmetik
AVR ALU berprestasi tinggi beroperasi secara langsung dengan semua 32 daftar kerja tujuan umum. Dalam satu pusingan jam, operasi aritmetik antara daftar tujuan umum atau antara daftar dan yang segera dilaksanakan. Operasi ALU terbahagi kepada tiga kategori utama - aritmetik, logik, dan fungsi bit. Beberapa pelaksanaan seni bina juga memberikan pengganda kuat yang menyokong kedua-dua penggandaan bertanda / tidak bertanda dan format pecahan. Lihat bahagian "Set Petunjuk" untuk keterangan terperinci.
Daftar Status
Status Status mengandungi maklumat mengenai hasil arahan aritmetik yang paling baru dilaksanakan. Maklumat ini dapat digunakan untuk mengubah aliran program untuk melakukan operasi bersyarat. Perhatikan bahawa Daftar Status dikemas kini setelah semua operasi ALU, seperti yang ditentukan dalam Rujukan Set Instruksi. Ini dalam banyak kes akan menghilangkan keperluan untuk menggunakan arahan perbandingan khusus, menghasilkan kod yang lebih cepat dan padat.
Status Status tidak disimpan secara automatik ketika memasuki rutin gangguan dan dipulihkan ketika kembali dari gangguan. Ini mesti dikendalikan oleh perisian.
Daftar Status SREG - AVR
Daftar Status AVR - SREG - ditakrifkan sebagai:
sedikit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3F | I | T | H | S | V | N | Z | C | SREG |
Baca/Tulis | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Nilai Permulaan | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 7 - I: Aktifkan Gangguan Global
Bit Global Interrupt Enable mesti ditetapkan agar gangguan diaktifkan. Pengendalian membolehkan gangguan individu kemudian dilakukan dalam daftar kawalan berasingan. Sekiranya Daftar Interrupt Enable Global dibersihkan, tidak ada gangguan yang diaktifkan daripada tetapan pengaktifan gangguan individu. I-bit dibersihkan oleh perkakasan setelah gangguan berlaku, dan ditetapkan oleh arahan RETI untuk membolehkan gangguan seterusnya. I-bit juga dapat diset dan dibersihkan oleh aplikasi dengan arahan SEI dan CLI, seperti yang dijelaskan dalam rujukan set arahan.
Bit 6 - T: Penyimpanan Salinan Bit
Arahan Bit Copy BLD (Bit LoaD) dan BST (Bit STore) menggunakan T-bit sebagai sumber atau tujuan bit yang dikendalikan. Sedikit dari daftar dalam Daftar File dapat disalin ke T oleh arahan BST, dan sedikit di T dapat disalin menjadi sedikit dalam daftar di Daftar File dengan arahan BLD.
Bit 5 - H: Bendera Separuh Carry
Bendera Half Carry H menunjukkan Carry Half dalam beberapa operasi aritmetik. Half Carry berguna dalam aritmetik BCD. Lihat "Huraian Set Arahan" untuk maklumat terperinci.
Bit 4 – S: Bit Tanda, S = N ⊕ V
S-bit selalu eksklusif atau di antara Bendera Negatif N dan Bendera Pelengkap Overflow Dua. Lihat "Huraian Set Instruksi" untuk maklumat terperinci.
Bit 3 - V: Bendera Limpahan Pelengkap Two
The Two's Complement Overflow Flag V menyokong aritmetik pelengkap dua. Lihat "Huraian Set Arahan" untuk maklumat terperinci.
Bit 2 - N: Bendera Negatif
Bendera Negatif N menunjukkan hasil negatif dalam operasi aritmetik atau logik. Lihat "Huraian Set Arahan" untuk maklumat terperinci.
Bit 1 - Z: Bendera Sifar
Bendera Zero Z menunjukkan hasil sifar dalam operasi aritmetik atau logik. Lihat "Huraian Set Arahan" untuk maklumat terperinci.
Bit 0 - C: Bawa Bendera
Carry Flag C menunjukkan operasi dalam aritmetik atau logik. Lihat "Huraian Set Arahan" untuk maklumat terperinci.
Daftar Tujuan Umum File
Daftar File dioptimumkan untuk set arahan RISC Enhanced AVR. Untuk mencapai prestasi dan fleksibiliti yang diperlukan, skema input / output berikut disokong oleh Daftar File:
Satu operan output 8-bit dan satu input hasil 8-bit
Dua operan output 8-bit dan satu input hasil 8-bit
Dua operan output 8-bit dan satu input hasil 16-bit
Satu operan output 16-bit dan satu input hasil 16-bit
Rajah 4-2 menunjukkan struktur 32 daftar kerja tujuan umum dalam CPU.
Seperti yang ditunjukkan dalam Rajah 4-2, setiap register juga diberikan alamat memori Data, memetakannya langsung ke 32 lokasi pertama Ruang Data pengguna. Walaupun tidak dilaksanakan secara fizikal sebagai lokasi SRAM, organisasi memori ini memberikan fleksibilitas yang besar dalam mengakses daftar, kerana daftar penunjuk X-, Y- dan Z dapat diatur untuk mengindeks setiap daftar di file.Kebanyakan arahan yang beroperasi pada Daftar File mempunyai akses langsung ke semua daftar, dan kebanyakan dari mereka adalah petunjuk kitaran tunggal.
Daftar X, daftar Y, dan daftar Z
Daftar R26..R31 mempunyai beberapa fungsi tambahan untuk penggunaan tujuan umum mereka. Daftar ini adalah penunjuk alamat 16-bit untuk pengalamatan ruang data secara tidak langsung. Tiga daftar alamat tidak langsung X, Y, dan Z didefinisikan seperti yang dijelaskan dalam Rajah 4-3.
Dalam mod pengalamatan yang berbeda, register alamat ini berfungsi sebagai perpindahan tetap, kenaikan otomatis, dan penurunan otomatis (lihat rujukan set instruksi untuk perincian).
Penunjuk Tumpukan
The Stack terutama digunakan untuk menyimpan data sementara, untuk menyimpan pemboleh ubah tempatan dan untuk menyimpan alamat kembali setelah gangguan dan panggilan subrutin. Daftar Stack Pointer selalu menunjuk ke bahagian atas Stack. Perhatikan bahawa Stack dilaksanakan sebagai berkembang dari lokasi memori yang lebih tinggi ke lokasi memori yang lebih rendah. Ini menunjukkan bahawa arahan Stack PUSH menurunkan Stack Pointer.
Stack Pointer menunjukkan data SRAM Stack area di mana Subroutine dan Interrupt Stack berada. Ruang tumpukan ini dalam data SRAM mesti ditentukan oleh program sebelum panggilan subrutin dijalankan atau gangguan diaktifkan. Stack Pointer mesti ditetapkan pada titik di atas 0x60. Stack Pointer dikurangkan oleh seseorang ketika data didorong ke Stack dengan instruksi PUSH, dan dikurangkan oleh dua ketika alamat kembali didorong ke Stack dengan panggilan subrutin atau mengganggu. Stack Pointer ditingkatkan oleh satu ketika data muncul dari Stack dengan instruksi POP, dan itu bertambah oleh dua ketika data muncul dari Stack dengan kembali dari subrutin RET atau kembali dari RETI interrupt.
AVR Stack Pointer dilaksanakan sebagai dua register 8-bit di ruang I / O. Jumlah bit yang sebenarnya digunakan bergantung pada pelaksanaan. Perhatikan bahawa ruang data dalam beberapa implementasi seni bina AVR sangat kecil sehingga hanya diperlukan SPL. Dalam kes ini, Daftar SPH tidak akan hadir.
SPH dan SPL - Daftar Stack Pointer
sedikit | 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 | ||
Baca/Tulis | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Baca/Tulis | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Nilai Permulaan | RAMAI | RAMAI | RAMAI | RAMAI | RAMAI | RAMAI | RAMAI | RAMAI | |
Nilai Permulaan | RAMAI | RAMAI | RAMAI | RAMAI | RAMAI | RAMAI | RAMAI | RAMAI |
Masa Pelaksanaan Arahan
Bahagian ini menerangkan konsep pemasaan capaian umum untuk pelaksanaan arahan. CPU AVR didorong oleh clkCPU jam CPU, dijana secara langsung daripada sumber jam yang dipilih untuk cip. Tiada pembahagian jam dalaman digunakan.
Rajah 4-4 menunjukkan pengambilan arahan selari dan pelaksanaan arahan yang diaktifkan oleh seni bina Harvard dan Daftar akses pantas File konsep. Ini adalah konsep dasar pipelining untuk memperoleh hingga 1 MIPS per MHz dengan hasil unik yang sesuai untuk fungsi per biaya, fungsi per jam, dan fungsi per unit daya.
Rajah 4-5. Operasi ALU Kitaran Tunggal
Tetapkan semula dan Ganggu Pengendalian
AVR menyediakan beberapa sumber gangguan yang berbeza. Selang ini dan Reset Vektor yang terpisah masing-masing mempunyai Vektor Program yang terpisah di ruang memori Program. Semua gangguan diberikan bit pengaktifan individu yang mesti ditulis logik satu sama dengan bit Interrupt Global Enable dalam Status Status untuk membolehkan gangguan tersebut.
Alamat terendah di ruang memori Program secara lalai ditakrifkan sebagai Reset dan Interrupt Vectors. Senarai lengkap vektor ditunjukkan dalam "Gangguan" pada halaman 48. Senarai ini juga menentukan tahap keutamaan dari gangguan yang berbeza. Semakin rendah alamat semakin tinggi adalah tahap keutamaan. RESET mempunyai keutamaan tertinggi, dan seterusnya adalah INT0 - Permintaan Interrupt Luar 0.
Apabila gangguan berlaku, Global Interrupt Enable I-bit dibersihkan dan semua gangguan dilumpuhkan. Perisian pengguna boleh menulis logik ke I-bit untuk membolehkan gangguan bersarang. Semua gangguan yang diaktifkan kemudian dapat mengganggu rutin gangguan semasa. I-bit ditetapkan secara automatik apabila arahan Return from Interrupt - RETI - dijalankan.
Pada dasarnya terdapat dua jenis gangguan. Jenis pertama dipicu oleh peristiwa yang menetapkan Bendera Interrupt. Untuk gangguan ini, Kaunter Program diarahkan ke Vektor Interrupt yang sebenarnya untuk melaksanakan rutin pengendalian gangguan, dan perkakasan membersihkan Bendera Interrupt yang sesuai. Interrupt Flags juga dapat dihapus dengan menulis logik ke kedudukan bit bendera yang akan dibersihkan. Sekiranya keadaan gangguan berlaku semasa bit pengaktifan interupsi yang bersangkutan dibersihkan, Bendera Interrupt akan ditetapkan dan diingat sehingga gangguan diaktifkan, atau bendera dihapus oleh perisian. Begitu juga, jika satu atau lebih keadaan gangguan berlaku semasa bit Interrupt Enable global dibersihkan, Bendera Interrupt yang sesuai akan ditetapkan dan diingat sehingga bit Interrupt Enable global ditetapkan, dan kemudian akan dilaksanakan mengikut urutan keutamaan.
Jenis gangguan kedua akan mencetuskan selagi keadaan gangguan berlaku. Interupsi ini tidak semestinya mempunyai Interrupt Flags. Sekiranya keadaan interrupt hilang sebelum interrupt diaktifkan, interrupt tidak akan dipicu.
Apabila AVR keluar dari gangguan, ia akan selalu kembali ke program utama dan melaksanakan satu arahan lagi sebelum gangguan yang ditangguhkan disajikan.
Perhatikan bahawa Daftar Status tidak disimpan secara automatik ketika memasuki rutin gangguan, atau dipulihkan ketika kembali dari rutin gangguan. Ini mesti dikendalikan oleh perisian.
Semasa menggunakan arahan CLI untuk mematikan gangguan, gangguan akan segera dilumpuhkan. Tidak ada gangguan yang akan dilakukan setelah arahan CLI, walaupun ia berlaku serentak dengan arahan CLI. Contoh berikutample menunjukkan bagaimana ini dapat digunakan untuk mengelakkan gangguan semasa urutan menulis EEPROM yang dijadualkan.
Kod Perhimpunan Cthample |
dalam r16, SREG ; menyimpan nilai SREG
cli ; lumpuhkan gangguan semasa urutan masa sbi EECR, EEMPE ; mulakan EEPROM menulis sbi EECR, EEPE keluar SREG, r16; memulihkan nilai SREG (I-bit) |
C Kod Cthample |
char cSREG;
cSREG = SREG; /* simpan nilai SREG */ /* nyahdayakan gangguan semasa urutan masa */ _CLI (); EECR |= (1< EECR | = (1 < SREG = cSREG; /* pulihkan nilai SREG (I-bit) */ |
Semasa menggunakan arahan SEI untuk mengaktifkan gangguan, arahan yang mengikuti SEI akan dilaksanakan sebelum sebarang gangguan menunggu, seperti yang ditunjukkan dalam contoh iniample.
Kod Perhimpunan Cthample |
sei ; tetapkan Global Interrupt Enable
tidur; masuk tidur, menunggu gangguan ; nota: akan masuk tidur sebelum tertunda ; mengganggu |
C Kod Cthample |
_SEI(); /* set Global Interrupt Enable */
_TIDUR(); /* masuk tidur, menunggu gangguan */ / * nota: akan tidur sebelum sebarang gangguan menunggu / / |
Selang Masa Respons
Tindak balas pelaksanaan gangguan untuk semua gangguan AVR yang diaktifkan adalah minimum empat kitaran jam. Selepas empat pusingan jam, alamat Vektor Program untuk rutin pengendalian gangguan sebenar dilaksanakan. Selama tempoh empat jam kitaran ini, Kaunter Program didorong ke Stack. Vektor biasanya merupakan lompatan ke rutin gangguan, dan lompatan ini memerlukan tiga pusingan jam. Sekiranya gangguan berlaku semasa pelaksanaan arahan berbilang kitaran, arahan ini diselesaikan sebelum gangguan diserahkan. Sekiranya gangguan berlaku semasa MCU berada dalam mod tidur, masa tindak balas pelaksanaan gangguan akan meningkat sebanyak empat kitaran jam. Kenaikan ini datang sebagai tambahan kepada waktu permulaan dari mod tidur yang dipilih.
Kembalinya dari rutin pengendalian gangguan memerlukan empat kitaran jam. Selama empat pusingan jam ini, Program Counter (dua byte) muncul kembali dari Stack, Stack Pointer meningkat dua, dan I-bit dalam SREG ditetapkan.
Kenangan AVR
Bahagian ini menerangkan kenangan berbeza dalam ATtiny25 / 45/85. Senibina AVR mempunyai dua ruang memori utama, memori Data dan ruang memori Program. Sebagai tambahan, ATtiny25 / 45/85 mempunyai Memori EEPROM untuk penyimpanan data. Ketiga-tiga ruang memori adalah linear dan biasa.
Memori Program Flash yang boleh diprogramkan semula dalam sistem
ATtiny25 / 45/85 mengandungi 2/4 / 8K bait Memori kilat dalam sistem yang dapat diprogram ulang dalam cip untuk penyimpanan program. Oleh kerana semua arahan AVR berukuran 16 atau 32 bit, Flash disusun sebagai 1024/2048/4096 x 16.
Memori Flash mempunyai daya tahan sekurang-kurangnya 10,000 kitaran tulis / padam. Kaunter Program ATtiny25 / 45/85 (PC) selebar 10/11/12 bit, dengan itu mengatasi lokasi memori Program 1024/2048/4096. "Program Memori- ming ”di halaman 147 mengandungi penerangan terperinci mengenai muat turun bersiri data Flash menggunakan pin SPI.
Jadual tetap boleh dialokasikan di seluruh ruang alamat memori Program (lihat keterangan arahan memori LPM - Muatkan Program).
Rajah 5-1. Peta Memori Program
Memori Data SRAM
Rajah 5-2 menunjukkan bagaimana memori ATtiny25 / 45/85 SRAM disusun.
Lokasi memori 224/352/607 yang lebih rendah alamat kedua-dua Daftar File, memori I / O dan SRAM data dalaman. 32 lokasi pertama mengalamatkan Daftar File, 64 lokasi seterusnya memori I / O standard, dan 128/256/512 lokasi terakhir menangani SRAM data dalaman.
Lima mod pengalamatan yang berlainan untuk penutup memori Data: Langsung, Tidak Langsung dengan Perpindahan, Tidak Langsung, Langsung dengan Pra-penurunan, dan Tidak Langsung dengan Peningkatan Pasca. Dalam Daftar File, register R26 hingga R31 menampilkan register penunjuk alamat tidak langsung.
Pengalamatan langsung mencapai seluruh ruang data.
Mod Tidak Langsung dengan Perpindahan mencapai 63 lokasi alamat dari alamat asas yang diberikan oleh daftar Y- atau Z-.
Apabila menggunakan mod pengalamatan tidak langsung register dengan pra-pengurangan dan kenaikan pasca automatik, daftar alamat X, Y, dan Z dikurangkan atau ditingkatkan.
32 register kerja tujuan umum, 64 I / O Register, dan 128/256/512 bait SRAM data dalaman di ATtiny25 / 45/85 semuanya dapat diakses melalui semua mod pengalamatan ini. Daftar File dijelaskan dalam "Gen- Daftar Tujuan eral File”Di halaman 10.
Rajah 5-2. Peta Memori Data
Akses Memori Data Masa
Bahagian ini menerangkan konsep pemasaan capaian umum untuk capaian memori dalaman. Akses SRAM data dalaman dilakukan dalam dua kitaran clkCPU seperti yang diterangkan dalam Rajah 5-3.
Rajah 5-3. Kitaran Akses SRAM Data pada cip Memori Data EEPROM
ATtiny25 / 45/85 mengandungi 128/256/512 bait memori EEPROM data. Ia disusun sebagai ruang data yang berasingan, di mana bait tunggal dapat dibaca dan ditulis. EEPROM mempunyai daya tahan sekurang-kurangnya 100,000 kitaran tulis / padam. Akses antara EEPROM dan CPU dijelaskan dalam hal berikut, yang menentukan Daftar Alamat EEPROM, Daftar Data EEPROM, dan Daftar Kontrol EEPROM. Untuk keterangan lihat "Muat Turun Bersiri" di halaman 151.
Akses Baca / Tulis EEPROM
Daftar Akses EEPROM boleh diakses di ruang I / O.
Masa akses menulis untuk EEPROM diberikan dalam Jadual 5-1 di halaman 21. Fungsi pemasaan kendiri, bagaimanapun, membolehkan perisian pengguna mengesan apabila bait seterusnya boleh ditulis. Jika kod pengguna mengandungi arahan yang menulis EEPROM, beberapa langkah berjaga-jaga mesti diambil. Dalam bekalan kuasa yang banyak ditapis, VCC mungkin akan naik atau turun secara perlahan
Kuasa naik / turun. Ini menyebabkan peranti untuk jangka masa berjalan pada voltage lebih rendah daripada yang ditetapkan sebagai minimum untuk kekerapan jam yang digunakan. Lihat “Mencegah Rasuah EEPROM” di halaman 19 untuk perincian mengenai cara mengelakkan masalah dalam situasi ini.
Untuk mengelakkan penulisan EEPROM yang tidak disengajakan, prosedur penulisan khusus mesti diikuti. Rujuk kepada "Atom Pengaturcaraan Byte ”di halaman 17 dan "Pengaturcaraan Split Byte" di halaman 17 untuk keterangan mengenai perkara ini.
Apabila EEPROM dibaca, CPU dihentikan selama empat pusingan jam sebelum arahan berikutnya dijalankan. Semasa EEPROM ditulis, CPU dihentikan selama dua pusingan jam sebelum arahan berikutnya dijalankan.
Pengaturcaraan Bait Atom
Menggunakan Atomic Byte Programming adalah mod paling mudah. Semasa menulis bait ke EEPROM, pengguna mesti menulis alamat ke dalam Daftar EEAR dan data ke dalam Daftar EEDR. Sekiranya bit EEPMn adalah sifar, menulis EEPE (dalam empat kitaran selepas EEMPE ditulis) akan mencetuskan operasi penghapusan / penulisan. Kedua-dua kitaran penghapusan dan penulisan dilakukan dalam satu operasi dan jumlah masa pengaturcaraan diberikan dalam Jadual 5-1 di halaman 21. Bit EEPE tetap ditetapkan sehingga operasi pemadaman dan penulisan selesai. Walaupun peranti sibuk dengan pengaturcaraan, operasi EEPROM yang lain tidak mungkin dilakukan.
Pengaturcaraan Split Byte
Adalah mungkin untuk memisahkan kitaran penghapusan dan penulisan dalam dua operasi yang berbeza. Ini mungkin berguna sekiranya sistem memerlukan waktu akses yang singkat untuk beberapa jangka masa yang terhad (biasanya jika bekalan kuasa voltage jatuh). Untuk mengambil adv- tagDengan kaedah ini, lokasi yang hendak ditulis telah dihapuskan sebelum operasi menulis. Tetapi kerana operasi padam dan tulis dipecah, adalah mungkin untuk melakukan operasi pemadaman apabila sistem membenarkan melakukan operasi kritikal masa (biasanya selepas Power-up).
Padam
Untuk menghapus bait, alamat mesti ditulis kepada EEAR. Sekiranya bit EEPMn adalah 0b01, menulis EEPE (dalam empat kitaran selepas EEMPE ditulis) akan mencetuskan operasi pemadaman sahaja (masa pengaturcaraan diberikan dalam Jadual 5-1 pada muka surat 21). Bit EEPE tetap ditetapkan sehingga operasi pemadaman selesai. Walaupun peranti sedang sibuk memprogram, operasi EEPROM yang lain tidak mungkin dilakukan.
tulis
Untuk menulis lokasi, pengguna mesti menulis alamat ke EEAR dan data ke dalam EEDR. Sekiranya bit EEPMn adalah 0b10, menulis EEPE (dalam empat kitaran selepas EEMPE ditulis) akan mencetuskan operasi tulis sahaja (masa pengaturcaraan diberikan dalam Jadual 5-1 di halaman 21). Bit EEPE tetap ditetapkan sehingga operasi menulis selesai. Sekiranya lokasi yang hendak ditulis belum dipadamkan sebelum menulis, data yang disimpan mesti dianggap hilang. Walaupun peranti sibuk dengan pengaturcaraan, operasi EEPROM yang lain tidak mungkin dilakukan.
Oscillator yang dikalibrasi digunakan untuk membuat masa EEPROM mengakses. Pastikan frekuensi Oscillator berada dalam syarat yang dijelaskan dalam "OSCCAL - Daftar Penentukuran Osilator" di halaman 31.
Contoh kod berikutamples menunjukkan satu pemasangan dan satu fungsi C untuk menghapus, menulis, atau menulis atom EEPROM. Bekasnyaamples menganggap bahawa gangguan dikawal (contohnya, dengan mematikan gangguan secara global) supaya tidak berlaku gangguan semasa pelaksanaan fungsi-fungsi ini.
Kod Perhimpunan Cthample |
EEPROM_tulis:
; Tunggu selesai penulisan sebelumnya sbic EECR,EEPE rjmp EEPROM_write ; Tetapkan mod Pengaturcaraan ldi r16, (0<<EEPM1)|(0<<EEPM0) keluar EECR, r16 ; Sediakan alamat (r18: r17) dalam daftar alamat keluar EEARH, r18 keluar EEARL, r17 ; Tulis data (r19) ke daftar data keluar EEDR, r19 ; Tulis satu logik untuk EEMPE sbi EECR,EEMPE ; Mulakan eeprom write dengan menetapkan EEPE sbi EECR,EEPE ret |
C Kod Cthample |
void EEPROM_write(unsigned char ucAddress, unsigned char ucData)
{ /* Tunggu selesai penulisan sebelumnya */ sementara(EECR & (1< ; /* Tetapkan mod Pengaturcaraan */ EECR = (0 < / * Siapkan daftar alamat dan data * / EEAR = ucAddress; EEDR = ucData; /* Tulis satu logik ke EEMPE */ EECR | = (1 < / * Mulakan eeprom menulis dengan menetapkan EEPE * / EECR | = (1 < } |
Contoh kod seterusnyaamples menunjukkan fungsi pemasangan dan C untuk membaca EEPROM. BekasnyaampLes menganggap bahawa gangguan dikawal sehingga tidak ada gangguan yang berlaku semasa pelaksanaan fungsi-fungsi ini.
Kod Perhimpunan Cthample |
EEPROM_baca:
; Tunggu selesai penulisan sebelumnya sbic EECR,EEPE rjmp EEPROM_read ; Sediakan alamat (r18: r17) dalam daftar alamat keluar EEARH, r18 keluar EEARL, r17 ; Mulakan eeprom dibaca dengan menulis EERE sbi EECR,EERE ; Baca data dari daftar data dalam r16,EEDR ret |
C Kod Cthample |
unsigned char EEPROM_read(unsigned char ucAddress)
{ / * Tunggu selesai penulisan sebelumnya * / sementara (EECR & (1 < ; / * Sediakan daftar alamat * / EEAR = ucAddress; /* Mulakan eeprom dibaca dengan menulis EERE */ EECR | = (1 < / * Kembalikan data dari daftar data * / mengembalikan EEDR; } |
Mencegah Rasuah EEPROM
Semasa tempoh VCC rendah, data EEPROM boleh rosak kerana bekalan voltage terlalu rendah untuk CPU dan EEPROM dapat beroperasi dengan baik. Masalah-masalah ini sama seperti sistem peringkat papan yang menggunakan EEPROM, dan penyelesaian reka bentuk yang sama harus diterapkan.
Kerosakan data EEPROM boleh disebabkan oleh dua keadaan ketika voltage terlalu rendah. Pertama, urutan menulis biasa ke EEPROM memerlukan jumlah minimumtage untuk beroperasi dengan betul. Kedua, CPU itu sendiri dapat melaksanakan arahan dengan tidak betul, jika supply voltage terlalu rendah.
Rasuah data EEPROM dapat dielakkan dengan mudah dengan mengikuti cadangan reka bentuk ini:
Pastikan AVR RESET tetap aktif (rendah) semasa tempoh bekalan kuasa tidak mencukupitage. Ini boleh dilakukan dengan mengaktifkan Brown-out Detector (BOD) dalaman. Sekiranya tahap pengesanan BOD dalaman tidak sesuai dengan
tahap pengesanan yang diperlukan, litar perlindungan set semula VCC rendah luaran boleh digunakan. Jika tetapan semula berlaku semasa operasi tulis sedang dijalankan, operasi tulis akan selesai dengan syarat bekalan kuasa voltage mencukupi.
Memori I / O
Definisi ruang I / O ATtiny25 / 45/85 ditunjukkan dalam “Daftar Ringkasan” di halaman 200.
Semua ATtiny25 / 45/85 I / Os dan periferal diletakkan di ruang I / O. Semua lokasi I / O boleh diakses dengan arahan LD / LDS / LDD dan ST / STS / STD, memindahkan data antara 32 daftar kerja tujuan umum dan ruang I / O. Daftar I / O dalam julat alamat 0x00 - 0x1F secara langsung boleh diakses sedikit menggunakan arahan SBI dan CBI. Dalam daftar ini, nilai bit tunggal dapat diperiksa dengan menggunakan arahan SBIS dan SBIC. Rujuk bahagian set arahan untuk keterangan lebih lanjut. Semasa menggunakan arahan khusus I / O IN dan OUT, alamat I / O 0x00 - 0x3F mesti digunakan. Semasa menangani Daftar I / O sebagai ruang data menggunakan arahan LD dan ST, 0x20 mesti ditambahkan ke alamat ini.
Untuk keserasian dengan peranti masa depan, bit yang dikhaskan harus ditulis menjadi sifar jika diakses. Alamat memori I / O yang terpelihara tidak boleh ditulis.
Sebilangan Bendera Status dibersihkan dengan menulis yang logik kepada mereka. Perhatikan bahawa arahan CBI dan SBI hanya akan beroperasi pada bit yang ditentukan, dan oleh itu dapat digunakan pada daftar yang berisi Bendera Status tersebut. Arahan CBI dan SBI hanya berfungsi dengan daftar 0x00 hingga 0x1F.
Daftar Kawalan I / O dan Periferal dijelaskan di bahagian kemudian.
Keterangan Daftar
Daftar Alamat EEARH - EEPROM
sedikit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1F | – | – | – | – | – | – | – | TAHUN8 | AWAL |
Baca/Tulis | R | R | R | R | R | R | R | R/W | |
Nilai Permulaan | 0 | 0 | 0 | 0 | 0 | 0 | 0 | X/0 |
Bits 7: 1 - Res: Reserved Bits
Bit ini dikhaskan untuk penggunaan masa depan dan akan selalu dibaca sebagai sifar.
Bits 0 - EEAR8: Alamat EEPROM
Ini adalah sedikit alamat EEPROM yang paling ketara dari ATtiny85. Pada peranti yang kurang EEPROM, iaitu ATtiny25 / ATtiny45, bit ini dikhaskan dan akan selalu dibaca sifar. Nilai awal Pendaftar Alamat EEPROM (EEAR) belum ditentukan dan oleh itu nilai yang tepat mesti ditulis sebelum EEPROM diakses.
EEARL - Daftar Alamat EEPROM
sedikit
0x1E | TAHUN7 | TAHUN6 | TAHUN5 | TAHUN4 | TAHUN3 | TAHUN2 | TAHUN1 | TAHUN0 | AWAL |
Belakang / Tulis | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Nilai Permulaan | X | X | X | X | X | X | X | X |
Bit 7 - EEAR7: Alamat EEPROM
Ini adalah bit alamat EEPROM yang paling ketara dari ATtiny45. Pada peranti yang kurang EEPROM, iaitu ATtiny25, bit ini dikhaskan dan akan selalu dibaca sifar. Nilai awal Daftar Alamat EEPROM (EEAR) tidak ditentukan dan oleh itu nilai yang tepat mesti ditulis sebelum EEPROM diakses.
Bits 6: 0 - EEAR [6: 0]: Alamat EEPROM
Ini adalah bit (rendah) dari Daftar Alamat EEPROM. Byte data EEPROM ditangani secara linear dalam julat 0… (128/256 / 512-1). Nilai awal EEAR belum ditentukan dan nilai yang wajar mesti ditulis sebelum EEPROM dapat diakses.
Daftar Data EEDR - EEPROM
sedikit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1D | EEDR7 | EEDR6 | EEDR5 | EEDR4 | EEDR3 | EEDR2 | EEDR1 | EEDR0 | EEDR |
Baca/Tulis | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Nilai Permulaan | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Untuk operasi tulis EEPROM, Daftar EEDR mengandungi data yang akan dituliskan kepada EEPROM dalam alamat yang diberikan oleh Daftar EEAR. Untuk operasi baca EEPROM, EEDR mengandungi data yang dibaca dari
EEPROM di alamat yang diberikan oleh EEAR.
5.5.4 Daftar Kawalan EECR - EEPROM |
|||||||||
Bit 7 6 5 | 4 | 3 | 2 | 1 | 0 | ||||
0x1C – | – | EEPM1 | EEPM0 | SERAM | EEMPE | EEPE | EERE | EECR | |
Baca / Tulis R R R / W | R/W | R/W | R/W | R/W | R/W | ||||
Nilai Permulaan 0 0 X | X | 0 | 0 | X | 0 |
Bit 7 - Res: Bit Terpelihara
Bit ini dikhaskan untuk penggunaan masa depan dan akan selalu dibaca sebagai 0 di ATtiny25 / 45/85. Untuk keserasian dengan peranti AVR masa depan, selalu tulis bit ini hingga sifar. Selepas membaca, tutup sedikit ini.
Bit 6 - Res: Bit Terpelihara
Bit ini dikhaskan dalam ATtiny25 / 45/85 dan akan selalu dibaca sebagai sifar.
Bits 5: 4 - EEPM [1: 0]: Bit Mod Pengaturcaraan EEPROM
Pengaturan bit mod Pengaturcaraan EEPROM menentukan tindakan pengaturcaraan mana yang akan dicetuskan ketika menulis EEPE. Adalah mungkin untuk memprogram data dalam satu operasi atom (menghapus nilai lama dan memprogram nilai baru) atau untuk membelah operasi Hapus dan Tulis dalam dua operasi yang berbeza. Masa Pengaturcaraan untuk pelbagai mod ditunjukkan dalam Jadual 5-1. Semasa EEPE ditetapkan, sebarang penulisan kepada EEPMn akan diabaikan. Semasa menetapkan semula, bit EEPMn akan diset semula ke 0b00 kecuali EEPROM sibuk memprogramkan.
Jadual 5-1. Bit Mod EEPROM
EEPM1 | EEPM0 | Masa Pengaturcaraan | Operasi |
0 | 0 | 3.4 ms | Padam dan Tulis dalam satu operasi (Operasi Atom) |
0 | 1 | 1.8 ms | Padam Sahaja |
1 | 0 | 1.8 ms | Tulis Sahaja |
1 | 1 | – | Dikhaskan untuk kegunaan masa hadapan |
Bit 3 - EERIE: EEPROM Ready Interrupt Enable
Menulis EERIE kepada satu membolehkan EEPROM Ready Interrupt sekiranya I-bit dalam SREG ditetapkan. Menulis EERIE hingga sifar mengganggu gangguan. EEPROM Ready Interrupt menghasilkan gangguan berterusan apabila memori yang tidak menentu siap untuk diprogramkan.
Bit 2 - EEMPE: Program Master EEPROM Aktifkan
Bit EEMPE menentukan sama ada menulis EEPE ke satu akan memberi kesan atau tidak.
Apabila EEMPE ditetapkan, menetapkan EEPE dalam empat pusingan jam akan memprogram EEPROM pada alamat yang dipilih. Sekiranya EEMPE adalah sifar, menetapkan EEPE tidak akan memberi kesan. Apabila EEMPE telah ditulis satu oleh perisian, perkakasan akan mengosongkan sedikit hingga sifar setelah empat pusingan jam.
Bit 1 - EEPE: Program EEPROM Diaktifkan
Program EEPROM Enable Signal EEPE adalah pengaturcaraan membolehkan isyarat ke EEPROM. Semasa EEPE ditulis, EEPROM akan diprogramkan mengikut tetapan bit EEPMn. Bit EEMPE mesti ditulis kepada satu sebelum bit logik ditulis kepada EEPE, jika tidak, tidak ada penulisan EEPROM berlaku. Apabila masa akses menulis telah berlalu, bit EEPE dibersihkan oleh perkakasan. Apabila EEPE telah ditetapkan, CPU dihentikan selama dua kitaran sebelum arahan berikutnya dijalankan.
Bit 0 - EERE: EEPROM Baca Aktifkan
The EEPROM Read Enable Signal - EERE - adalah strob baca ke EEPROM. Apabila alamat yang betul disediakan dalam Daftar EEAR, bit EERE mesti ditulis kepada satu untuk mencetuskan pembacaan EEPROM. Akses baca EEPROM mengambil satu arahan, dan data yang diminta segera tersedia. Apabila EEPROM dibaca, CPU dihentikan selama empat kitaran sebelum arahan berikutnya dijalankan. Pengguna harus mengundi EEPE sedikit sebelum memulakan operasi membaca. Sekiranya operasi penulisan sedang berjalan, EEPROM tidak boleh membaca, atau mengubah EEAR Register.
Pilihan Jam dan Jam Sistem
Sistem Jam dan Pengedarannya
Jam CPU
Jam CPU disalurkan ke bahagian sistem yang berkaitan dengan operasi inti AVR. Cthampmodul-modul tersebut adalah Daftar Tujuan Umum File, Daftar Status dan memori Data yang memegang Stack Pointer. Menghentikan jam CPU menghalang inti daripada melakukan operasi dan pengiraan umum.
Jam I / O - clkI / O
Jam I / O digunakan oleh sebahagian besar modul I / O, seperti Timer / Counter. Jam I / O juga digunakan oleh modul Interternal Interrupt, tetapi perhatikan bahawa beberapa gangguan luaran dikesan oleh logik tak segerak, yang membolehkan gangguan tersebut dapat dikesan walaupun jam I / O dihentikan.
Jam Kilat - clkFLASH
Jam Flash mengawal operasi antara muka Flash. Jam Flash biasanya aktif serentak dengan jam CPU.
Jam ADC - clkADC
ADC disediakan dengan domain jam khusus. Ini membolehkan menghentikan jam CPU dan I / O untuk mengurangkan bunyi yang dihasilkan oleh litar digital. Ini memberikan hasil penukaran ADC yang lebih tepat.
PLL Dalaman untuk Penjanaan Jam Periferal Cepat - clkPCK
PLL dalaman di ATtiny25 / 45/85 menghasilkan frekuensi jam yang 8x didarabkan dari input sumber. Secara lalai, PLL menggunakan output dari oscillator RC 8.0 MHz dalaman sebagai sumber. Sebagai alternatif, jika bit LSM dari PLLCSR diatur, PLL akan menggunakan output pengayun RC dibahagi dengan dua. Oleh itu output PLL, jam periferal pantas ialah 64 MHz. Jam periferal cepat, atau jam yang diawetkan dari jam itu, dapat dipilih sebagai sumber jam untuk Pemasa / Pembilang1 atau sebagai jam sistem. Lihat Rajah 6-2. Kekerapan jam persisian pantas dibahagikan dengan dua apabila LSM PLLCSR ditetapkan, menghasilkan frekuensi jam 32 MHz. Ambil perhatian, bahawa LSM tidak boleh ditetapkan jika PLLCLK digunakan sebagai jam sistem.
Rajah 6-2. Sistem Jam PCK.
PLL terkunci pada pengayun RC dan menyesuaikan pengayun RC melalui daftar OSCCAL akan menyesuaikan jam periferal cepat pada masa yang sama. Namun, walaupun osilator RC dibawa ke frekuensi yang lebih tinggi daripada 8 MHz, frekuensi jam periferal cepat tepu pada 85 MHz (keadaan terburuk) dan tetap berayun pada frekuensi maksimum. Perlu diingatkan bahawa PLL dalam kes ini tidak lagi dikunci dengan jam pengayun RC. Oleh itu, disarankan untuk tidak melakukan penyesuaian OSCCAL ke frekuensi yang lebih tinggi daripada 8 MHz untuk memastikan PLL berada dalam julat operasi yang betul.
PLL dalaman diaktifkan apabila:
Bit PLLE dalam daftar PLLCSR ditetapkan.
Fius CKSEL diprogramkan ke '0001'.
Fius CKSEL diprogramkan ke '0011'.
PLOCK bit PLLCSR ditetapkan apabila PLL dikunci. Kedua-dua pengayun RC dalaman dan PLL dimatikan dalam mod tidur mati dan siap sedia.
PLL Dalaman dalam Mod Keserasian ATtiny15
Oleh kerana ATtiny25 / 45/85 adalah peranti migrasi untuk pengguna ATtiny15 maka terdapat mod keserasian ATtiny15 untuk keserasian belakang. Mod keserasian ATtiny15 dipilih dengan memprogram sekering CKSEL ke '0011'.
Dalam mod keserasian ATtiny15, frekuensi pengayun RC dalaman dikalibrasi hingga 6.4 MHz dan faktor pendaraban PLL ditetapkan ke 4x. Lihat Rajah 6-3. Dengan penyesuaian ini, sistem jam adalah serasi dengan ATtiny15 dan jam periferal cepat yang dihasilkan mempunyai frekuensi 25.6 MHz (sama seperti di ATtiny15).
Rajah 6-3. Sistem Jam PCK dalam Mod Keserasian ATtiny15.
Sumber Jam
Peranti ini mempunyai pilihan sumber jam berikut, yang dapat dipilih dengan bit Flash Fuse seperti yang ditunjukkan di bawah. Jam dari sumber yang dipilih dimasukkan ke penjana jam AVR, dan diarahkan ke modul yang sesuai.
Jadual 6-1. Pilihan Jam Peranti Pilih
Pilihan Jam Peranti | CKSEL[3:0](1) |
Jam Luaran (lihat muka surat 26) | 0000 |
Jam PLL Frekuensi Tinggi (lihat muka surat 26) | 0001 |
Pengayun Dalaman yang dikalibrasi (lihat muka surat 27) | 0010(2) |
Pengayun Dalaman yang dikalibrasi (lihat muka surat 27) | 0011(3) |
Pengayun 128 kHz dalaman (lihat muka surat 28) | 0100 |
Pengayun Kristal Frekuensi Rendah (lihat muka surat 29) | 0110 |
Pengayun Kristal / Resonator Seramik (lihat muka surat 29) | 1000 – 1111 |
Terpelihara | 0101, 0111 |
Untuk semua sekering "1" bermaksud tidak diprogramkan sementara "0" bermaksud diprogramkan.
Peranti dihantar dengan pilihan ini dipilih.
Ini akan memilih Mod Keserasian ATtiny15, di mana jam sistem dibahagi dengan empat, menghasilkan frekuensi jam 1.6 MHz. Untuk maklumat lebih lanjut, lihat "Pengayun Dalaman yang Dikalibrasi" di halaman 27.
Pelbagai pilihan untuk setiap pilihan jam diberikan dalam bahagian berikut. Apabila CPU bangun dari Power-down, sumber jam yang dipilih digunakan untuk membuat masa permulaan, memastikan operasi Oscillator stabil sebelum pelaksanaan arahan dimulakan. Ketika CPU bermula dari reset, ada penundaan tambahan yang memungkinkan daya mencapai tahap stabil sebelum memulai operasi normal. Watchdog Oscillator digunakan untuk menentukan masa bahagian masa sebenar ini dari waktu mula. Bilangan kitaran Oscillator WDT yang digunakan untuk setiap time-out ditunjukkan dalam Jadual 6-2.
Jadual 6-2. Bilangan Kitaran Pengayun Anjing Pengawas
Taip Waktu Keluar | Bilangan Kitaran |
4 ms | 512 |
64 ms | 8K (8,192) |
Jam Luaran
Untuk menggerakkan peranti dari sumber jam luaran, CLKI harus dipacu seperti yang ditunjukkan dalam Rajah 6-4. Untuk menjalankan peranti pada jam luaran, Sekering CKSEL mesti diprogramkan ke "00".
Rajah 6-4. Konfigurasi Pemacu Jam Luaran
Apabila sumber jam ini dipilih, waktu mula ditentukan oleh SUT Fuse seperti yang ditunjukkan dalam Jadual 6-3.
Jadual 6-3. Masa Permulaan untuk Pemilihan Jam Luaran
SUT[1:0] | Masa Permulaan dari Power-down | Kelewatan Tambahan dari Tetapkan Semula | Penggunaan yang Disyorkan |
00 | 6 CK | 14CK | BOD diaktifkan |
01 | 6 CK | 14CK + 4 ms | Kuasa meningkat pantas |
10 | 6 CK | 14CK + 64 ms | Kuasa meningkat perlahan-lahan |
11 | Terpelihara |
Semasa menggunakan jam luaran, diperlukan untuk mengelakkan perubahan mendadak dalam frekuensi jam yang digunakan untuk memastikan operasi MCU yang stabil. Variasi frekuensi lebih dari 2% dari satu pusingan jam ke seterusnya boleh menyebabkan tingkah laku yang tidak dapat diramalkan. Diperlukan untuk memastikan bahawa MCU disimpan dalam Reset semasa perubahan dalam frekuensi jam tersebut.
Perhatikan bahawa Sistem Jam Presale dapat digunakan untuk melaksanakan perubahan waktu berjalan dari frekuensi jam dalaman sambil tetap memastikan operasi yang stabil. Rujuk kepada “System Clock Prescaler” di halaman 31 untuk butiran.
Jam PLL Frekuensi Tinggi
Terdapat PLL dalaman yang memberikan kecepatan jam 64 MHz secara nominal yang dikunci ke RC Oscillator untuk penggunaan Peripheral Timer / Counter1 dan untuk sumber jam sistem. Apabila dipilih sebagai sumber jam sistem, dengan memprogram sekering CKSEL ke '0001', ia dibahagi dengan empat seperti yang ditunjukkan dalam Jadual 6-4.
Jadual 6-4. Mod Operasi Jam PLL Frekuensi Tinggi
CKSEL[3:0] | Kekerapan Nominal |
0001 | 16 MHz |
Apabila sumber jam ini dipilih, waktu mula ditentukan oleh sekering SUT seperti yang ditunjukkan dalam Jadual 6-5.
Jadual 6-5. Masa Permulaan untuk Jam PLL Frekuensi Tinggi
SUT[1:0] | Masa Permulaan dari Power Down | Kelewatan Tambahan daripada Tetapan Semula Kuasa (VCC = 5.0V) | Penggunaan yang disyorkan |
00 | 14CK + 1K (1024) CK + 4 ms | 4 ms | BOD diaktifkan |
Jadual 6-5. Masa Permulaan untuk Jam PLL Frekuensi Tinggi
SUT[1:0] | Masa Permulaan dari Power Down | Kelewatan Tambahan daripada Tetapan Semula Kuasa (VCC = 5.0V) | Penggunaan yang disyorkan |
01 | 14CK + 16K (16384) CK + 4 ms | 4 ms | Kuasa meningkat pantas |
10 | 14CK + 1K (1024) CK + 64 ms | 4 ms | Kuasa meningkat perlahan-lahan |
11 | 14CK + 16K (16384) CK + 64 ms | 4 ms | Kuasa meningkat perlahan-lahan |
Pengayun Dalaman yang dikalibrasi
Secara lalai, Internal RC Oscillator menyediakan kira-kira 8.0 MHz jam. Walaupun voltagdan bergantung pada suhu, jam ini dapat dikalibrasi dengan tepat oleh pengguna. Lihat "Pengayun RC Dalaman Berkalibrasi Accu- bersungguh-sungguh ”di halaman 164 dan "Kelajuan Pengayun Dalaman" di halaman 192 untuk keterangan lebih lanjut. Peranti dihantar dengan CKDIV8 Fuse yang diprogramkan. Lihat “System Clock Prescaler” di halaman 31 untuk maklumat lanjut.
Jam ini dapat dipilih sebagai jam sistem dengan memprogram Sekering CKSEL seperti yang ditunjukkan dalam Jadual 6-6 di halaman
27. Sekiranya dipilih, ia akan beroperasi tanpa komponen luaran. Semasa menetapkan semula, perkakasan memuatkan nilai penentukuran yang telah diprogramkan ke dalam Daftar OSCCAL dan dengan itu secara automatik menentukur RC Oscillator. Ketepatan penentukuran ini ditunjukkan sebagai Penentukuran kilang di Jadual 21-2 di halaman 164.
Dengan menukar daftar OSCCAL dari SW, lihat "OSCCAL - Daftar Penentukuran Osilator" di halaman 31, adalah mungkin untuk mendapatkan ketepatan penentukuran yang lebih tinggi daripada dengan menggunakan penentukuran kilang. Ketepatan penentukuran ini ditunjukkan sebagai Penentukuran pengguna di Jadual 21-2 di halaman 164.
Apabila Oscillator ini digunakan sebagai jam chip, Watchdog Oscillator masih akan digunakan untuk Watchdog Timer dan untuk Reset Time-out. Untuk maklumat lebih lanjut mengenai nilai penentukuran yang diprogramkan, lihat bahagian "Cali- bration Bytes ”di halaman 150.
Pengayun dalaman juga dapat diatur untuk menyediakan jam 6.4 MHz dengan menulis sekering CKSEL ke "0011", seperti yang ditunjukkan dalam Jadual 6-6 di bawah. Pengaturan ini disebut sebagai Mode Keserasian ATtiny15 dan dimaksudkan untuk menyediakan sumber jam yang dikalibrasi pada 6.4 MHz, seperti di ATtiny15. Dalam Mod Keserasian ATtiny15 PLL menggunakan pengayun dalaman berjalan pada 6.4 MHz untuk menghasilkan isyarat jam periferal 25.6 MHz untuk Pemasa / Kaunter1 (lihat "8-bit Timer / Counter1 in Mod ATtiny15 ”di halaman 95). Perhatikan bahawa dalam modus operasi ini isyarat jam 6.4 MHz selalu dibahagi dengan empat, menyediakan jam sistem 1.6 MHz.
Jadual 6-6. Mod Pengendalian Pengayun RC Ditentukur Dalaman
CKSEL[3:0] | Kekerapan Nominal |
0010(1) | 8.0 MHz |
0011(2) | 6.4 MHz |
Peranti dihantar dengan pilihan ini dipilih.
Tetapan ini akan memilih Mod Keserasian ATtiny15, di mana jam sistem dibahagi dengan empat, menghasilkan frekuensi jam 1.6 MHz.
Apabila pengayun dalaman 8 MHz yang dikalibrasi dipilih sebagai sumber jam, waktu permulaan ditentukan oleh SUT Fuse seperti yang ditunjukkan dalam Jadual 6-7 di bawah.
Jadual 6-7. Masa Permulaan untuk Jam Pengayun RC Ditentukur Dalaman
SUT[1:0] | Masa Permulaan dari Power-down | Kelewatan Tambahan daripada Set Semula (VCC = 5.0V) | Penggunaan yang Disyorkan |
00 | 6 CK | 14CK(1) | BOD diaktifkan |
01 | 6 CK | 14CK + 4 ms | Kuasa meningkat pantas |
10(2) | 6 CK | 14CK + 64 ms | Kuasa meningkat perlahan-lahan |
11 | Terpelihara |
1. Jika sekering RSTDISBL diprogramkan, waktu permulaan ini akan ditingkatkan menjadi 14CK + 4 ms untuk memastikan mod pengaturcaraan dapat dimasukkan.
2. Peranti dihantar dengan pilihan ini dipilih.
Dalam Mod Keserasian ATtiny15 masa mula ditentukan oleh sekering SUT seperti yang ditunjukkan dalam Jadual 6-8 di bawah.
Jadual 6-8. Masa Permulaan untuk Jam Pengayun RC Ditentukur Dalaman (dalam Mod ATtiny15)
SUT[1:0] | Masa Permulaan dari Power-down | Kelewatan Tambahan daripada Set Semula (VCC = 5.0V) | Penggunaan yang Disyorkan |
00 | 6 CK | 14CK + 64 ms | |
01 | 6 CK | 14CK + 64 ms | |
10 | 6 CK | 14CK + 4 ms | |
11 | 1 CK | 14CK(1) |
Nota: Jika fius RSTDISBL diprogramkan, masa permulaan ini akan ditingkatkan kepada 14CK + 4 ms untuk memastikan mod pengaturcaraan boleh dimasukkan.
Ringkasnya, lebih banyak maklumat mengenai Mod Keserasian ATtiny15 boleh didapati di bahagian "Port B (PB5: PB0)" di muka surat 2, “PLL Dalaman dalam Mod Keserasian ATtiny15” di halaman 24, "8-bit Timer / Counter1 dalam ATtiny15 Mode" aktif muka surat 95, "Batasan debugWIRE" di halaman 140, "Kalibrasi Byte" di halaman 150 dan dalam jadual "Jam Prescaler Pilih ”di halaman 33.
Pengayun 128 kHz dalaman
Pengayun dalaman 128 kHz ialah Pengayun kuasa rendah yang menyediakan jam 128 kHz. Kekerapan adalah nominal pada 3V dan 25°C. Jam ini boleh dipilih sebagai jam sistem dengan memprogramkan Fius CKSEL kepada "0100".
Apabila sumber jam ini dipilih, waktu mula ditentukan oleh SUT Fuse seperti yang ditunjukkan dalam Jadual 6-9.
Jadual 6-9. Masa Permulaan untuk Pengayun Dalaman 128 kHz
SUT[1:0] | Masa Permulaan dari Power-down | Kelewatan Tambahan dari Tetapkan Semula | Penggunaan yang Disyorkan |
00 | 6 CK | 14CK(1) | BOD diaktifkan |
01 | 6 CK | 14CK + 4 ms | Kuasa meningkat pantas |
10 | 6 CK | 14CK + 64 ms | Kuasa meningkat perlahan-lahan |
11 | Terpelihara |
Nota: Jika fius RSTDISBL diprogramkan, masa permulaan ini akan ditingkatkan kepada 14CK + 4 ms untuk memastikan mod pengaturcaraan boleh dimasukkan.
Pengayun Kristal Frekuensi Rendah
Untuk menggunakan kristal jam 32.768 kHz sebagai sumber jam untuk peranti, Crystal Oscillator frekuensi rendah mesti dipilih dengan menetapkan sekering CKSEL ke '0110'. Kristal harus dihubungkan seperti yang ditunjukkan dalam Rajah 6-5. Untuk mencari kapasiti muatan yang sesuai untuk kristal 32.768 kHz, sila rujuk pada lembar data pengeluar.
Apabila pengayun ini dipilih, waktu permulaan ditentukan oleh sekering SUT seperti yang ditunjukkan dalam Jadual 6-10.
Jadual 6-10. Masa Permulaan untuk Pemilihan Jam Pengayun Kristal Frekuensi Rendah
SUT[1:0] | Masa Permulaan dari Power Down | Kelewatan Tambahan daripada Set Semula (VCC = 5.0V) | Penggunaan yang disyorkan |
00 | 1K (1024) CK(1) | 4 ms | Kuasa meningkat atau BOD diaktifkan dengan pantas |
01 | 1K (1024) CK(1) | 64 ms | Kuasa meningkat perlahan-lahan |
10 | 32K (32768) CK | 64 ms | Kekerapan stabil semasa permulaan |
11 | Terpelihara |
Nota: Pilihan ini harus digunakan hanya jika kestabilan frekuensi semasa permulaan tidak penting.
Crystal Oscillator frekuensi rendah memberikan kapasitans beban dalaman, lihat Jadual 6-11 pada setiap pin TOSC.
Jadual 6-11. Kapasitan Pengayun Kristal Frekuensi Rendah
Peranti | 32 kHz Osc. Jenis | Cap (Xtal1 / Tosc1) | Cap (Xtal2 / Tosc2) |
ATtiny25 / 45/85 | Sistem Osc. | 16 pF | 6 pF |
Pengayun Kristal / Resonator Seramik
XTAL1 dan XTAL2 masing-masing adalah input dan output dari pembalikan amplebih hidup yang dapat dikonfigurasi untuk digunakan sebagai Oscillator On-chip, seperti yang ditunjukkan dalam Rajah 6-5. Sama ada kristal kuarza atau resonator seramik boleh digunakan.
C1 dan C2 hendaklah sentiasa sama untuk kedua-dua kristal dan resonator. Nilai optimum kapasitor bergantung pada kristal atau resonator yang digunakan, jumlah kapasitansi sesat, dan bunyi elektromagnet persekitaran. Beberapa garis panduan awal untuk memilih kapasitor untuk digunakan dengan kristal diberikan dalam Jadual 6-12 di bawah. Untuk resonator seramik, nilai kapasitor yang diberikan oleh pengeluar harus digunakan.
Jadual 6-12. Mod Operasi Pengayun Kristal
CKSEL[3:1] | Julat Kekerapan (MHz) | Julat yang Disarankan untuk Kapasitor C1 dan C2 untuk Penggunaan dengan 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 |
Nota: Pilihan ini tidak boleh digunakan dengan kristal, hanya dengan resonator seramik.
Oscillator dapat beroperasi dalam tiga mod yang berbeza, masing-masing dioptimumkan untuk julat frekuensi tertentu. Mod operasi dipilih oleh sekering CKSEL [3: 1] seperti yang ditunjukkan dalam Jadual 6-12.
Sekering CKSEL0 bersama dengan SUT [1: 0] Sekering memilih masa permulaan seperti yang ditunjukkan dalam Jadual 6-13.
Jadual 6-13. Masa Permulaan untuk Pemilihan Jam Pengayun Kristal
CKSEL0 | SUT[1:0] | Masa Permulaan dari Power-down | Kelewatan Tambahan dari Tetapkan Semula | Penggunaan yang Disyorkan |
0 | 00 | 258 CK(1) | 14CK + 4 ms | Resonator seramik, daya naik yang cepat |
0 | 01 | 258 CK(1) | 14CK + 64 ms | Resonator seramik, perlahan-lahan daya meningkat |
0 | 10 | 1K (1024) CK(2) | 14CK | Resonator seramik, BOD diaktifkan |
0 | 11 | 1K (1024) CK(2) | 14CK + 4 ms | Resonator seramik, daya naik yang cepat |
1 | 00 | 1K (1024) CK(2) | 14CK + 64 ms | Resonator seramik, perlahan-lahan daya meningkat |
1 | 01 | 16K (16384) CK | 14CK | Crystal Oscillator, BOD didayakan |
1 | 10 | 16K (16384) CK | 14CK + 4 ms | Crystal Oscillator, kuasa meningkat dengan pantas |
1 | 11 | 16K (16384) CK | 14CK + 64 ms | Crystal Oscillator, perlahan-lahan daya meningkat |
Nota
Pilihan ini hanya boleh digunakan ketika tidak beroperasi mendekati frekuensi maksimum perangkat, dan hanya jika kestabilan frekuensi pada permulaan tidak penting untuk aplikasi. Pilihan ini tidak sesuai untuk kristal.
Pilihan ini dimaksudkan untuk digunakan dengan resonator seramik dan akan memastikan kestabilan frekuensi pada permulaan. Mereka juga dapat digunakan dengan kristal ketika tidak beroperasi mendekati frekuensi maksimum perangkat, dan jika stabilitas frekuensi pada saat permulaan tidak penting untuk aplikasi.
Sumber Jam Lalai
Peranti dihantar dengan CKSEL = "0010", SUT = "10", dan CKDIV8 diprogramkan. Oleh itu, penetapan sumber jam lalai adalah Internal RC Oscillator berjalan pada 8 MHz dengan waktu mula terpanjang dan jam sistem awal presail 8, menghasilkan jam sistem 1.0 MHz. Tetapan lalai ini memastikan bahawa semua pengguna dapat membuat pengaturan sumber jam yang diinginkan menggunakan Sistem Dalam atau Vol-Tinggitage Pengaturcara.
Prescaler Jam Sistem
Jam sistem ATtiny25 / 45/85 boleh dibahagikan dengan menetapkan "CLKPR - Daftar Prescale Jam" di halaman 32. Ciri ini boleh digunakan untuk mengurangkan penggunaan kuasa apabila keperluan untuk kuasa pemprosesan adalah rendah. Ini boleh digunakan dengan semua pilihan sumber jam, dan ia akan menjejaskan kekerapan jam CPU dan semua persisian segerak. clkI/O, clkADC, clkCPU dan clkFLASH dibahagikan dengan faktor seperti yang ditunjukkan dalam Jadual 6-15 di halaman 33.
Masa Bertukar
Semasa beralih antara tetapan prescaler, System Clock Prescaler memastikan bahawa tidak ada gangguan pada sistem jam dan tidak ada frekuensi perantaraan yang lebih tinggi daripada frekuensi jam yang sesuai dengan pengaturan sebelumnya, atau frekuensi jam yang sesuai dengan pengaturan baru.
Penghitung riak yang menerapkan prescaler berjalan pada frekuensi jam yang tidak dibahagi, yang mungkin lebih cepat daripada frekuensi jam CPU. Oleh itu, tidak mungkin untuk menentukan keadaan prescaler - walaupun ia dapat dibaca, dan masa yang tepat yang diperlukan untuk beralih dari satu bahagian jam ke bahagian lain tidak dapat diramalkan dengan tepat.
Dari saat nilai CLKPS ditulis, diperlukan antara T1 + T2 dan T1 + 2 * T2 sebelum frekuensi jam baru aktif. Dalam selang waktu ini, 2 tepi jam aktif dihasilkan. Di sini, T1 adalah tempoh jam sebelumnya, dan T2 adalah tempoh yang sesuai dengan tetapan prescaler baru.
Penyangga Output Jam
Peranti dapat mengeluarkan jam sistem pada pin CLKO (bila tidak digunakan sebagai pin XTAL2). Untuk mengaktifkan output, CKOUT Fuse harus diprogramkan. Mod ini sesuai apabila jam cip digunakan untuk menggerakkan litar lain pada sistem. Perhatikan bahawa jam tidak akan dikeluarkan semasa tetapan semula dan bahawa operasi normal pin I / O akan diganti ketika sekering diprogramkan. RC Oscillator dalaman, WDT Oscillator, PLL, dan jam luaran (CLKI) dapat dipilih semasa jam dikeluarkan pada CLKO. Pengayun kristal (XTAL1, XTAL2) tidak dapat digunakan untuk output jam pada CLKO. Sekiranya System Clock Prescaler digunakan, ini adalah jam sistem terbahagi yang dikeluarkan.
Keterangan Daftar
OSCCAL - Daftar Penentukuran Osilator
sedikit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x31 | CAL7 | CAL6 | CAL5 | CAL4 | CAL3 | CAL2 | CAL1 | CAL0 | OSCCAL |
Baca/Tulis | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
Bits 7: 0 - CAL [7: 0]: Nilai Penentukuran Osilator
The Oscillator Calibration Register digunakan untuk memotong Oscillator RC Internal Calibrated untuk menghilangkan perubahan proses dari frekuensi pengayun. Nilai penentukuran yang telah diprogramkan secara automatik ditulis ke daftar ini semasa set semula cip, memberikan frekuensi dikalibrasi Pabrik seperti yang ditentukan dalam Jadual 21-2 di halaman 164. Perisian aplikasi boleh menulis daftar ini untuk mengubah frekuensi pengayun. Pengayun dapat dikalibrasi ke frekuensi seperti yang ditentukan dalam Jadual 21-2 di halaman 164. Penentukuran di luar julat tidak dijamin.
Perhatikan bahawa pengayun ini digunakan untuk melancarkan akses tulis EEPROM dan Flash, dan masa penulisan ini akan dipengaruhi dengan sewajarnya. Sekiranya EEPROM atau Flash ditulis, jangan menentukur melebihi 8.8 MHz. Jika tidak, penulisan EEPROM atau Flash mungkin gagal.
Bit CAL7 menentukan julat operasi untuk pengayun. Menetapkan bit ini ke 0 memberikan julat frekuensi terendah, menetapkan bit ini ke 1 memberikan julat frekuensi tertinggi. Dua julat frekuensi bertindih, dengan kata lain tetapan OSCCAL = 0x7F memberikan frekuensi yang lebih tinggi daripada OSCCAL = 0x80.
Bit CAL [6: 0] digunakan untuk menyesuaikan frekuensi dalam julat yang dipilih. Pengaturan 0x00 memberikan frekuensi terendah dalam julat itu, dan tetapan 0x7F memberikan frekuensi tertinggi dalam julat.
Untuk memastikan operasi MCU yang stabil, nilai penentukuran harus diubah sedikit. Variasi frekuensi lebih dari 2% dari satu kitaran ke kitaran seterusnya dapat menyebabkan tingkah laku yang tidak dapat ditandingi. Perubahan OSCCAL tidak boleh melebihi 0x20 untuk setiap penentukuran. Diperlukan untuk memastikan bahawa MCU disimpan dalam Reset semasa perubahan dalam frekuensi jam tersebut
Jadual 6-14. Julat Frekuensi Pengayun RC Dalaman
Nilai OSCCAL | Frekuensi Terendah Khas Berkenaan dengan Frekuensi Nominal | Frekuensi Tertinggi Khas dengan Mengenai Frekuensi Nominal |
0x00 | 50% | 100% |
0x3F | 75% | 150% |
0x7F | 100% | 200% |
CLKPR - Daftar Prescale Jam
sedikit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x26 | CLKPCE | – | – | – | CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | CLKPR |
Baca/Tulis | R/W | R | R | R | R/W | R/W | R/W | R/W |
Nilai Permulaan 0 0 0 0 Lihat Huraian Bit
Bit 7 - CLKPCE: Clock Prescaler Change Dayakan
Bit CLKPCE mesti ditulis untuk logik untuk membolehkan perubahan bit CLKPS. Bit CLKPCE hanya dikemas kini apabila bit lain dalam CLKPR ditulis secara simultan secara sifar. CLKPCE dibersihkan oleh perkakasan empat kitaran selepas ia ditulis atau ketika bit CLKPS ditulis. Menulis semula bit CLKPCE dalam jangka masa tamat ini tidak akan memanjangkan jangka masa tamat, atau menghapus bit CLKPCE.
Bits 6: 4 - Res: Reserved Bits
Bit ini adalah bit simpanan dalam ATtiny25 / 45/85 dan akan selalu dibaca sebagai sifar.
Bits 3: 0 - CLKPS [3: 0]: Clock Prescaler Pilih Bits 3 - 0
Bit ini menentukan faktor pembahagian antara sumber jam yang dipilih dan jam sistem dalaman. Bit ini boleh ditulis jangka masa untuk mengubah frekuensi jam agar sesuai dengan keperluan aplikasi. Semasa pembahagi membahagikan input jam induk ke MCU, kelajuan semua periferal segerak dikurangkan apabila faktor pembelahan digunakan. Faktor pembahagian diberikan dalam Jadual 6-15.
Untuk mengelakkan perubahan frekuensi jam yang tidak disengajakan, prosedur penulisan khas mesti diikuti untuk menukar bit CLKPS:
Tuliskan bit Clock Prescaler Change Enable (CLKPCE) kepada satu dan semua bit lain dalam CLKPR hingga sifar.
Dalam empat kitaran, tuliskan nilai yang diinginkan kepada CLKPS sambil tulis angka sifar ke CLKPCE.
Gangguan mesti dilumpuhkan semasa menukar tetapan prescaler untuk memastikan prosedur menulis tidak terganggu.
Fius CKDIV8 menentukan nilai awal bit CLKPS. Jika CKDIV8 tidak diprogramkan, bit CLKPS akan ditetapkan semula kepada "0000". Jika CKDIV8 diprogramkan, bit CLKPS ditetapkan semula kepada "0011", memberikan faktor pembahagian lapan semasa permulaan. Ciri ini harus digunakan jika sumber jam yang dipilih mempunyai frekuensi yang lebih tinggi daripada frekuensi maksimum peranti pada keadaan operasi sekarang. Ambil perhatian bahawa sebarang nilai boleh ditulis kepada bit CLKPS tanpa mengira tetapan Fius CKDIV8. Perisian Aplikasi mesti memastikan faktor pembahagian yang mencukupi adalah
dipilih sekiranya sumber jam yang dipilih mempunyai frekuensi yang lebih tinggi daripada frekuensi maksimum peranti pada keadaan operasi sekarang. Peranti dihantar dengan CKDIV8 Fuse yang diprogramkan.
Jadual 6-15. Pilih Praskala Jam
CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | Faktor Pembahagian 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 | Terpelihara |
1 | 0 | 1 | 0 | Terpelihara |
1 | 0 | 1 | 1 | Terpelihara |
1 | 1 | 0 | 0 | Terpelihara |
1 | 1 | 0 | 1 | Terpelihara |
1 | 1 | 1 | 0 | Terpelihara |
1 | 1 | 1 | 1 | Terpelihara |
Nota: Prascaler dinyahdayakan dalam mod keserasian ATtiny15 dan tidak menulis kepada CLKPR, mahupun memprogramkan fius CKDIV8 mempunyai sebarang kesan pada jam sistem (yang akan sentiasa 1.6 MHz).
Mod Pengurusan Kuasa dan Tidur
Prestasi tinggi dan kecekapan kod terkemuka di industri menjadikan mikrokontroler AVR pilihan ideal untuk aplikasi berkuasa rendah. Di samping itu, mod tidur membolehkan aplikasi mematikan modul yang tidak digunakan dalam MCU, sehingga dapat menjimatkan tenaga. AVR menyediakan pelbagai mod tidur yang membolehkan pengguna menyesuaikan penggunaan tenaga dengan keperluan aplikasi.
Mod Tidur
Gambar 6-1 di halaman 23 membentangkan sistem jam yang berbeza dan pengedarannya di ATtiny25 / 45/85. Angka itu membantu dalam memilih mod tidur yang sesuai. Jadual 7-1 menunjukkan cara tidur yang berbeza dan sumber bangunnya.
Jadual 7-1. Domain Jam Aktif dan Sumber Bangun dalam Mod Tidur Berbeza
Domain Jam Aktif | Pengayun | Sumber Bangun | ||||||||||
Mod Tidur | clkCPU | clkFLASH | clkIO | clkADC | clkPCK | Sumber Jam Utama Diaktifkan | INT0 dan Perubahan Pin | SPM / EEPROM
sedia |
Keadaan Mula USI |
ADC | I/O lain | Anjing pemerhati menyampuk |
terbiar | X | X | X | X | X | X | X | X | X | X | ||
Pengurangan Kebisingan ADC | X | X | X(1) | X | X | X | X | |||||
Kekurangan kuasa | X(1) | X | X |
Nota: Untuk INT0, hanya gangguan tahap.
Untuk memasuki salah satu daripada tiga mod tidur, bit SE dalam MCUCR mesti ditulis untuk logik dan arahan SLEEP mesti dilaksanakan. Bit SM [1: 0] dalam Daftar MCUCR pilih mod tidur mana (Idle, Pengurangan Kebisingan ADC atau Power-down) yang akan diaktifkan oleh arahan SLEEP. Lihat Jadual 7-2 untuk ringkasan.
Sekiranya gangguan yang diaktifkan berlaku semasa MCU dalam mod tidur, MCU akan bangun. MCU kemudian dihentikan selama empat kitaran sebagai tambahan kepada waktu permulaan, melaksanakan rutin gangguan, dan melanjutkan pelaksanaan dari arahan yang mengikuti SLEEP. Kandungan Daftar File dan SRAM tidak berubah ketika peranti bangun dari tidur. Sekiranya tetapan semula berlaku semasa mod tidur, MCU terbangun dan dijalankan dari Reset Vektor.
Nota: bahawa jika gangguan yang dicetuskan tahap digunakan untuk bangun, tahap yang diubah mesti ditahan untuk beberapa waktu untuk membangunkan MCU (dan untuk MCU memasuki rutin perkhidmatan gangguan). Lihat "Gangguan Luaran" di halaman 49 untuk butiran.
Mod Menganggur
Apabila bit SM[1:0] ditulis kepada 00, arahan SLEEP menjadikan MCU memasuki mod Idle, menghentikan CPU tetapi membenarkan Analog Comparator, ADC, USI, Timer/Counter, Watchdog, dan sistem gangguan untuk meneruskan operasi- ating. Mod tidur ini pada asasnya menghentikan clkCPU dan clkFLASH, sambil membenarkan jam yang lain berjalan.
Mod terbiar membolehkan MCU bangun dari gangguan pencetus luaran dan juga dalaman seperti Timer Overflow. Sekiranya bangun dari gangguan Analog Comparator tidak diperlukan, Analog Comparator dapat dimatikan dengan menetapkan bit ACD di “ACSR - Daftar Analisis dan Kawalan Perbandingan Analog” di halaman 120. Ini akan mengurangkan penggunaan kuasa dalam mod Idle. Sekiranya ADC diaktifkan, penukaran bermula secara automatik apabila mod ini dimasukkan.
Mod Pengurangan Bunyi ADC
Apabila bit SM[1:0] ditulis kepada 01, arahan SLEEP menjadikan MCU memasuki mod Pengurangan Bunyi ADC, menghentikan CPU tetapi membenarkan ADC, gangguan luaran dan Pengawas untuk terus beroperasi (jika didayakan). Mod tidur ini menghentikan clkI/O, clkCPU dan clkFLASH, sambil membenarkan jam yang lain berjalan.
Ini meningkatkan persekitaran kebisingan untuk ADC, memungkinkan pengukuran resolusi lebih tinggi. Sekiranya ADC diaktifkan, penukaran bermula secara automatik apabila mod ini dimasukkan. Selain daripada gangguan Selang Penukaran ADC, hanya Reset Luaran, Reset Pengawas, Reset Brown-out, gangguan siap SPM / EEPROM, gangguan tahap luaran pada INT0 atau gangguan perubahan pin dapat membangunkan MCU dari Pengurangan Kebisingan ADC mod.
Mod Turunkan
Apabila bit SM [1: 0] ditulis menjadi 10, arahan SLEEP menjadikan MCU memasuki mod Power-down. Dalam mod ini, Oscillator dihentikan, sementara luaran terganggu, pengesanan keadaan mula USI dan Watchdog terus beroperasi (jika diaktifkan). Hanya Reset Luaran, Reset Pengawas, Reset Brown-out, gangguan keadaan mula USI, gangguan tahap luaran pada INT0 atau gangguan penukaran pin dapat membangunkan MCU. Mod tidur ini menghentikan semua jam yang dihasilkan, membenarkan operasi modul tak segerak sahaja.
Perisian BOD Lumpuhkan
Apabila Pengesan Brown-out (BOD) diaktifkan oleh sekering BODLEVEL (lihat Jadual 20-4 di halaman 148, BOD secara aktif memantau jumlah bekalantage semasa tempoh tidur. Di beberapa peranti, mungkin dapat menjimatkan kuasa dengan menonaktifkan BOD oleh perisian dalam mod tidur Power-Down. Penggunaan kuasa mod tidur kemudian akan berada pada tahap yang sama seperti ketika BOD dilumpuhkan secara global oleh sekering.
Jika BOD dilumpuhkan oleh perisian, fungsi BOD dimatikan serta-merta selepas memasuki mod tidur. Selepas bangun dari tidur, BOD didayakan semula secara automatik. Ini memastikan operasi yang selamat sekiranya tahap VCC telah menurun semasa tempoh tidur.
Apabila BOD telah dilumpuhkan, waktu bangun dari mod tidur akan sama dengan waktu bangun dari RESET. Pengguna mesti mengkonfigurasi waktu bangun secara manual sehingga rujukan bandgap mempunyai masa untuk dimulakan dan BOD berfungsi dengan betul sebelum MCU terus melaksanakan kod. Lihat bit sekering SUT [1: 0] dan CKSEL [3: 0] dalam jadual “Fuse Low Byte” di halaman 149
BOD disable dikendalikan oleh BODS (BOD Sleep) bit dari MCU Control Register, lihat “MCUCR - Kawalan MCU Daftar ”di halaman 37. Menulis bit ini untuk satu mematikan BOD dalam Power-Down, sambil menulis sifar menjadikan BOD tetap aktif. Tetapan lalai adalah sifar, iaitu BOD aktif.
Menulis ke bit BODS dikendalikan oleh urutan masa dan bit pengaktifan, lihat “MCUCR - Daftar Kawalan MCU- ter ”di halaman 37.
Had
Fungsi melumpuhkan BOD telah dilaksanakan pada peranti berikut, hanya:
ATtiny25, semakan E, dan yang lebih baru
ATtiny45, semakan D, dan yang lebih baru
ATtiny85, semakan C, dan yang lebih baru
Semakan ditandakan pada pakej peranti dan boleh dibuat seperti berikut:
Bahagian bawah pakej 8P3 dan 8S2
Bahagian atas pakej 20M1
Daftar Pengurangan Kuasa
Daftar Pengurangan Kuasa (PRR), lihat "PRR - Daftar Pengurangan Kuasa" di halaman 38, menyediakan kaedah untuk mengurangkan penggunaan tenaga dengan menghentikan jam ke persisian individu. Keadaan periferal semasa dibekukan dan daftar I / O tidak dapat dibaca atau ditulis. Sumber yang digunakan oleh periferal ketika menghentikan jam akan tetap digunakan, oleh itu periferal dalam kebanyakan kes harus dilumpuhkan sebelum menghentikan jam. Membangunkan modul, yang dilakukan dengan membersihkan bit dalam PRR, meletakkan modul dalam keadaan yang sama seperti sebelum ditutup.
Penutupan modul boleh digunakan dalam mod Idle dan mode Aktif untuk mengurangkan penggunaan kuasa secara keseluruhan. Dalam semua mod tidur yang lain, jam sudah dihentikan. Lihat "Arus Bekalan modul I / O" di halaman 177 untuk bekasamples.
Meminimumkan Penggunaan Tenaga
Terdapat beberapa masalah yang harus dipertimbangkan ketika berusaha meminimumkan penggunaan tenaga dalam sistem terkawal AVR. Secara umum, mod tidur harus digunakan semaksimum mungkin, dan mod tidur harus dipilih sehingga sesedikit mungkin fungsi perangkat beroperasi. Semua fungsi yang tidak diperlukan harus dilumpuhkan. Khususnya, modul berikut mungkin memerlukan pertimbangan khusus ketika berusaha mencapai penggunaan tenaga serendah mungkin.
Penukar Analog ke Digital
Sekiranya diaktifkan, ADC akan diaktifkan dalam semua mod tidur. Untuk menjimatkan kuasa, ADC harus dilumpuhkan sebelum memasuki mod tidur. Apabila ADC dimatikan dan dihidupkan semula, penukaran seterusnya akan menjadi penukaran lanjutan. Rujuk kepada "Penukar Analog ke Digital" di halaman 122 untuk perincian mengenai operasi ADC.
Pembanding Analog
Semasa memasuki mod Idle, Analog Comparator harus dilumpuhkan jika tidak digunakan. Semasa memasuki mod Pengurangan Kebisingan ADC, Analog Comparator harus dilumpuhkan. Dalam mod tidur yang lain, Analog Comparator dilumpuhkan secara automatik. Walau bagaimanapun, jika Analog Comparator diatur untuk menggunakan Vol InternaltagSebagai rujukan sebagai input, Analog Comparator harus dilumpuhkan dalam semua mod tidur. Jika tidak, Internal Voltage Rujukan akan diaktifkan, tidak bergantung pada mod tidur. Rujuk kepada "Perbandingan Analog" di halaman 119 untuk perincian mengenai cara mengkonfigurasi Analog Comparator.
Pengesan Brown-out
Sekiranya Pengesan Brown-out tidak diperlukan dalam aplikasi, modul ini harus dimatikan. Sekiranya Detektor Coklat diaktifkan oleh Sekering BODLEVEL, ia akan diaktifkan dalam semua mod tidur, dan oleh itu, selalu menggunakan kuasa. Dalam mod tidur yang lebih dalam, ini akan menyumbang secara signifikan kepada jumlah penggunaan semasa. Lihat “Deteksi Brown- maklumat ”di halaman 41 dan “Perisian BOD Disable” pada halaman 35 untuk perincian mengenai cara mengkonfigurasi Brown-out Detector.
Vol Dalamantage Rujukan
Vol Dalamantage Rujukan akan diaktifkan apabila diperlukan oleh Brown-out Detection, Analog Comparator atau ADC. Sekiranya modul ini dilumpuhkan seperti yang dijelaskan dalam bahagian di atas, vol dalamannyatage rujukan akan dilumpuhkan dan tidak akan memakan tenaga. Apabila dihidupkan semula, pengguna mesti membiarkan rujukan dimulakan sebelum output digunakan. Sekiranya rujukan tetap dalam mod tidur, output dapat digunakan dengan segera. Rujuk kepada "Vol. Dalamantage Rujukan ”di halaman 42 untuk maklumat mengenai masa mula.
Pemasa Anjing Pengawas
Sekiranya Pemantau Pengawas tidak diperlukan dalam aplikasi, modul ini harus dimatikan. Sekiranya Pemasa Pengawas diaktifkan, ia akan diaktifkan dalam semua mod tidur, dan oleh itu, selalu menggunakan kuasa. Dalam mod tidur yang lebih dalam, ini akan menyumbang secara signifikan kepada jumlah penggunaan semasa. Rujuk kepada "Pemantau Pengawas" di halaman 42 untuk perincian mengenai cara mengkonfigurasi Pemantau Pengawas.
Pin Pelabuhan
Apabila memasuki mod tidur, semua pin port hendaklah dikonfigurasikan untuk menggunakan kuasa minimum. Perkara yang paling penting ialah memastikan tiada pin memacu beban rintangan. Dalam mod tidur di mana kedua-dua jam I/O (clkI/O) dan jam ADC (clkADC) dihentikan, penimbal input peranti akan dilumpuhkan. Ini memastikan tiada kuasa digunakan
oleh logik input apabila tidak diperlukan. Dalam beberapa kes, logik input diperlukan untuk mengesan keadaan bangun, dan
ia kemudian akan diaktifkan. Rujuk bahagiannya "Mod Input Digital dan Mod Tidur" pada halaman 57 untuk butiran mengenai pin yang didayakan. Jika penimbal input didayakan dan isyarat input dibiarkan terapung atau mempunyai tahap isyarat analog yang hampir dengan VCC/2, penimbal input akan menggunakan kuasa yang berlebihan.
Untuk pin input analog, penimbal input digital hendaklah dilumpuhkan pada setiap masa. Tahap isyarat analog yang hampir dengan VCC/2 pada pin input boleh menyebabkan arus yang ketara walaupun dalam mod aktif. Penampan input digital boleh dilumpuhkan dengan menulis ke Daftar Disable Input Digital (DIDR0). Rujuk kepada “DIDR0 - Digital Input Disable Register 0” di halaman 121 untuk butiran.
Keterangan Daftar
MCUCR - Daftar Kawalan MCU
Daftar Kawalan MCU mengandungi bit kawalan untuk pengurusan kuasa.
sedikit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BADAN | PUD | SE | SM1 | SM0 | BADAN | ISC01 | ISC00 | MCUCR |
Baca/Tulis | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Nilai Permulaan | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 7 - BODS: Tidur BOD
Fungsi melumpuhkan BOD hanya terdapat di beberapa peranti. Lihat "Batasan" di halaman 36.
Untuk mematikan BOD semasa tidur (lihat Jadual 7-1 di halaman 34) bit BODS mesti ditulis untuk logik. Ini dikendalikan oleh urutan masa dan bit pengaktifan, BODSE dalam MCUCR. Pertama, kedua-dua BODS dan BODSE mesti ditetapkan menjadi satu. Kedua, dalam empat pusingan jam, BODS mesti ditetapkan ke satu dan BODSE mesti ditetapkan ke sifar. Bit BODS aktif tiga pusingan jam setelah ditetapkan. Arahan tidur mesti dilaksanakan semasa BODS aktif untuk mematikan BOD untuk mod tidur sebenarnya. Bit BODS dikosongkan secara automatik selepas tiga pusingan jam.
Pada peranti di mana Sleeping BOD belum dilaksanakan bit ini tidak digunakan dan akan selalu membaca sifar.
Bit 5 - SE: Tidur diaktifkan
Bit SE mesti ditulis mengikut logik untuk menjadikan MCU memasuki mod tidur apabila arahan SLEEP dilaksanakan. Untuk mengelakkan MCU memasuki mod tidur melainkan ia adalah tujuan pengaturcara, adalah disyorkan untuk menulis bit Sleep Enable (SE) kepada satu sejurus sebelum pelaksanaan arahan SLEEP dan mengosongkannya serta-merta selepas bangun.
Bits 4: 3 - SM [1: 0]: Mod Tidur Pilih Bits 1 dan 0
Bit ini memilih antara tiga mod tidur yang tersedia seperti yang ditunjukkan dalam Jadual 7-2.
Jadual 7-2. Pilih Mod Tidur
SM1 | SM0 | Mod Tidur |
0 | 0 | terbiar |
0 | 1 | Pengurangan Kebisingan ADC |
1 | 0 | Kekurangan kuasa |
1 | 1 | Terpelihara |
Bit 2 - BODSE: BOD Sleep Enable
Fungsi melumpuhkan BOD hanya terdapat di beberapa peranti. Lihat "Batasan" di halaman 36.
Bit BODSE membolehkan penetapan bit kawalan BODS, seperti yang dijelaskan pada penerangan bit BODS. Disable BOD dikendalikan oleh urutan masa.
Bit ini tidak digunakan pada peranti di mana perisian BOD disable belum dilaksanakan dan akan dibaca sebagai sifar pada peranti tersebut.
PRR - Daftar Pengurangan Kuasa
Daftar Pengurangan Daya menyediakan kaedah untuk mengurangkan penggunaan kuasa dengan membiarkan sinyal jam periferal dinonaktifkan.
sedikit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x20 | – | – | – | – | PRTIM1 | PRTIM0 | PRUSI | PRADC | PRR |
Baca/Tulis | R | R | R | R | R/W | R/W | R/W | R/W | |
Nilai Permulaan | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bits 7: 4 - Res: Reserved Bits
Bit ini adalah bit simpanan dalam ATtiny25 / 45/85 dan akan selalu dibaca sebagai sifar.
Bit 3 - PRTIM1: Pemasa / Kaunter Pengurangan Kuasa1
Menulis logik untuk bit ini mematikan modul Timer / Counter1. Apabila Timer / Counter1 diaktifkan, operasi akan berterusan seperti sebelum penutupan.
Bit 2 - PRTIM0: Pemasa / Kaunter Pengurangan Kuasa0
Menulis logik untuk bit ini mematikan modul Timer / Counter0. Apabila Timer / Counter0 diaktifkan, operasi akan berterusan seperti sebelum penutupan.
Bit 1 - PRUSI: USI Pengurangan Kuasa
Menulis logik untuk bit ini mematikan USI dengan menghentikan jam ke modul. Apabila bangun semula USI, USI harus diinisialisasi semula untuk memastikan operasi yang betul.
Bit 0 - PRADC: Pengurangan Kuasa ADC
Menulis logik untuk bit ini mematikan ADC. ADC mesti dilumpuhkan sebelum ditutup. Perhatikan bahawa jam ADC juga digunakan oleh beberapa bahagian pembanding analog, yang bermaksud bahawa perbandingan analog tidak dapat digunakan ketika bit ini tinggi.
Kawalan dan Tetapkan Semula Sistem
Menetapkan semula AVR
Semasa menetapkan semula, semua Daftar I / O ditetapkan pada nilai awalnya, dan program tersebut mulai dijalankan dari Reset Vecor. Arahan yang diletakkan di Reset Vector mestilah arahan RJMP - Relative Jump - ke rutin pengendalian semula. Sekiranya program tidak pernah membolehkan sumber gangguan, Vektor Selang tidak digunakan, dan kod program biasa dapat diletakkan di lokasi ini. Gambarajah litar di Rajah 8-1 menunjukkan logik tetapan semula. Parameter elektrik dari litar ulang diberikan dalam "Karakteristik Sistem dan Tetapkan Semula" di halaman 165.
Rajah 8-1 Set Semula Logik
Port I / O AVR segera diset semula ke keadaan awal apabila sumber tetapan semula aktif. Ini tidak memerlukan sumber jam berjalan.
Setelah semua sumber tetapan semula tidak aktif, kaunter kelewatan dipanggil, memperbetulkan tetapan semula dalaman. Ini membolehkan daya mencapai tahap stabil sebelum operasi normal bermula. Tempoh tamat kaunter penundaan ditentukan oleh pengguna melalui Sekering SUT dan CKSEL. Pilihan yang berbeza untuk tempoh penundaan ditunjukkan dalam "Jam Sumber ”di halaman 25.
Tetapkan semula Sumber
ATtiny25 / 45/85 mempunyai empat sumber tetapan semula:
Tetapkan Semula Kuasa. MCU ditetapkan semula apabila bekalan voltage berada di bawah ambang Tetapan Semula Kuasa (VPOT).
Tetapkan Semula Luaran. MCU diset semula apabila tahap rendah hadir pada pin RESET lebih lama daripada panjang nadi minimum.
Tetapkan Semula Pengawas. MCU diset semula apabila tempoh Pemantau Pengawas tamat dan Pengawas diaktifkan.
Reset Brown-out. MCU ditetapkan semula apabila bekalan voltage VCC berada di bawah ambang Set Semula Brown-out (VBOT) dan Pengesan Brown-out didayakan.
Tetapkan Semula Kuasa
Nadi Power-on Reset (POR) dihasilkan oleh litar pengesanan On-chip. Tahap pengesanan ditentukan dalam "Sys- tem dan Tetapkan Semula Karakteristik ”di halaman 165. POR diaktifkan apabila VCC berada di bawah paras pengesanan. Litar POR boleh digunakan untuk mencetuskan Tetapan Semula Permulaan, serta untuk mengesan kegagalan dalam bekalan voltage.
Litar Power-on Reset (POR) memastikan bahawa peranti diset semula dari Power-on. Mencapai ambang Kuasa Atur Semula voltage memanggil kaunter kelewatan, yang menentukan berapa lama peranti disimpan dalam RESET selepas kenaikan VCC. Isyarat RESET diaktifkan semula, tanpa sebarang kelewatan, apabila VCC berkurangan di bawah paras pengesanan.
Rajah 8-2. Permulaan MCU, TETAP SEMULA Terikat pada VCC
TETAPAN SEMULA DALAMAN
Rajah 8-3. Permulaan MCU, RESET Dilanjutkan Secara Luaran
Tetapkan Semula Luaran
Reset Luar dihasilkan oleh tahap rendah pada pin RESET jika diaktifkan. Tetapkan semula denyutan lebih lama daripada lebar nadi minimum (lihat "Karakteristik Sistem dan Tetapkan Semula" di halaman 165) akan menghasilkan reset, walaupun jam tidak berjalan. Denyutan yang lebih pendek tidak dijamin menghasilkan tetapan semula. Apabila isyarat yang digunakan mencapai Reset Threshold Voltage – VRST – pada kelebihan positifnya, kaunter kelewatan memulakan MCU selepas tempoh Tamat masa telah tamat.
Rajah 8-4. Tetapan Semula Luaran Semasa Operasi
Pengesanan Brown-out
ATtiny25/45/85 mempunyai litar On-chip Brown-out Detection (BOD) untuk memantau tahap VCC semasa operasi dengan membandingkannya dengan tahap pencetus tetap. Tahap pencetus untuk BOD boleh dipilih oleh Fius BODLEVEL. Tahap pencetus mempunyai histerisis untuk memastikan Pengesanan Brown-out bebas spike. Histeresis pada tahap pengesanan hendaklah ditafsirkan sebagai VBOT+ = VBOT + VHYST/2 dan VBOT- = VBOT – VHYST/2.
Apabila BOD didayakan, dan VCC menurun kepada nilai di bawah paras pencetus (VBOT-in Rajah 8-5), Set Semula Brown-out diaktifkan serta-merta. Apabila VCC meningkat melebihi paras pencetus (VBOT+ in Rajah 8-5), kaunter kelewatan memulakan MCU selepas tempoh Tamat masa tTOUT telah tamat.
Litar BOD hanya akan mengesan penurunan dalam VCC jika voltage kekal di bawah paras pencetus lebih lama daripada tBOD yang diberikan "Karakteristik Sistem dan Tetapkan Semula" di halaman 165.
Tetapkan Semula Pengawas
Apabila Watchdog tamat masa, ia akan menjana nadi tetapan semula yang singkat bagi satu tempoh kitaran CK. Pada tepi jatuh nadi ini, pemasa tunda mula mengira tempoh Tamat masa tTOUT. Rujuk kepada "Pemantau Pengawas" di halaman 42 untuk perincian mengenai operasi Pemantau Pengawas.
Voltage Rujukan Aktifkan Isyarat dan Masa Permulaan
Jilidtagrujukan mempunyai masa permulaan yang boleh mempengaruhi cara penggunaannya. Masa permulaan diberikan dalam "Karakteristik Sistem dan Tetapkan Semula" di halaman 165. Untuk menjimatkan kuasa, rujukan tidak selalu dihidupkan. Rujukan dihidupkan semasa situasi berikut:
Apabila BOD diaktifkan (dengan memprogram BODLEVEL [2: 0] Fuse Bits).
Apabila rujukan bandgap disambungkan ke Analog Comparator (dengan menetapkan bit ACBG dalam ACSR).
Apabila ADC diaktifkan.
Oleh itu, apabila BOD tidak diaktifkan, setelah menetapkan bit ACBG atau mengaktifkan ADC, pengguna mesti selalu membiarkan rujukan dimulakan sebelum output dari Analog Comparator atau ADC digunakan. Untuk mengurangkan penggunaan daya dalam mod Power-down, pengguna dapat menghindari tiga keadaan di atas untuk memastikan bahawa rujukan dimatikan sebelum memasuki mod Power-down.
Pemasa Anjing Pengawas
Watchdog Timer didatangkan dari On-chip Oscillator yang berjalan pada 128 kHz. Dengan mengendalikan preskala Watchdog Timer, selang Resd Watchdog dapat disesuaikan seperti yang ditunjukkan dalam Jadual 8-3 di halaman 46. WDR - Watchdog Reset - arahan menetapkan semula Watchdog Timer. Pemantau Watchdog juga diset semula apabila ia dilumpuhkan dan apabila Resip Chip berlaku. Sepuluh tempoh kitaran jam yang berbeza dapat dipilih untuk menentukan tempoh penetapan semula. Sekiranya tempoh penetapan semula tamat tanpa Reset Pengawas yang lain, ATtiny25 / 45/85 diset semula dan dilaksanakan dari Reset Vektor. Untuk perincian masa pada Reset Pengawas, rujuk Jadual 8-3 di halaman 46.
Pemantau Pengawas juga dapat dikonfigurasikan untuk menghasilkan gangguan dan bukannya menetapkan semula. Ini sangat berguna ketika menggunakan Watchdog untuk bangun dari Power-down.
Untuk mengelakkan penonaktifan Pengawas yang tidak disengajakan atau perubahan jangka masa yang tidak disengajakan, dua tahap keselamatan yang berbeza dipilih oleh sekering WDTON seperti yang ditunjukkan dalam Jadual 8-1 Rujuk kepada "Urutan Berjangka untuk Mengubah Kon- perangkaan Pemantau Pengawas ”di halaman 43 untuk butiran.
Jadual 8-1. Konfigurasi WDT sebagai Fungsi Tetapan Fius WDTON
WDTON | Tahap Keselamatan | Keadaan Awal WDT | Cara Melumpuhkan WDT | Cara Mengubah Waktu Keluar |
Tidak diprogramkan | 1 | Dilumpuhkan | Urutan masa | Tiada batasan |
Diprogramkan | 2 | Didayakan | Sentiasa diaktifkan | Urutan masa |
Rajah 8-7. Pemasa Anjing Pengawas
Urutan Masa untuk Mengubah Konfigurasi Pemasa Pengawas
Urutan untuk mengubah konfigurasi sedikit berbeza antara kedua tahap keselamatan. Prosedur berasingan dijelaskan untuk setiap peringkat.
Tahap Keselamatan 1: Dalam mod ini, Pemasa Anjing Pemerhati pada mulanya dilumpuhkan, tetapi boleh didayakan dengan menulis bit WDE kepada satu tanpa sebarang sekatan. Urutan bermasa diperlukan apabila melumpuhkan Pemasa Anjing Pengawas yang didayakan. Untuk melumpuhkan Pemasa Anjing Pengawas yang didayakan, prosedur berikut mesti diikuti:
Dalam operasi yang sama, tulis logik untuk WDCE dan WDE. Logik mesti ditulis kepada WDE tanpa mengambil kira nilai bit WDE sebelumnya.
Dalam empat kitaran jam seterusnya, dalam operasi yang sama, tulis bit WDE dan WDP seperti yang dikehendaki, tetapi dengan bit WDCE dibersihkan.
Tahap Keselamatan 2: Dalam mod ini, Pemasa Anjing Pemerhati sentiasa didayakan dan bit WDE akan sentiasa dibaca sebagai satu. Urutan bermasa diperlukan apabila menukar tempoh Tamat Masa Pengawas. Untuk menukar Time-out Anjing Pengawas, prosedur berikut mesti diikuti:
Dalam operasi yang sama, tulis yang logik untuk WDCE dan WDE. Walaupun WDE selalu diatur, WDE mesti ditulis kepada seseorang untuk memulakan urutan masa.
Dalam empat kitaran jam seterusnya, dalam operasi yang sama, tulis bit WDP seperti yang dikehendaki, tetapi dengan bit WDCE dibersihkan. Nilai yang ditulis pada bit WDE tidak relevan.
Kod Cthample
Contoh kod berikutample menunjukkan satu pemasangan dan satu fungsi C untuk mematikan WDT. Bekasnyaample menganggap bahawa gangguan dikendalikan (misalnya, dengan mematikan gangguan secara global) sehingga tidak ada gangguan yang akan berlaku semasa pelaksanaan fungsi-fungsi ini.
Kod Perhimpunan Cthample(1) |
WDT_off:
wdr ; Kosongkan WDRF dalam MCUSR ldi r16, (0< keluar MCUSR, r16 ; Tulis satu logik untuk WDCE dan WDE ; Pastikan tetapan prescaler lama untuk mengelakkan Reset Pengawas yang tidak disengajakan dalam r16, WDTCR ori r16, (1< keluar WDTCR, r16 ; Matikan WDT ldi r16, (0< keluar WDTCR, r16 ret |
C Kod Cthample(1) |
void WDT_off(void)
{ _W DR(); /* Kosongkan WDRF dalam MCUSR */ MCUSR = 0x00 /* Tulis satu logik kepada WDCE dan WDE */ WDTCR |= (1< / * Matikan WDT * / WDTCR = 0x00; } |
Catatan: 1. Lihat "Kod Cthamples ”di halaman 6.
Keterangan Daftar
MCUSR - Daftar Status MCU
Daftar Status MCU memberikan maklumat mengenai sumber tetapan semula yang menyebabkan Reset MCU.
sedikit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x34 | – | – | – | – | WDRF | BORF | LUAR BIASA | PORF | MCUSR |
Baca/Tulis | R | R | R | R | R/W | R/W | R/W | R/W |
Nilai Permulaan 0 0 0 0 Lihat Huraian Bit
Bits 7: 4 - Res: Reserved Bits
Bit ini adalah bit simpanan dalam ATtiny25 / 45/85 dan akan selalu dibaca sebagai sifar.
Bit 3 - WDRF: Bendera Tetapkan Semula Pengawas
Bit ini ditetapkan sekiranya Reset Pengawas berlaku. Bit ditetapkan semula dengan Power-on Reset, atau dengan menulis logik sifar ke bendera.
Bit 2 - BORF: Bendera Tetapkan Semula Coklat
Bit ini ditetapkan sekiranya Reset Brown-out berlaku. Bit ditetapkan semula dengan Power-on Reset, atau dengan menulis logik sifar ke bendera.
Bit 1 - EXTRF: Bendera Tetapkan Semula Luaran
Bit ini ditetapkan jika Reset Luar berlaku. Bit diset semula dengan Power-on Reset, atau dengan menulis logik sifar ke bendera.
Bit 0 - PORF: Bendera Tetapkan Semula Kuasa
Bit ini ditetapkan sekiranya Power-on Reset berlaku. Bit diset semula hanya dengan menulis sifar logik ke bendera.
Untuk menggunakan Reset Flags untuk mengenal pasti keadaan reset, pengguna harus membaca dan kemudian menetapkan semula MCUSR seawal mungkin dalam program ini. Sekiranya daftar dibersihkan sebelum tetapan semula lain berlaku, sumber set semula dapat dijumpai dengan memeriksa Bendera Tetapkan Semula.
WDTCR - Daftar Kawalan Pemasa Pengawas
sedikit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x21 | WDIF | WDIE | WDP3 | WDCE | WDE | WDP2 | WDP1 | WDP0 | WDTCR |
Baca/Tulis | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W | |
Nilai Permulaan | 0 | 0 | 0 | 0 | X | 0 | 0 | 0 |
Bit 7 - WDIF: Bendera Mengganggu Waktu Akhir Pengawas
Bit ini ditetapkan apabila time-out berlaku dalam Watchdog Timer dan Watchdog Timer dikonfigurasikan untuk gangguan. WDIF dibersihkan oleh perkakasan semasa menjalankan vektor pengendalian gangguan yang sesuai. Sebagai alternatif, WDIF dibersihkan dengan menulis logik pada bendera. Apabila I-bit di SREG dan WDIE ditetapkan, Watchdog Time-out Interrupt dijalankan.
Bit 6 - WDIE: Gangguan Waktu Keluar Pengawas Diaktifkan
Apabila bit ini ditulis kepada satu, WDE dibersihkan, dan I-bit dalam Daftar Status ditetapkan, Pengganti Waktu Keluar Pengawas diaktifkan. Dalam mod ini interupsi yang sesuai dijalankan dan bukannya reset jika berlaku timeout dalam Watchdog Timer.
Sekiranya WDE ditetapkan, WDIE secara automatik dibersihkan oleh perkakasan apabila habis masa. Ini berguna untuk menjaga keselamatan Resd Watchdog semasa menggunakan interrupt. Setelah bit WDIE dibersihkan, tamat masa seterusnya akan menghasilkan reset. Untuk mengelakkan Reset Pengawas, WDIE mesti diatur selepas setiap gangguan.
Jadual 8-2. Konfigurasi Pemasa Anjing Pengawas
WDE | WDIE | Negeri Pemantau Pengawas | Tindakan pada Waktu Keluar |
0 | 0 | Berhenti | tiada |
0 | 1 | Berlari | menyampuk |
1 | 0 | Berlari | Tetapkan semula |
1 | 1 | Berlari | menyampuk |
Bit 4 - WDCE: Aktifkan Perubahan Pengawas
Bit ini mesti ditetapkan semasa bit WDE ditulis ke logik sifar. Jika tidak, Pengawas tidak akan dilumpuhkan. Setelah ditulis kepada satu, perkakasan akan membersihkan sedikit ini selepas empat pusingan jam. Rujuk keterangan bit WDE untuk prosedur menonaktifkan Watchdog. Bit ini juga mesti ditetapkan semasa menukar bit prescaler. Lihat "Urutan Masa untuk Mengubah Konfigurasi Pemasa Pengawas ”di halaman 43.
Bit 3 - WDE: Pengawas Diaktifkan
Apabila WDE ditulis untuk logik, Timer Pengawas diaktifkan, dan jika WDE ditulis ke logik sifar, fungsi Pemasa Pengawas dimatikan. WDE hanya dapat dihapus jika bit WDCE mempunyai tahap logik satu. Untuk mematikan Pemantau Pengawas yang diaktifkan, prosedur berikut mesti diikuti:
Dalam operasi yang sama, tulis logik untuk WDCE dan WDE. Logik mesti ditulis kepada WDE walaupun ia ditetapkan kepada satu sebelum operasi nyahdayakan dimulakan.
Dalam empat kitaran jam seterusnya, tulis logik 0 hingga WDE. Ini melumpuhkan Pengawas.
Pada tahap keselamatan 2, tidak mungkin untuk mematikan Pemantau Pengawas, walaupun dengan algoritma yang dijelaskan di atas. Lihat "Urutan Berjangka untuk Mengubah Konfigurasi Pemasa Pengawas" di halaman 43.
Di tahap keselamatan 1, WDE diganti oleh WDRF di MCUSR. Lihat “MCUSR - Daftar Status MCU” di halaman 44 untuk penerangan mengenai WDRF. Ini bermaksud bahawa WDE selalu ditetapkan semasa WDRF ditetapkan. Untuk membersihkan WDE, WDRF mesti dibersihkan sebelum melumpuhkan Pengawas dengan prosedur yang dijelaskan di atas. Ciri ini memastikan beberapa set semula semasa keadaan menyebabkan kegagalan, dan permulaan yang selamat selepas kegagalan.
Nota: Jika pemasa pengawas tidak akan digunakan dalam aplikasi, adalah penting untuk melalui prosedur nyahdaya anjing pemerhati dalam pemulaan peranti. Jika Anjing Pengawas didayakan secara tidak sengaja, contohnyaampDengan penunjuk yang melarikan diri atau keadaan brown-out, peranti akan diset semula, yang pada gilirannya akan menyebabkan tetapan semula pengawas baru. Untuk mengelakkan keadaan ini, perisian aplikasi harus selalu membersihkan bendera WDRF dan bit kawalan WDE dalam rutin permulaan.
Bits 5, 2: 0 - WDP [3: 0]: Pengawas Timer Prescaler 3, 2, 1 dan 0
Bit WDP [3: 0] menentukan pemasa Pengawas Pengawas apabila Pemasa Pengawas diaktifkan. Nilai prescaling yang berbeza dan Tempoh Timeout yang sesuai ditunjukkan dalam Jadual 8-3.
Jadual 8-3. Pilih Praskala Pemasa Pengawas
WDP3 | WDP2 | WDP1 | WDP0 | Bilangan Kitaran Pengayun WDT | Tamat Masa Biasa pada VCC = 5.0V |
0 | 0 | 0 | 0 | 2K (2048) kitaran | 16 ms |
0 | 0 | 0 | 1 | 4K (4096) kitaran | 32 ms |
0 | 0 | 1 | 0 | 8K (8192) kitaran | 64 ms |
0 | 0 | 1 | 1 | 16K (16384) kitaran | 0.125 s |
0 | 1 | 0 | 0 | 32K (32764) kitaran | 0.25 s |
0 | 1 | 0 | 1 | 64K (65536) kitaran | 0.5 s |
0 | 1 | 1 | 0 | 128K (131072) kitaran | 1.0 s |
0 | 1 | 1 | 1 | 256K (262144) kitaran | 2.0 s |
1 | 0 | 0 | 0 | 512K (524288) kitaran | 4.0 s |
1 | 0 | 0 | 1 | 1024K (1048576) kitaran | 8.0 s |
Jadual 8-3. Pilih Praskala Pemasa Pengawas (Bersambung)
WDP3 | WDP2 | WDP1 | WDP0 | Bilangan Kitaran Pengayun WDT | Tamat Masa Biasa pada VCC = 5.0V |
1 | 0 | 1 | 0 | Terpelihara(1) | |
1 | 0 | 1 | 1 | ||
1 | 1 | 0 | 0 | ||
1 | 1 | 0 | 1 | ||
1 | 1 | 1 | 0 | ||
1 | 1 | 1 | 1 |
Nota: 1. Jika dipilih, salah satu tetapan yang sah di bawah 0b1010 akan digunakan.
Mengganggu
Bahagian ini menerangkan spesifik pengendalian gangguan seperti yang dilakukan di ATtiny25 / 45/85. Untuk penjelasan umum mengenai pengendalian gangguan AVR, rujuk "Tetapkan semula dan Ganggu Pengendalian" di halaman 12.
Ganggu Vektor di ATtiny25 / 45/85
Vektor gangguan ATtiny25 / 45/85 dijelaskan dalam Jadual 9-1di bawah.
Jadual 9-1. Tetapkan Semula dan Interup Vektor
Vektor No. | Alamat Program | Sumber | Definisi Selang |
1 | 0x0000 | TETAP SEMULA | Pin Luaran, Reset Power-on, Reset Brown-out, Reset Pengawas |
2 | 0x0001 | INT0 | Permintaan Gangguan Luar 0 |
3 | 0x0002 | PCINT0 | Permintaan Ganti Pin Ganti 0 |
4 | 0x0003 | TIMER1_COMPA | Pemasa / Pembilang1 Bandingkan Padanan A |
5 | 0x0004 | TIMER1_OVF | Overflow Pemasa / Pembilang1 |
6 | 0x0005 | TIMER0_OVF | Overflow Pemasa / Pembilang0 |
7 | 0x0006 | EE_RDY | EEPROM Sedia |
8 | 0x0007 | ANA_COMP | Pembanding Analog |
9 | 0x0008 | ADC | Penukaran ADC Selesai |
10 | 0x0009 | TIMER1_COMPB | Pemasa / Pembilang1 Bandingkan Pertandingan B |
11 | 0x000A | TIMER0_COMPA | Pemasa / Pembilang0 Bandingkan Padanan A |
12 | 0x000B | TIMER0_COMPB | Pemasa / Pembilang0 Bandingkan Pertandingan B |
13 | 0x000C | WDT | Waktu Keluar Pengawas |
14 | 0x000D | USI_START | USI BERMULA |
15 | 0x000E | USI_OVF | Limpahan USI |
Sekiranya program tidak pernah membolehkan sumber gangguan, Vektor Selang tidak digunakan, dan kod program biasa dapat diletakkan di lokasi ini.
Penyediaan khas dan umum untuk alamat vektor gangguan di ATtiny25 / 45/85 ditunjukkan dalam program example di bawah.
Kod Perhimpunan Cthample | ||
.org 0x0000 | ; Tetapkan alamat seterusnya | kenyataan |
rjmp TETAP SEMULA | ; 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 | |
TETAP SEMULA: | ; Permulaan program utama | |
; Alamat 0x000F | ||
… |
Nota: Lihat "Kod Cthamples ”di halaman 6.
Gangguan Luaran
Gangguan Luaran dipicu oleh pin INT0 atau mana-mana pin PCINT [5: 0]. Perhatikan bahawa, jika diaktifkan, gangguan akan mencetuskan walaupun pin INT0 atau PCINT [5: 0] dikonfigurasikan sebagai output. Ciri ini menyediakan cara untuk menghasilkan gangguan perisian. Perubahan pin mengganggu PCI akan mencetuskan jika ada pin PIN PCINT [5: 0] yang diaktifkan. Kawalan Daftar PCMSK yang pin menyumbang kepada gangguan penukaran pin. Gangguan perubahan pin pada PCINT [5: 0] dikesan tidak segerak. Ini menunjukkan bahawa gangguan ini dapat digunakan untuk mengaktifkan bahagian juga dari mod tidur selain daripada mod Idle.
Gangguan INT0 boleh dipicu oleh kejatuhan atau kenaikan atau tahap rendah. Ini disiapkan seperti yang ditunjukkan dalam spesifikasi untuk Daftar Kawalan MCU - MCUCR. Apabila gangguan INT0 diaktifkan dan dikonfigurasikan sebagai level yang dipicu, interupsi akan memicu selagi pin dipegang rendah. Perhatikan bahawa pengiktirafan gangguan tepian jatuh atau naik pada INT0 memerlukan kehadiran jam I / O, yang dijelaskan dalam "Sistem Jam dan Pengedarannya" di muka surat 23.
Gangguan Tahap Rendah
Gangguan tahap rendah pada INT0 dikesan tidak segerak. Ini menunjukkan bahawa gangguan ini dapat digunakan untuk mengaktifkan bahagian juga dari mod tidur selain mod Idle. Jam I / O dihentikan dalam semua mod tidur kecuali mod Idle.
Ambil perhatian bahawa jika gangguan yang dicetuskan tahap digunakan untuk bangun daripada Power-down, tahap yang diperlukan mesti ditahan cukup lama untuk MCU melengkapkan bangun untuk mencetuskan gangguan tahap. Jika tahap hilang sebelum tamat Masa Permulaan, MCU masih akan bangun, tetapi tiada gangguan akan dijana. Masa permulaan ditakrifkan oleh SUT dan CKSEL Fius seperti yang diterangkan dalam "Pilihan Jam dan Jam Sistem" di halaman 23.
Sekiranya tahap rendah pada pin interupsi dikeluarkan sebelum perangkat terbangun maka pelaksanaan program tidak akan dialihkan ke rutin servis gangguan tetapi terus dari arahan yang mengikuti perintah SLEEP.
Masa Gangguan Perubahan Pin
Seorang bekasampmasa gangguan pin berubah ditunjukkan dalam Rajah 9-1.
Keterangan Daftar
MCUCR - Daftar Kawalan MCU
Daftar Kawalan Gangguan Luaran A mengandungi bit kawalan untuk kawalan rasa gangguan.
sedikit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BADAN | PUD | SE | SM1 | SM0 | BADAN | ISC01 | ISC00 | MCUCR |
Baca/Tulis | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Nilai Permulaan | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bits 1: 0 - ISC0 [1: 0]: Interrupt Sense Control 0 Bit 1 dan Bit 0
External Interrupt 0 diaktifkan oleh pin luaran INT0 jika SREG I-flag dan topeng interrupt yang sesuai ditetapkan. Tahap dan tepi pada pin INT0 luaran yang mengaktifkan gangguan ditentukan dalam Jadual 9-2. Nilai pada pin INT0 adalah sampdipimpin sebelum mengesan tepi. Sekiranya gangguan tepi atau togol dipilih, denyutan yang bertahan lebih lama daripada satu jam akan menghasilkan gangguan. Denyutan yang lebih pendek tidak dijamin akan menghasilkan gangguan. Sekiranya gangguan tahap rendah dipilih, tahap rendah mesti ditahan sehingga selesai arahan yang sedang dijalankan untuk menghasilkan gangguan.
Jadual 9-2. Gangguan 0 Kawalan Deria
ISC01 | ISC00 | Penerangan |
0 | 0 | Tahap rendah INT0 menghasilkan permintaan gangguan. |
0 | 1 | Sebarang perubahan logik pada INT0 menghasilkan permintaan gangguan. |
1 | 0 | Tepi jatuh INT0 menghasilkan permintaan gangguan. |
1 | 1 | Tepi INT0 yang meningkat menghasilkan permintaan gangguan. |
GIMSK - Daftar Topeng Gangguan Umum
sedikit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3B | – | INT0 | PCIE | – | – | – | – | – | GIMSK |
Baca/Tulis | R | R/W | R/W | R | R | R | R | R | |
Nilai Permulaan | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bits 7, 4: 0 - Res: Resits Bits
Bit ini adalah bit simpanan dalam ATtiny25 / 45/85 dan akan selalu dibaca sebagai sifar.
Bit 6 - INT0: Permintaan Gangguan Luaran 0 Aktifkan
Apabila bit INT0 ditetapkan (satu) dan I-bit dalam Daftar Status (SREG) ditetapkan (satu), gangguan luaran pin diaktifkan. Interrupt Sense Control0 bit 1/0 (ISC01 dan ISC00) dalam Daftar Kawalan MCU (MCUCR) menentukan sama ada gangguan luaran diaktifkan pada tepi naik dan / atau jatuh dari pin INT0 atau tahap yang dirasakan. Aktiviti pada pin akan menyebabkan permintaan gangguan walaupun INT0 dikonfigurasi sebagai output. Gangguan yang sesuai dari Permintaan Interupsi Eksternal 0 dilaksanakan dari Vektor Interrupt INT0.
Bit 5 - PCIE: Pin Change Interrupt Enable
Apabila bit PCIE ditetapkan (satu) dan I-bit dalam Status Register (SREG) ditetapkan (satu), interupsi perubahan pin diaktifkan. Sebarang perubahan pada pin PCINT [5: 0] yang diaktifkan akan menyebabkan gangguan. Interupsi Pin Change Interrupt Request yang sesuai dilaksanakan dari PCI Interrupt Vector. Pin PCINT [5: 0] diaktifkan secara individu oleh Daftar PCMSK0.
GIFR - Daftar Bendera Interupsi Umum
sedikit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3A | – | INTF0 | PCIF | – | – | – | – | – | GIFR |
Baca/Tulis | R | R/W | R/W | R | R | R | R | R | |
Nilai Permulaan | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bits 7, 4: 0 - Res: Resits Bits
Bit ini adalah bit simpanan dalam ATtiny25 / 45/85 dan akan selalu dibaca sebagai sifar.
Bit 6 - INTF0: Bendera Interrupt Luar 0
Apabila perubahan tepi atau logik pada pin INT0 memicu permintaan gangguan, INTF0 menjadi set (satu). Sekiranya I-bit di SREG dan bit INT0 di GIMSK ditetapkan (satu), MCU akan melompat ke Interrupt Vector yang sesuai. Bendera dikosongkan ketika rutin gangguan dijalankan. Sebagai alternatif, bendera boleh dibersihkan dengan menulis yang logik kepadanya. Bendera ini akan sentiasa dikosongkan apabila INT0 dikonfigurasi sebagai tahap gangguan.
Bit 5 - PCIF: Pin Tukar Interrupt Flag
Apabila perubahan logik pada pin PCINT [5: 0] mencetuskan permintaan gangguan, PCIF menjadi set (satu). Sekiranya bit I-SREG dan bit PCIE di GIMSK ditetapkan (satu), MCU akan melompat ke Vektor Interrupt yang sesuai. Bendera dikosongkan ketika rutin gangguan dijalankan. Sebagai alternatif, bendera boleh dibersihkan dengan menulis yang logik kepadanya.
PCMSK - Pin Change Mask Masker
sedikit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x15 | – | – | PCINT5 | PCINT4 | PCINT3 | PCINT2 | PCINT1 | PCINT0 | PCMSK |
Baca/Tulis | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Nilai Permulaan | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bits 7: 6 - Res: Reserved Bits
Bit ini adalah bit simpanan dalam ATtiny25 / 45/85 dan akan selalu dibaca sebagai sifar.
Bits 5: 0 - PCINT [5: 0]: Pin Change Enable Mask 5: 0
Setiap bit PCINT [5: 0] memilih sama ada gangguan pertukaran pin diaktifkan pada pin I / O yang sesuai. Sekiranya PCINT [5: 0] ditetapkan dan bit PCIE di GIMSK ditetapkan, gangguan perubahan pin diaktifkan pada pin I / O yang sesuai. Sekiranya PCINT [5: 0] dibersihkan, perubahan pin terganggu pada pin I / O yang sesuai akan dilumpuhkan.
Pelabuhan I/O
pengenalan
Semua port AVR mempunyai fungsi Read-Modify-Write yang benar apabila digunakan sebagai port I / O digital umum. Ini bermaksud bahawa arah satu pin port dapat diubah tanpa mengubah arah pin lain secara tidak sengaja dengan arahan SBI dan CBI. Hal yang sama berlaku ketika mengubah nilai pemacu (jika dikonfigurasi sebagai output) atau mengaktifkan / menonaktifkan resistor pull-up (jika dikonfigurasi sebagai input). Setiap penyangga output mempunyai ciri pemacu simetri dengan keupayaan sink dan sumber yang tinggi. Pemacu pin cukup kuat untuk memacu paparan LED secara langsung. Semua pin port mempunyai perintang penarik yang boleh dipilih secara individu dengan voltan bekalantage rintangan invarian. Semua pin I/O mempunyai diod perlindungan kepada kedua-dua VCC dan Ground seperti yang ditunjukkan dalam Rajah 10-1. Rujuk kepada "Karakteristik Elektrik" di halaman 161 untuk senarai lengkap parameter.
Rajah 10-1. Skema Setara Pin I/O
Semua daftar dan rujukan bit dalam bahagian ini ditulis dalam bentuk umum. Huruf kecil "x" mewakili huruf penomboran untuk port, dan huruf kecil "n" mewakili nombor bit. Walau bagaimanapun, semasa menggunakan register atau bit definisi dalam program, borang yang tepat mesti digunakan. Untuk bekasample, PORTB3 untuk bit no. 3 di Pelabuhan B, di sini didokumentasikan secara umum sebagai PORTxn. Daftar I / O fizikal dan lokasi bit disenaraikan di "Daftar Penerangan" dihidupkan muka surat 64.
Tiga lokasi alamat memori I / O diperuntukkan untuk setiap port, masing-masing untuk Data Register - PORTx, Data Direction Register - DDRx, dan Port Input Pin - PINx. Lokasi Port Input Pins I / O hanya boleh dibaca, sementara Daftar Data dan Daftar Arah Data dibaca / ditulis. Walau bagaimanapun, menulis logik sedikit demi sedikit dalam Pendaftar PINx, akan mengakibatkan pengalih pada bit yang sesuai dalam Daftar Data. Di samping itu, Pull-up Disable - PUD bit di MCUCR mematikan fungsi pull-up untuk semua pin di semua port apabila ditetapkan.
Menggunakan port I / O sebagai General Digital I / O dijelaskan dalam "Pelabuhan sebagai I / O Digital Umum" di halaman 53. Kebanyakan pin port dilipatgandakan dengan fungsi ganti untuk ciri-ciri periferal pada peranti. Bagaimana setiap fungsi gantian mengganggu dengan pin port dijelaskan dalam "Fungsi Pelabuhan Alternatif" di halaman 57. Lihat bahagian modul individu untuk penerangan lengkap mengenai fungsi gantian.
Perhatikan bahawa mengaktifkan fungsi ganti dari beberapa pin port tidak mempengaruhi penggunaan pin lain di port sebagai I / O digital am.
Pelabuhan sebagai I / O Digital Umum
Port adalah port I / O dua arah dengan pull-up dalaman pilihan. Rajah 10-2 menunjukkan penerangan fungsional satu pin port I / O, di sini secara amnya dipanggil Pxn.
Rajah 10-2. I/O Digital Am(1)
Mengkonfigurasi Pin
Setiap pin port terdiri daripada tiga bit register: DDxn, PORTxn, dan PINxn. Seperti yang ditunjukkan dalam "Daftar Penerangan" dihidupkan muka surat 64, bit DDxn diakses di alamat DDRx I / O, bit PORTxn di alamat PORTx I / O, dan bit PINxn di alamat PIN / I / O.
Bit DDxn dalam DDRx Register memilih arah pin ini. Sekiranya DDxn ditulis logik, Pxn dikonfigurasikan sebagai pin output. Sekiranya DDxn ditulis logik sifar, Pxn dikonfigurasikan sebagai pin input.
Sekiranya PORTxn ditulis logik apabila pin dikonfigurasi sebagai pin input, resistor pull-up diaktifkan. Untuk mematikan pull-up resistor, PORTxn harus ditulis logik sifar atau pin harus dikonfigurasikan sebagai pin output. Pin port dinyatakan tiga ketika keadaan reset menjadi aktif, walaupun tidak ada jam yang berjalan.
Sekiranya PORTxn ditulis logik ketika pin dikonfigurasikan sebagai pin output, pin port didorong tinggi (satu). Sekiranya PORTxn ditulis logik sifar ketika pin dikonfigurasi sebagai pin output, pin port didorong rendah (sifar).
Menukar Pin
Menulis logik untuk PINxn menukar nilai PORTxn, tidak bergantung pada nilai DDRxn. Perhatikan bahawa arahan SBI boleh digunakan untuk menukar satu bit dalam port.
Beralih Antara Input dan Output
Apabila bertukar antara keadaan tiga ({DDxn, PORTxn} = 0b00) dan keluaran tinggi ({DDxn, PORTxn} = 0b11), keadaan perantaraan dengan sama ada tarik naik didayakan {DDxn, PORTxn} = 0b01) atau output rendah ({DDxn, PORTxn} = 0b10) mesti berlaku. Biasanya, keadaan didayakan tarik naik boleh diterima sepenuhnya, kerana persekitaran berimpedan tinggi tidak akan melihat perbezaan antara pemandu tinggi yang kuat dan tarik naik. Jika ini tidak berlaku, bit PUD dalam Daftar MCUCR boleh ditetapkan untuk melumpuhkan semua tarik-up dalam semua port.
Beralih antara input dengan pull-up dan output rendah menimbulkan masalah yang sama. Pengguna mesti menggunakan samada tri- state ({DDxn, PORTxn} = 0b00) atau output tinggi ({DDxn, PORTxn} = 0b10) sebagai langkah perantaraan.
Jadual 10-1 meringkaskan isyarat kawalan untuk nilai pin.
Jadual 10-1. Konfigurasi Pin Pelabuhan
DDxn | PORTxn | PUD
(dalam MCUCR) |
I/O | Tarik ke atas | Komen |
0 | 0 | X | Input | Tidak | Tri-keadaan (Hi-Z) |
0 | 1 | 0 | Input | ya | Pxn akan sumber semasa jika ext. ditarik rendah. |
0 | 1 | 1 | Input | Tidak | Tri-keadaan (Hi-Z) |
1 | 0 | X | Keluaran | Tidak | Output Rendah (Tenggelam) |
1 | 1 | X | Keluaran | Tidak | Output Tinggi (Sumber) |
Membaca Nilai Pin
Tidak bergantung pada tetapan Data Direction bit DDxn, pin port dapat dibaca melalui bit PINxn Register. Seperti yang ditunjukkan dalam Rajah 10-2, bit PINxn Register dan kait sebelumnya membentuk penyegerak. Ini diperlukan untuk mengelakkan metastabiliti jika pin fizikal berubah nilai dekat tepi jam dalaman, tetapi juga memperkenalkan kelewatan. Rajah 10-3 menunjukkan gambar rajah pemasaan penyegerakan apabila membaca nilai pin yang digunakan secara luaran. Kelewatan penyebaran maksimum dan minimum masing-masing dilambangkan tpd, maks dan tpd, min.
Pertimbangkan tempoh jam bermula sejurus selepas pinggir jatuh pertama sistem jam. Selak ditutup ketika jam rendah, dan menjadi telus ketika jam tinggi, seperti yang ditunjukkan oleh kawasan berlorek dari sinyal "SYNC LATCH". Nilai isyarat terkunci ketika jam sistem menjadi rendah. Ia dicatatkan ke Daftar PINxn di hujung jam positif yang berjaya. Seperti yang ditunjukkan oleh dua anak panah tpd, max dan tpd, min, peralihan isyarat tunggal pada pin akan ditunda antara clock dan 1½ tempoh jam sistem bergantung pada masa penegasan.
Semasa membaca kembali perisian yang diberi nilai pin, arahan nop mesti dimasukkan seperti yang ditunjukkan dalam Rajah 10-4. Arahan keluar menetapkan isyarat "SYNC LATCH" di tepi positif jam. Dalam kes ini, kelewatan tpd melalui penyegerak adalah satu tempoh jam sistem.
Contoh kod berikutample menunjukkan cara untuk menetapkan pin port B 0 dan 1 tinggi, 2 dan 3 rendah, dan mentakrifkan pin port daripada 4 hingga 5 sebagai input dengan tarik-up diberikan kepada pin port 4. Nilai pin yang terhasil dibaca semula, tetapi seperti yang dibincangkan sebelum ini, arahan nop disertakan untuk dapat membaca kembali nilai yang diberikan baru-baru ini kepada beberapa pin.
Kod Perhimpunan Cthample(1) |
…
; Tentukan pull-up dan tetapkan output tinggi ; Tentukan arah untuk pin port ldi r16,(1<<PB4)|(1<<PB1)|(1<<PB0) ldi r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0) keluar PORTB,r16 keluar DDRB,r17 ; Masukkan nop untuk penyegerakan tidak ; Baca pin port dalam r16,PINB … |
Nota: Untuk atur cara pemasangan, dua daftar sementara digunakan untuk meminimumkan masa daripada pull-up ditetapkan pada pin 0, 1 dan 4, sehingga bit arah ditetapkan dengan betul, mentakrifkan bit 2 dan 3 sebagai rendah dan mentakrifkan semula bit 0 dan 1 sebagai pemandu tinggi yang kuat.
C Kod Cthample |
char i yang tidak ditandatangani;
… /* Tentukan pull-up dan tetapkan output tinggi */ /* Tentukan arah untuk pin port */ PORTB = (1< DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0); /* Masukkan nop untuk penyegerakan*/ _NOP (); /* Baca pin port */ i = PINB; … |
Mod Aktif dan Tidur Input Digital
Seperti yang ditunjukkan dalam Rajah 10-2, isyarat input digital boleh menjadi clamped ke tanah pada input pencetus schmitt. Isyarat yang dilambangkan TIDUR dalam rajah, ditetapkan oleh Pengawal Tidur MCU dalam mod Kurangkan kuasa untuk mengelakkan penggunaan kuasa tinggi jika beberapa isyarat input dibiarkan terapung atau mempunyai tahap isyarat analog yang hampir dengan VCC/2.
SLEEP diganti untuk pin port yang diaktifkan sebagai pin gangguan luaran. Sekiranya permintaan gangguan luaran tidak diaktifkan, SLEEP juga aktif untuk pin ini. SLEEP juga diganti oleh pelbagai fungsi alternatif lain seperti yang dijelaskan dalam "Fungsi Pelabuhan Alternatif" di halaman 57.
Jika tahap tinggi logik (“satu”) terdapat pada pin gangguan luaran tak segerak yang dikonfigurasikan sebagai “Sampukan pada Tepi Meningkat, Tepi Jatuh atau Sebarang Perubahan Logik pada Pin” semasa sampukan luaran tidak didayakan, Bendera Sampukan Luaran yang sepadan akan ditetapkan apabila menyambung semula daripada mod Tidur yang disebutkan di atas, sebagai clamppenggunaan dalam mod tidur ini menghasilkan perubahan logik yang diminta.
Pin Tidak Terhubung
Sekiranya beberapa pin tidak digunakan, disarankan untuk memastikan bahawa pin ini mempunyai tahap yang ditentukan. Walaupun sebahagian besar input digital dilumpuhkan dalam mod tidur nyenyak seperti yang dijelaskan di atas, input terapung harus dielakkan untuk mengurangkan penggunaan semasa di semua mod lain di mana input digital diaktifkan (Reset, mod Aktif dan mod Idle).
Kaedah paling mudah untuk memastikan tahap yang ditetapkan bagi pin yang tidak digunakan, adalah untuk membolehkan tarik-up dalaman. Dalam kes ini, pull-up akan dilumpuhkan semasa penetapan semula. Jika penggunaan kuasa yang rendah semasa penetapan semula adalah penting, adalah disyorkan untuk menggunakan tarik-ke atas atau tarik-turun luaran. Menyambungkan pin yang tidak digunakan terus ke VCC atau GND adalah tidak disyorkan, kerana ini boleh menyebabkan arus yang berlebihan jika pin dikonfigurasikan secara tidak sengaja sebagai output.
Fungsi Pelabuhan Alternatif
Kebanyakan pin port mempunyai fungsi ganti selain menjadi I / Os digital umum. Rajah 10-5 menunjukkan bagaimana isyarat kawalan pin port dari yang dipermudahkan Rajah 10-2 boleh diganti dengan fungsi gantian. Isyarat yang berlebihan mungkin tidak terdapat di semua pin port, tetapi gambar tersebut berfungsi sebagai penerangan umum yang berlaku untuk semua pin port dalam keluarga mikrokontroler AVR.
Jadual 10-2. Perihalan Generik Isyarat Mengatasi untuk Fungsi Ganti
Nama Isyarat | Nama Penuh | Penerangan |
PUOE | Pull-up Override Dayakan | Sekiranya isyarat ini ditetapkan, pull-up enabled dikendalikan oleh isyarat PUOV. Sekiranya isyarat ini dihapus, pull-up diaktifkan bila
{DDxn, PORTxn, PUD} = 0b010. |
PUOV | Nilai Override Pull-up | Sekiranya PUOE diatur, pull-up diaktifkan / dinyahaktifkan ketika PUOV diset / dibersihkan, tanpa mengira tetapan bit DDxn, PORTxn, dan PUD Register. |
DDOE | Pengalihan Arah Data Diaktifkan | Sekiranya isyarat ini ditetapkan, Output Driver Enable dikendalikan oleh isyarat DDOV. Sekiranya isyarat ini dibersihkan, pemacu Output diaktifkan oleh bit DDxn Register. |
DDOV | Nilai Penggantian Arah Data | Sekiranya DDOE ditetapkan, Pemacu Output diaktifkan / dinyahaktifkan ketika DDOV ditetapkan / dibersihkan, tanpa mengira tetapan bit DDxn Register. |
PVOE | Penukaran Nilai Pelabuhan Diaktifkan | Sekiranya isyarat ini ditetapkan dan Output Driver diaktifkan, nilai port dikawal oleh isyarat PVOV. Sekiranya PVOE dibersihkan, dan Pemacu Output diaktifkan, Nilai port dikendalikan oleh bit PORTxn Register. |
PVOV | Nilai Pelabuhan Nilai Pelabuhan | Sekiranya PVOE diatur, nilai port ditetapkan ke PVOV, tanpa mengira tetapan bit PORTxn Register. |
PTOE | Port Toggle Override Dayakan | Sekiranya PTOE ditetapkan, bit Daftar PORTxn terbalik. |
DIEOE | Input Digital Enable Override Enable | Sekiranya bit ini ditetapkan, Digital Input Enable dikendalikan oleh isyarat DIEOV. Sekiranya isyarat ini dibersihkan, Input Digital Enable ditentukan oleh keadaan MCU (Mod normal, mod tidur). |
DIEOV | Input Digital Membolehkan Nilai Tolak | Sekiranya DIEOE diatur, Input Digital diaktifkan / dinyahaktifkan ketika DIEOV diset / dibersihkan, tanpa mengira keadaan MCU (Mod normal, mod tidur). |
DI | Input Digital | Ini adalah Input Digital untuk fungsi gantian. Dalam gambar, isyarat disambungkan ke output pencetus schmitt tetapi sebelum penyegerak. Kecuali Input Digital digunakan sebagai sumber jam, modul dengan fungsi ganti akan menggunakan penyegeraknya sendiri. |
AIO | Input / Keluaran Analog | Ini adalah Analog Input / Output ke / dari fungsi ganti. Sinyal disambungkan terus ke pad, dan dapat digunakan dua arah. |
Subseksyen berikut akan menerangkan fungsi ganti untuk setiap port, dan mengaitkan isyarat pengganti dengan fungsi ganti. Rujuk keterangan fungsi ganti untuk keterangan lebih lanjut.
Fungsi Alternatif Pelabuhan B
Pin Port B dengan fungsi gantian ditunjukkan dalam Jadual 10-3.
Jadual 10-3. Pin Port B Fungsi Gantian
Pin Pelabuhan | Fungsi Gantian |
PB5 | ![]() RESET: Tetapkan Semula Pin dW: debugWIRE I / O ADC0: Saluran Input ADC 0 PCINT5: Pin Change Interrupt, Sumber 5 |
PB4 | XTAL2: Output Pengayun Kristal CLKO: Output Jam Sistem ADC2: Saluran Input ADC 2
OC1B: Timer / Counter1 Bandingkan Match B Output PCINT4: Pin Change Interrupt 0, Source 4 |
PB3 | XTAL1: Input Pengayun Kristal CLKI: Input Jam Luaran ADC3: Saluran Input ADC 3
OC1B: Pelengkap Pemasa / Pembilang1 Bandingkan Padanan B Output PCINT3: Pin Change Interrupt 0, Source 3 |
PB2 | SCK: Input Jam Bersiri 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, Sumber 2 |
PB1 | MISO: Input Data Master SPI / Output Data Slave AIN1: Analog Comparator, Input Negatif OC0B: Timer / Counter0 Bandingkan Match B Output OC1A: Timer / Counter1 Bandingkan Match A Output DO: USI Data Output (Mode Tiga Kawat) PCINT1: Pin Change Interrupt 0, Sumber 1 |
PB0 | MOSI :: Output Data Master SPI / Input Data Slave AIN0: Perbandingan Analog, Input Positif
OC0A: Pemasa/Counter0 Bandingkan Output Padanan A OC1A: Pelengkap Pemasa / Pembilang1 Bandingkan Padanan A Output DI: Input Data USI (Mode Tiga Kawat) SDA: Input Data USI (Mode Dua Kawat) AREF: Rujukan Analog Luar PCINT0: Pin Change Interrupt 0, Source 0 |
Port B, Bit 5 - RESET / dW / ADC0 / PCINT5
RESET: Input Reset luaran aktif rendah dan diaktifkan dengan tidak memprogram ("1") RSTDISBL Fuse. Pullup diaktifkan dan pemacu output dan input digital dinyahaktifkan apabila pin digunakan sebagai pin RESET.
dW: Apabila debugWIRE Enable (DWEN) Fuse diprogramkan dan Lock bit tidak diprogramkan, sistem debugWIRE dalam peranti sasaran diaktifkan. Pin port RESET dikonfigurasikan sebagai pin I / O dwi-arah wayar-DAN (terbuka-longkang) dengan pull-up diaktifkan dan menjadi pintu masuk komunikasi antara sasaran dan emulator.
ADC0: Penukar Analog ke Digital, Saluran 0.
PCINT5: Pin Change Interrupt sumber 5.
Port B, Bit 4 - XTAL2 / CLKO / ADC2 / OC1B / PCINT4
XTAL2: Pin Oscillator Chip Clock 2. Digunakan sebagai pin jam untuk semua sumber jam chip kecuali oscillator RC calibrateble dalaman dan jam luaran. Apabila digunakan sebagai pin jam, pin tidak dapat digunakan sebagai pin I / O. Apabila menggunakan RC Oscillator atau jam luaran yang boleh dikalibrasi dalaman sebagai sumber Chip clock, PB4 berfungsi sebagai pin I / O biasa.
CLKO: Jam sistem yang dipisahkan boleh dikeluarkan pada pin PB4. Jam sistem yang dibahagi akan dikeluarkan jika CKOUT Fuse diprogramkan, tanpa mengira tetapan PORTB4 dan DDB4. Ia juga akan dikeluarkan semasa reset.
ADC2: Penukar Analog ke Digital, Saluran 2.
OC1B: Output Bandingkan output Match: Pin PB4 dapat berfungsi sebagai output luaran untuk Timer / Counter1 Bandingkan Match B ketika dikonfigurasikan sebagai output (set DDB4). Pin OC1B juga merupakan pin output untuk fungsi pemasa mod PWM.
PCINT4: Pin Change Interrupt sumber 4.
Port B, Bit 3 - XTAL1 / CLKI / ADC3 / OC1B / PCINT3
XTAL1: Pin Oscillator Chip Clock 1. Digunakan untuk semua sumber jam chip kecuali oscillator RC calibrateble dalaman. Apabila digunakan sebagai pin jam, pin tidak dapat digunakan sebagai pin I / O.
CLKI: Input Jam dari sumber jam luaran, lihat "Jam Luar" di halaman 26.
ADC3: Penukar Analog ke Digital, Saluran 3.
OC1B: Output terbalik Bandingkan output Match: Pin PB3 dapat berfungsi sebagai output luaran untuk Timer / Counter1 Bandingkan Match B ketika dikonfigurasi sebagai output (set DDB3). Pin OC1B juga merupakan pin output terbalik untuk fungsi pemasa mod PWM.
PCINT3: Pin Change Interrupt sumber 3.
Port B, Bit 2 - SCK / ADC1 / T0 / USCK / SCL / INT0 / PCINT2
SCK: Output Jam Utama, pin input Slave Clock untuk saluran SPI. Apabila SPI diaktifkan sebagai Slave, pin ini dikonfigurasikan sebagai input tanpa mengira tetapan DDB2. Apabila SPI diaktifkan sebagai Master, arah data pin ini dikendalikan oleh DDPB2. Apabila pin dipaksa oleh SPI untuk menjadi input, pull-up masih dapat dikendalikan oleh bit PORTB2.
ADC1: Penukar Analog ke Digital, Saluran 1.
T0: Sumber pembilang Pemasa / Pembilang0.
USCK: Jam Antara Muka Serial Universal mod tiga wayar.
SCL: Mod dua wayar Jam bersiri untuk mod Dua wayar USI.
INT0: Sumber gangguan luaran 0.
PCINT2: Pin Change Interrupt sumber 2.
Port B, Bit 1 - MISO / AIN1 / OC0B / OC1A / DO / PCINT1
MISO: Input Data Master, pin output Data Slave untuk saluran SPI. Apabila SPI diaktifkan sebagai Master, pin ini dikonfigurasi sebagai input tanpa mengira tetapan DDB1. Apabila SPI diaktifkan sebagai Slave, arah data pin ini dikendalikan oleh DDB1. Apabila pin dipaksa oleh SPI untuk menjadi input, pull-up masih dapat dikendalikan oleh bit PORTB1.
AIN1: Input Negatif Perbandingan Analog. Konfigurasikan pin port sebagai input dengan pull-up dalaman dimatikan untuk mengelakkan fungsi port digital mengganggu fungsi Analog Comparator.
OC0B: Output Bandingkan output Match. Pin PB1 dapat berfungsi sebagai output luaran untuk Timer / Counter0 Bandingkan Match B. Pin PB1 harus dikonfigurasikan sebagai output (set DDB1 (satu)) untuk melayani fungsi ini. Pin OC0B juga merupakan pin output untuk fungsi pemasa mod PWM.
OC1A: Output Bandingkan output Match: Pin PB1 dapat berfungsi sebagai output luaran untuk Timer / Counter1 Bandingkan Match B ketika dikonfigurasi sebagai output (set DDB1). Pin OC1A juga merupakan pin output untuk fungsi pemasa mod PWM.
DO: Output Data Antara Muka Serial Universal mod tiga wayar. Mod tiga wayar Output data mengatasi nilai PORTB1 dan ia dibawa ke port apabila bit arah data DDB1 ditetapkan (satu). PORTB1 masih memungkinkan penarikan, jika arahnya dimasukkan dan PORTB1 diatur (satu).
PCINT1: Pin Change Interrupt sumber 1.
Port B, Bit 0 - MOSI / AIN0 / OC0A / OC1A / DI / SDA / AREF / PCINT0
MOSI: Output Data Master SPI, input Data Slave untuk saluran SPI. Apabila SPI diaktifkan sebagai Slave, pin ini dikonfigurasi sebagai input tanpa mengira tetapan DDB0. Apabila SPI diaktifkan sebagai Master, arah data pin ini dikendalikan oleh DDB0. Apabila pin dipaksa oleh SPI untuk menjadi input, pull-up masih dapat dikendalikan oleh bit PORTB0.
AIN0: Input Positif Analog Perbandingan. Konfigurasikan pin port sebagai input dengan pull-up dalaman dimatikan untuk mengelakkan fungsi port digital mengganggu fungsi Analog Comparator.
OC0A: Output Bandingkan output Match. Pin PB0 dapat berfungsi sebagai output luaran untuk Timer / Counter0 Bandingkan Match A ketika dikonfigurasi sebagai output (set DDB0 (satu)). Pin OC0A juga merupakan pin output untuk fungsi pemasa mod PWM.
OC1A: Output terbalik Membandingkan output Match: Pin PB0 dapat berfungsi sebagai output luaran untuk Timer / Counter1 Bandingkan Match B ketika dikonfigurasi sebagai output (set DDB0). Pin OC1A juga merupakan pin output terbalik untuk fungsi pemasa mod PWM.
SDA: Data Antara Muka Bersiri mod dua wayar.
AREF: Rujukan Analog Luaran untuk ADC. Pullup dan output driver dilumpuhkan pada PB0 apabila pin digunakan sebagai rujukan luaran atau Vol Internaltage Rujukan dengan kapasitor luaran pada pin AREF.
DI: Input Data dalam mod tiga wayar USI. Mod tiga wayar USI tidak mengatasi fungsi port biasa, jadi pin mesti dikonfigurasi sebagai input untuk fungsi DI.
PCINT0: Pin Change Interrupt sumber 0.
Jadual 10-4 dan Jadual 10-5 hubungkan fungsi gantian Port B dengan isyarat berlebihan yang ditunjukkan dalam Gambar 10-5 pada muka surat 58.
Jadual 10-4. Mengatasi Isyarat untuk Fungsi Ganti dalam PB[5:3]
Nama Isyarat | 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 | debugWire Transmit | 0 | 0 |
PVOE | 0 | Aktifkan OC1B | ![]() Aktifkan OC1B |
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 | TETAP SEMULA Input, Input ADC0 | Masukan ADC2 | Masukan ADC3 |
Nota: apabila Fius "0" (Diprogramkan).
Jadual 10-5. Mengatasi Isyarat untuk Fungsi Ganti dalam PB[2:0]
Nama Isyarat | 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 | Dayakan OC0B + Dayakan OC1A + USI_THREE_WIRE | ![]() Dayakan OC0A + Dayakan OC1A + (USI_TWO_WIRE DDB0) |
PVOV | 0 | OC0B + OC1A + DO | ![]() OC0A + OC1A |
PTOE | USITC | 0 | 0 |
DIEOE | PCINT2 • PCIE + ADC1D + PENGGUNAAN | PCINT1 • PCIE + AIN1D | PCINT0 • PCIE + AIN0D + PENGGUNAAN |
DIEOV | ADC1D | AIN1D | AIN0D |
DI | T0 / USCK / SCL / INT0 /
Input PCINT2 |
Input PCINT1 | Input DI / SDA / PCINT0 |
AIO | Masukan ADC1 | Input Negatif Perbandingan Analog | Input Positif Analog Perbandingan |
Keterangan Daftar
MCUCR - Daftar Kawalan MCU
sedikit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x35 | BADAN | PUD | SE | SM1 | SM0 | BADAN | ISC01 | ISC00 | MCUCR |
Baca/Tulis | R | R/W | R/W | R/W | R/W | R | R/W | R/W | |
Nilai Permulaan | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit 6 - PUD: Pull-up Disable
Apabila bit ini ditulis untuk satu, pull-up di port I / O dilumpuhkan walaupun DDxn dan PORTxn Register dikonfigurasi untuk membolehkan pull-up ({DDxn, PORTxn} = 0b01) Lihat "Mengkonfigurasi Pin" di halaman 54 untuk maklumat lebih lanjut mengenai ciri ini.
PORTB - Daftar Data Port B
sedikit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x18 | – | – | PORTB5 | PORTB4 | PORTB3 | PORTB2 | PORTB1 | PORTB0 | PORTB |
Baca/Tulis | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Nilai Permulaan | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
DDRB - Daftar Arah Data Port B
sedikit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x17 | – | – | DDB5 | DDB4 | DDB3 | DDB2 | DDB1 | DDB0 | DDRB |
Baca/Tulis | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Nilai Permulaan | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
PINB - Alamat Pin Input Port B
sedikit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x16 | – | – | PINB5 | PINB4 | PINB3 | PINB2 | PINB1 | PINB0 | PINBU |
Baca/Tulis | R | R | R/W | R/W | R/W | R/W | R/W | R/W | |
Nilai Permulaan | 0 | 0 | T/A | T/A | T/A | T/A | T/A | T/A |
Pemasa / Pembilang 8-bit0 dengan PWM
Ciri-ciri
Dua Hasil Bebas Membandingkan Unit
Keluaran Berganda Berkembar Berganda
Kosongkan Pemasa pada Perbandingan Perbandingan (Muat Semula Auto)
Modulator Lebar Pulse Betul Fasa Tidak Selesai (PWM)
Tempoh PWM yang berubah-ubah
Penjana Kekerapan
Tiga Sumber Gangguan Bebas (TOV0, OCF0A, dan OCF0B)
Berakhirview
Timer / Counter0 adalah modul Timer / Counter 8-bit tujuan umum, dengan dua Unit Perbandingan Output bebas, dan dengan sokongan PWM. Ia membolehkan masa pelaksanaan program (pengurusan acara) dan penjanaan gelombang yang tepat.
Gambarajah blok ringkas Pemasa / Kaunter 8-bit ditunjukkan dalam Rajah 11-1. Untuk penempatan pin I / O sebenar, rujuk "Pinout ATtiny25 / 45/85" di halaman 2. Register I / O yang boleh diakses CPU, termasuk bit I / O dan pin I / O, ditunjukkan dengan huruf tebal. Lokasi Daftar masuk / bit khusus peranti disenaraikan di "Keterangan Daftar" di halaman 77.
Daftar Pemasa/Kaunter (TCNT0) dan Daftar Bandingkan Output (OCR0A dan OCR0B) ialah daftar 8-bit. Isyarat permintaan gangguan (disingkatkan kepada Int.Req. dalam rajah) semuanya kelihatan dalam Daftar Bendera Gangguan Pemasa (TIFR). Semua gangguan disembunyikan secara individu dengan Daftar Topeng Gangguan Pemasa (TIMSK). TIFR dan TIMSK tidak ditunjukkan dalam rajah.
Pemasa/Pembilang boleh mencatat masa secara dalaman, melalui praskala, atau oleh sumber jam luaran pada pin T0. Blok logik Clock Select mengawal sumber jam dan tepi mana yang digunakan oleh Pemasa/Pembilang untuk menambah (atau menurunkan) nilainya. Pemasa/Kaunter tidak aktif apabila tiada sumber jam dipilih. Output daripada logik Clock Select dirujuk sebagai jam pemasa (clkT0).
Daftar Perbandingan Output buffered ganda (OCR0A dan OCR0B) dibandingkan dengan nilai Pemasa / Kaunter sepanjang masa. Hasil perbandingan dapat digunakan oleh Waveform Generator untuk menghasilkan output PWM atau frekuensi berubah pada pin Perbandingan Keluaran (OC0A dan OC0B). Lihat "Unit Perbandingan Keluaran" di halaman 69. untuk keterangan. Acara Bandingkan Padanan juga akan menetapkan Bendera Bandingkan (OCF0A atau OCF0B) yang boleh digunakan untuk menghasilkan permintaan gangguan Perbandingan Hasil.
Definisi
Banyak rujukan daftar dan bit di bahagian ini ditulis dalam bentuk umum. Huruf kecil "n" menggantikan nombor Pemasa / Pembilang, dalam kes ini 0. Huruf kecil "x" menggantikan Unit Perbandingan Keluaran, dalam kes ini Bandingkan Unit A atau Bandingkan Unit B. Walau bagaimanapun, semasa menggunakan daftar atau mentakrifkan bit dalam program, borang yang tepat mesti digunakan, iaitu, TCNT0 untuk mengakses nilai pembilang Timer / Counter0 dan sebagainya.
Definisi dalam Jadual 11-1 juga digunakan secara meluas di seluruh dokumen.
Jadual 11-1. Definisi
tetap | Penerangan |
BAWAH | Kaunter mencapai BOTOL apabila ia menjadi 0x00 |
MAX | Pembilang mencapai Maksimumnya apabila menjadi 0xFF (perpuluhan 255) |
TOP | Pembilang mencapai TOP apabila menjadi sama dengan nilai tertinggi dalam urutan kiraan. Nilai TOP boleh ditetapkan sebagai nilai tetap 0xFF (MAX) atau nilai yang disimpan dalam Daftar OCR0A. Tugasan bergantung pada mod operasi |
Pemasa Timer / Kaunter dan Sumber Jam
Pemasa / Kaunter boleh dicatat oleh sumber jam dalaman atau luaran. Sumber jam dipilih oleh logik Clock Select yang dikendalikan oleh bit Clock Select (c) yang terletak di Timer / Counter0 Control Register (TCCR0B).
Sumber Jam Dalaman dengan Prescaler
Pemasa/Counter0 boleh dijam terus oleh jam sistem (dengan menetapkan CS0[2:0] = 1). Ini menyediakan operasi terpantas, dengan kekerapan jam pemasa/kaunter maksimum sama dengan kekerapan jam sistem (fCLK_I/O). Sebagai alternatif, satu daripada empat paip daripada praskala boleh digunakan sebagai sumber jam. Jam praskala mempunyai kekerapan sama ada
Reset Prescaler
Prescaler berjalan bebas, iaitu beroperasi secara bebas dari logik Clock Select Timer / Counter0. Oleh kerana preskaler tidak dipengaruhi oleh pemilihan pemasa / jam kaunter, keadaan preskaler akan memberi implikasi untuk keadaan di mana jam prakarsa digunakan. Seorang bekasampartifak prescaling ialah apabila pemasa / pembilang diaktifkan dan dihitung oleh prescaler (6> CS0 [2: 0]> 1). Bilangan kitaran jam sistem dari ketika pemasa diaktifkan hingga kiraan pertama berlaku boleh dari 1 hingga N + 1 kitaran jam sistem, di mana N sama dengan pembahagi prescaler (8, 64, 256, atau 1024).
Adalah mungkin untuk menggunakan Prescaler Reset untuk menyegerakkan Pemasa / Penghitung untuk pelaksanaan program.
Sumber Jam Luaran
Sumber jam luaran yang digunakan pada pin T0 boleh digunakan sebagai jam pemasa/kaunter (clkT0). Pin T0 ialah sampdipimpin sekali setiap pusingan jam sistem oleh logik penyegerakan pin. Yang disegerakkanampdipimpin) isyarat kemudian dilalui
melalui pengesan tepi. Rajah 11-2 menunjukkan gambarajah blok setara berfungsi bagi penyegerakan T0 dan logik pengesan tepi. Daftar dicatatkan di tepi positif jam sistem dalaman (clkI/O). Selak telus dalam tempoh tinggi jam sistem dalaman.
Pengesan tepi menjana satu nadi clkT0 untuk setiap tepi positif (CS0[2:0] = 7) atau negatif (CS0[2:0] = 6) yang dikesannya.
Daftar OCR0x disangga dua kali ketika menggunakan mod Pulse Width Modulation (PWM) mana pun. Untuk mod operasi normal dan Clear Timer on Bandingkan (CTC), buffering berganda dilumpuhkan. Penyangga berganda menyegerakkan kemas kini OCR0x Bandingkan Register ke atas atau bawah urutan pengiraan. Penyegerakan mencegah terjadinya denyutan PWM panjang ganjil, tidak simetri, sehingga menjadikan output bebas dari gangguan.
Akses Daftar OCR0x mungkin kelihatan rumit, tetapi ini tidak berlaku. Apabila buffering berganda diaktifkan, CPU mempunyai akses ke OCR0x Buffer Register, dan jika buffering ganda dinonaktifkan maka CPU akan mengakses OCR0x secara langsung.
Force Output Bandingkan
Dalam mod penjanaan bentuk gelombang bukan PWM, output padanan komparator dapat dipaksa dengan menulis satu ke bit Force Output Bandingkan (FOC0x). Memaksa Match Match tidak akan menetapkan Bendera OCF0x atau memuat semula / kosongkan pemasa, tetapi pin OC0x akan dikemas kini seolah-olah telah berlaku Match Match yang sebenar (tetapan bit COM0x [1: 0] menentukan sama ada pin OC0x ditetapkan, dibersihkan atau togol).
Bandingkan Matching Blocking dengan TCNT0 Tulis
Semua operasi penulisan CPU ke Daftar TCNT0 akan menyekat sebarang Match Match yang berlaku pada kitaran jam pemasa seterusnya, walaupun pemasa dihentikan. Fungsi ini membolehkan OCR0x diinisialisasi dengan nilai yang sama dengan TCNT0 tanpa mencetuskan gangguan ketika jam Pemasa / Pembilang diaktifkan.
Menggunakan Unit Perbandingan Keluaran
Oleh kerana menulis TCNT0 dalam mod operasi apa pun akan menyekat semua Bandingkan Pertandingan untuk satu pusingan jam pemasa, ada risiko yang terlibat ketika mengubah TCNT0 ketika menggunakan Output Bandingkan Unit, tidak kira sama ada Pemasa / Kaunter berjalan atau tidak. Sekiranya nilai yang ditulis ke TCNT0 sama dengan nilai OCR0x, Match Match akan terlepas, menghasilkan penjanaan bentuk gelombang yang salah. Begitu juga, jangan tulis nilai TCNT0 sama dengan BOTTOM semasa pembilang dikira.
Penyediaan OC0x harus dilakukan sebelum menetapkan Data Direction Register untuk pin port ke output. Kaedah termudah untuk menetapkan nilai OC0x adalah dengan menggunakan bit strob Force Output Bandingkan (FOC0x) dalam mod Normal. Pendaftar OC0x mengekalkan nilai mereka walaupun bertukar antara mod Generasi Gelombang.
Ketahuilah bahawa bit COM0x [1: 0] tidak disangga dua kali dengan nilai perbandingan. Mengubah bit COM0x [1: 0] akan berlaku serta merta.
Bandingkan Unit Hasil Padanan
Bit mod Output Bandingkan (COM0x [1: 0]) mempunyai dua fungsi. Penjana Gelombang menggunakan bit COM0x [1: 0] untuk menentukan keadaan Perbandingan Output (OC0x) pada Match Match seterusnya. Juga, bit COM0x [1: 0] mengawal sumber output pin OC0x. Rajah 11-6 menunjukkan skema logik yang dipermudahkan yang dipengaruhi oleh tetapan bit COM0x [1: 0] Daftar I / O, bit I / O, dan pin I / O dalam gambar ditunjukkan dengan huruf tebal. Hanya bahagian Daftar Kawalan Pelabuhan I / O umum (DDR dan PORT) yang dipengaruhi oleh bit COM0x [1: 0] yang ditunjukkan. Apabila merujuk kepada keadaan OC0x, rujukannya adalah untuk Daftar OC0x dalaman, bukan pin OC0x. Sekiranya tetapan semula sistem berlaku, Daftar OC0x diset semula ke "0".
Apabila OC0A / OC0B disambungkan ke pin I / O, fungsi bit COM0A [1: 0] / COM0B [1: 0] bergantung pada tetapan bit WGM0 [2: 0]. Jadual 11-2 menunjukkan fungsi bit COM0x [1: 0] apabila bit WGM0 [2: 0] ditetapkan ke mod normal atau CTC (bukan PWM).
Jadual 11-2. Bandingkan Mod Output, Mod bukan PWM
COM0A1 COM0B1 | COM0A0 COM0B0 | Penerangan |
0 | 0 | Operasi port biasa, OC0A / OC0B terputus. |
0 | 1 | Togol OC0A / OC0B pada Bandingkan Padanan |
1 | 0 | Kosongkan OC0A / OC0B pada Match Match |
1 | 1 | Tetapkan OC0A / OC0B pada Match Match |
Jadual 11-3 menunjukkan fungsi bit COM0x [1: 0] apabila bit WGM0 [2: 0] ditetapkan ke mod PWM pantas.
Jadual 11-3. Bandingkan Mod Output, Mod PWM Pantas(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | Penerangan |
0 | 0 | Operasi port biasa, OC0A / OC0B terputus. |
0 | 1 | Terpelihara |
1 | 0 | Kosongkan OC0A / OC0B pada Match Match, tetapkan OC0A / OC0B di BOTTOM (mod bukan pembalik) |
1 | 1 | Tetapkan OC0A / OC0B pada Bandingkan Padanan, kosongkan OC0A / OC0B di BOTTOM (mod terbalik) |
Nota: Kes khas berlaku apabila OCR0A atau OCR0B bersamaan dengan TOP dan COM0A1/COM0B1 ditetapkan. Dalam kes ini, padanan bandingan diabaikan, tetapi set atau jelas dilakukan di BAWAH. Lihat "Mod PWM Cepat" di halaman 73 untuk maklumat lanjut.
Jadual 11-4 menunjukkan fungsi bit COM0x [1: 0] apabila bit WGM0 [2: 0] ditetapkan ke mod PWM yang betul fasa.
Jadual 11-4. Bandingkan Mod Output, Mod PWM Fasa Betul(1)
COM0A1 COM0B1 | COM0A0 COM0B0 | Penerangan |
0 | 0 | Operasi port biasa, OC0A / OC0B terputus. |
0 | 1 | Terpelihara |
1 | 0 | Kosongkan OC0A / OC0B pada Bandingkan Padanan ketika mengira. Tetapkan OC0A / OC0B pada Bandingkan Padanan ketika membilang. |
1 | 1 | Tetapkan OC0A / OC0B pada Bandingkan Padanan semasa mengira. Kosongkan OC0A / OC0B pada Bandingkan Padanan ketika membilang. |
Nota: 1. Kes khas berlaku apabila OCR0A atau OCR0B bersamaan dengan TOP dan COM0A1/COM0B1 ditetapkan. Dalam kes ini, Compare Match diabaikan, tetapi set atau clear dilakukan di TOP. Lihat "Mod PWM Betul Fasa" di halaman 74 untuk maklumat lanjut.
Bits 3: 2 - Res: Reserved Bits
Bit ini adalah bit simpanan dalam ATtiny25 / 45/85 dan akan selalu dibaca sebagai sifar.
Bits 1: 0 - WGM0 [1: 0]: Mod Penjanaan Bentuk Gelombang
Digabungkan dengan bit WGM02 yang terdapat dalam Daftar TCCR0B, bit ini mengawal urutan pengiraan pembilang, sumber untuk nilai kaunter maksimum (TOP), dan jenis penjanaan bentuk gelombang yang akan digunakan, lihat Jadual 11-5. Mod operasi yang disokong oleh unit Timer / Counter adalah: Mod normal (penghitung), Clear Timer pada mod Bandingkan Padanan (CTC), dan dua jenis mod Pulse Width Modulation (PWM) (lihat "Kaedah Operasi" di muka surat 71).
Jadual 11-5. Perihalan Bit Mod Penjanaan Gelombang
Mod | WGM 02 | WGM 01 | WGM 00 | Mod Operasi Pemasa / Kaunter | TOP | Kemas kini OCRx di | Bendera TOV dihidupkan |
0 | 0 | 0 | 0 | Biasalah | 0xFF | serta merta | MAX(1) |
1 | 0 | 0 | 1 | PWM, Fasa Betul | 0xFF | TOP | BAWAH(2) |
2 | 0 | 1 | 0 | CTC | OCRA | serta merta | MAX(1) |
3 | 0 | 1 | 1 | PWM pantas | 0xFF | BAWAH(2) | MAX(1) |
4 | 1 | 0 | 0 | Terpelihara | – | – | – |
5 | 1 | 0 | 1 | PWM, Fasa Betul | OCRA | TOP | BAWAH(2) |
6 | 1 | 1 | 0 | Terpelihara | – | – | – |
7 | 1 | 1 | 1 | PWM pantas | OCRA | BAWAH(2) | TOP |
Bit 7 - FOC0A: Output Paksa Bandingkan A
Bit FOC0A hanya aktif apabila bit WGM menentukan mod bukan PWM.
Walau bagaimanapun, untuk memastikan keserasian dengan peranti masa depan, bit ini mesti ditetapkan ke sifar ketika TCCR0B ditulis semasa beroperasi dalam mod PWM. Semasa menulis bit logik ke bit FOC0A, Match Match segera dipaksa pada unit Generasi Gelombang. Output OC0A diubah mengikut tetapan bit COM0A [1: 0]. Perhatikan bahawa bit FOC0A dilaksanakan sebagai strobe. Oleh itu, inilah nilai yang terdapat dalam bit COM0A [1: 0] yang menentukan kesan perbandingan paksa.
Strobe FOC0A tidak akan menghasilkan gangguan, dan juga tidak akan membersihkan pemasa dalam mod CTC menggunakan OCR0A sebagai TOP. Bit FOC0A selalu dibaca sebagai sifar.
Bit 6 - FOC0B: Bandingkan Output Paksa B
Bit FOC0B hanya aktif apabila bit WGM menentukan mod bukan PWM.
Walau bagaimanapun, untuk memastikan keserasian dengan peranti masa depan, bit ini mesti ditetapkan ke sifar ketika TCCR0B ditulis ketika beroperasi dalam mod PWM. Semasa menulis yang logik ke bit FOC0B, Match Match segera dipaksa pada unit Generasi Gelombang. Output OC0B diubah mengikut tetapan bit COM0B [1: 0]. Perhatikan bahawa bit FOC0B dilaksanakan sebagai strob. Oleh itu, nilai yang terdapat dalam bit COM0B [1: 0] yang menentukan kesan perbandingan terpaksa.
Strobe FOC0B tidak akan menghasilkan gangguan, dan juga tidak akan membersihkan pemasa dalam mod CTC menggunakan OCR0B sebagai TOP.
Bit FOC0B selalu dibaca sebagai sifar.
Bits 5: 4 - Res: Reserved Bits
Bit ini adalah bit simpanan dalam ATtiny25 / 45/85 dan akan selalu dibaca sebagai sifar.
Bit 3 - WGM02: Mod Penjanaan Bentuk Gelombang
Lihat keterangan di “TCCR0A - Daftar Pemasa / Kaunter Daftar A” di halaman 77.
Bits 2: 0 - CS0 [2: 0]: Pilih Jam
Ketiga bit Pilih Jam memilih sumber jam yang akan digunakan oleh Pemasa / Kaunter.
Jadual 11-6. Perihalan Bit Pilih Jam
CS02 | CS01 | CS00 | Penerangan |
0 | 0 | 0 | Tiada sumber jam (Pemasa / Kaunter dihentikan) |
0 | 0 | 1 | clkI/O/(Tiada prascaling) |
0 | 1 | 0 | clkI/O/8 (Daripada praskala) |
0 | 1 | 1 | clkI/O/64 (Daripada praskala) |
1 | 0 | 0 | clkI/O/256 (Daripada praskala) |
1 | 0 | 1 | clkI/O/1024 (Daripada praskala) |
1 | 1 | 0 | Sumber jam luaran pada pin T0. Jam di tepi jatuh. |
1 | 1 | 1 | Sumber jam luaran pada pin T0. Jam di tepi yang semakin meningkat. |
Sekiranya mod pin luaran digunakan untuk Timer / Counter0, peralihan pada pin T0 akan mengarahkan penghitung walaupun pin dikonfigurasi sebagai output. Ciri ini membolehkan perisian mengawal pengiraan.
Kaunter dan Bandingkan Unit
Operasi umum Timer / Counter1 dijelaskan dalam mod asinkron dan operasi dalam mod segerak disebutkan hanya jika terdapat perbezaan antara kedua-dua mod ini. Rajah 12-2 menunjukkan rajah blok daftar penyegerakan Pemasa / Kaunter 1 dan kelewatan penyegerakan di antara daftar. Perhatikan bahawa semua butiran pengisian jam tidak ditunjukkan dalam gambar. Nilai register Timer / Counter1 melalui daftar penyegerakan dalaman, yang menyebabkan kelewatan penyegerakan input, sebelum mempengaruhi operasi pembilang. Daftar TCCR1, GTCCR, OCR1A, OCR1B, dan OCR1C dapat dibaca semula setelah menulis daftar. Nilai baca balik ditunda untuk daftar dan bendera Timer / Counter1 (TCNT1) (OCF1A, OCF1B, dan TOV1), kerana penyegerakan input dan output.
Timer / Counter1 menampilkan resolusi tinggi dan penggunaan ketepatan tinggi dengan peluang prescaling yang lebih rendah. Ia juga dapat menyokong dua modulator Pulse Width Width yang tepat, berkelajuan tinggi, 8-bit menggunakan kelajuan jam hingga 64 MHz (atau 32 MHz dalam Mode Kelajuan Rendah). Dalam mod ini, Timer / Counter1 dan register membandingkan output berfungsi sebagai PWM dual berdiri sendiri dengan output tidak bertindih dan tidak terbalik. Rujuk kepada muka surat 86 untuk penerangan terperinci mengenai fungsi ini. Begitu juga, peluang prescaling tinggi menjadikan unit ini berguna untuk fungsi kelajuan rendah atau fungsi timing tepat dengan tindakan yang jarang dilakukan.
Rajah 12-2. Gambarajah Blok Daftar Penyegerakan Pemasa/Kaunter 1.
Timer / Counter1 dan prescaler membolehkan menjalankan CPU dari mana-mana sumber jam sementara prescaler beroperasi pada jam PCK 64 MHz (atau 32 MHz dalam Mode Berkelajuan Rendah) yang pantas dalam mod tidak segerak.
Perhatikan bahawa frekuensi jam sistem mestilah lebih rendah daripada satu pertiga daripada frekuensi PCK. Mekanisme penyegerakan Pemasa / Kaunter tidak segerak1 memerlukan sekurang-kurangnya dua tepi PCK apabila jam sistem tinggi. Sekiranya frekuensi jam sistem terlalu tinggi, risiko data atau kawalan akan hilang.
berikut Rajah 12-3 menunjukkan gambarajah blok untuk Pemasa / Pembilang1.
Jadual 12-1. Bandingkan Mod Pilih dalam Mod PWM
COM1x1 | COM1x0 | Kesan pada Output Bandingkan Pin |
0 | 0 | OC1x tidak disambungkan. OC1x tidak disambungkan. |
0 | 1 | OC1x dibersihkan pada pertandingan perbandingan. Tetapkan bilaTCNT1 = $ 00. OC1x ditetapkan pada pertandingan perbandingan. Dibersihkan apabila TCNT1 = $ 00. |
1 | 0 | OC1x dibersihkan pada pertandingan perbandingan. Tetapkan apabila TCNT1 = $ 00. OC1x tidak disambungkan. |
1 | 1 | OC1x Tetapkan pada pertandingan perbandingan. Dibersihkan apabila TCNT1 = $ 00. OC1x tidak disambungkan. |
Ciri-ciri ADC
Jadual 21-8. Ciri-ciri ADC, Saluran Berakhir Tunggal. TA = -40°C hingga +85°C
Simbol | Parameter | keadaan | Min | Taip | Maks | Unit |
Resolusi | 10 | bit | ||||
Ketepatan mutlak (Termasuk INL, DNL, dan Quantization, Gain dan Offset error) | 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 Mod Pengurangan Bunyi |
1.5 | LSB | ||||
VREF = 4V, VCC = 4V,
Jam ADC = 1 MHz Mod Pengurangan Bunyi |
2.5 | LSB | ||||
Integral Non-linearity (INL) (Ketepatan selepas mengimbangi dan memperoleh penentukuran) | VREF = 4V, VCC = 4V,
Jam ADC = 200 kHz |
1 | LSB | |||
Pembezaan Tidak Linear (DNL) | VREF = 4V, VCC = 4V,
Jam ADC = 200 kHz |
0.5 | LSB | |||
Ralat Perolehan | VREF = 4V, VCC = 4V,
Jam ADC = 200 kHz |
2.5 | LSB | |||
Ralat mengimbangi | VREF = 4V, VCC = 4V,
Jam ADC = 200 kHz |
1.5 | LSB | |||
Masa Penukaran | Penukaran Berjalan Percuma | 14 | 280 | µs | ||
Kekerapan Jam | 50 | 1000 | kHz | |||
VIN | Input Voltage | GND | VREF | V | ||
Lebar Jalur Input | 38.4 | kHz | ||||
AREF | Rujukan Luaran Voltage | 2.0 | VCC | V | ||
VINT | Vol Dalamantage Rujukan | 1.0 | 1.1 | 1.2 | V | |
Rujukan 2.56V Dalaman (1) | VCC > 3.0V | 2.3 | 2.56 | 2.8 | V | |
RREF | 32 | kΩ | ||||
HUJAN | Rintangan Input Analog | 100 | MΩ | |||
Keluaran ADC | 0 | 1023 | LSB |
Nota: 1. Nilai adalah garis panduan sahaja.
Jadual 21-9. Ciri-ciri ADC, Saluran Berbeza (Mod Unipolar). TA = -40°C hingga +85°C
Simbol | Parameter | keadaan | Min | Taip | Maks | Unit |
Resolusi | Keuntungan = 1x | 10 | bit | |||
Keuntungan = 20x | 10 | bit | ||||
Ketepatan mutlak (Termasuk INL, DNL, dan
Kesalahan Kuantisasi, Keuntungan dan Pengimbangan) |
Keuntungan = 1x
VREF = 4V, VCC = 5V Jam ADC = 50 - 200 kHz |
10.0 | LSB | |||
Keuntungan = 20x
VREF = 4V, VCC = 5V Jam ADC = 50 - 200 kHz |
20.0 | LSB | ||||
Integral Non-Linearity (INL) (Ketepatan selepas Offset dan Penentukuran Keuntungan) | Keuntungan = 1x
VREF = 4V, VCC = 5V Jam ADC = 50 - 200 kHz |
4.0 | LSB | |||
Keuntungan = 20x
VREF = 4V, VCC = 5V Jam ADC = 50 - 200 kHz |
10.0 | LSB | ||||
Ralat Perolehan | Keuntungan = 1x | 10.0 | LSB | |||
Keuntungan = 20x | 15.0 | LSB | ||||
Ralat mengimbangi | Keuntungan = 1x
VREF = 4V, VCC = 5V Jam ADC = 50 - 200 kHz |
3.0 | LSB | |||
Keuntungan = 20x
VREF = 4V, VCC = 5V Jam ADC = 50 - 200 kHz |
4.0 | LSB | ||||
Masa Penukaran | Penukaran Berjalan Percuma | 70 | 280 | µs | ||
Kekerapan Jam | 50 | 200 | kHz | |||
VIN | Input Voltage | GND | VCC | V | ||
VDIFF | Input Pembezaan Voltage | VREF/Keuntungan | V | |||
Lebar Jalur Input | 4 | kHz | ||||
AREF | Rujukan Luaran Voltage | 2.0 | VCC – 1.0 | V | ||
VINT | Vol Dalamantage Rujukan | 1.0 | 1.1 | 1.2 | V | |
Rujukan 2.56V Dalaman (1) | VCC > 3.0V | 2.3 | 2.56 | 2.8 | V | |
RREF | Rintangan Input Rujukan | 32 | kΩ | |||
HUJAN | Rintangan Input Analog | 100 | MΩ | |||
Keluaran Penukaran ADC | 0 | 1023 | LSB |
Nota: Nilai adalah garis panduan sahaja.
Jadual 21-10. Ciri ADC, Saluran Berbeza (Mod Bipolar). TA = -40°C hingga +85°C
Simbol | Parameter | keadaan | Min | Taip | Maks | Unit |
Resolusi | Keuntungan = 1x | 10 | bit | |||
Keuntungan = 20x | 10 | bit | ||||
Ketepatan mutlak (Termasuk INL, DNL, dan
Kesalahan Kuantisasi, Keuntungan dan Pengimbangan) |
Keuntungan = 1x
VREF = 4V, VCC = 5V Jam ADC = 50 - 200 kHz |
8.0 | LSB | |||
Keuntungan = 20x
VREF = 4V, VCC = 5V Jam ADC = 50 - 200 kHz |
8.0 | LSB | ||||
Integral Non-Linearity (INL) (Ketepatan selepas Offset dan Penentukuran Keuntungan) | Keuntungan = 1x
VREF = 4V, VCC = 5V Jam ADC = 50 - 200 kHz |
4.0 | LSB | |||
Keuntungan = 20x
VREF = 4V, VCC = 5V Jam ADC = 50 - 200 kHz |
5.0 | LSB | ||||
Ralat Perolehan | Keuntungan = 1x | 4.0 | LSB | |||
Keuntungan = 20x | 5.0 | LSB | ||||
Ralat mengimbangi | Keuntungan = 1x
VREF = 4V, VCC = 5V Jam ADC = 50 - 200 kHz |
3.0 | LSB | |||
Keuntungan = 20x
VREF = 4V, VCC = 5V Jam ADC = 50 - 200 kHz |
4.0 | LSB | ||||
Masa Penukaran | Penukaran Berjalan Percuma | 70 | 280 | µs | ||
Kekerapan Jam | 50 | 200 | kHz | |||
VIN | Input Voltage | GND | VCC | V | ||
VDIFF | Input Pembezaan Voltage | VREF/Keuntungan | V | |||
Lebar Jalur Input | 4 | kHz | ||||
AREF | Rujukan Luaran Voltage | 2.0 | VCC – 1.0 | V | ||
VINT | Vol Dalamantage Rujukan | 1.0 | 1.1 | 1.2 | V | |
Rujukan 2.56V Dalaman (1) | VCC > 3.0V | 2.3 | 2.56 | 2.8 | V | |
RREF | Rintangan Input Rujukan | 32 | kΩ | |||
HUJAN | Rintangan Input Analog | 100 | MΩ | |||
Keluaran Penukaran ADC | -512 | 511 | LSB |
Ringkasan Set Arahan
Mnemonik | Operan | Penerangan | Operasi | Bendera | #Kunci |
ARAHAN ARITHMETIK DAN LOGIK | |||||
TAMBAH | Rd, Rr | Tambah dua Daftar | Rd ← Rd + Rr | Z, C, N, V, H | 1 |
ADC | Rd, Rr | Tambah dengan Carry two Register | Rd ← Rd + Rr + C | Z, C, N, V, H | 1 |
ADIW | Rdl, K | Tambah Segera ke Word | Rdh:Rdl ← Rdh:Rdl + K | Z, C, N, V, S | 2 |
SUB | Rd, Rr | Kurangkan dua Daftar | Rd ← Rd – Rr | Z, C, N, V, H | 1 |
SAYA NAIK | Jalan, K | Kurangkan Pemalar dari Daftar | Rd ← Rd – K | Z, C, N, V, H | 1 |
SBC | Rd, Rr | Kurangkan dengan Carry dua Daftar | Rd ← Rd – Rr – C | Z, C, N, V, H | 1 |
SBCI | Jalan, K | Kurangkan dengan Carry Constant dari Reg. | Rd ← Rd – K – C | Z, C, N, V, H | 1 |
SBIW | Rdl, K | Kurangkan Segera dari Word | Rdh:Rdl ← Rdh:Rdl – K | Z, C, N, V, S | 2 |
DAN | Rd, Rr | Logik DAN Daftar | Rd ← Rd ∙ Rr | Z, N, V | 1 |
ANDI | Jalan, K | Logik DAN Daftar dan Tetap | Rd ← Rd ∙ K | Z, N, V | 1 |
OR | Rd, Rr | Logik ATAU Daftar | Rd ← Rd v Rr | Z, N, V | 1 |
ORI | Jalan, K | Logik ATAU Daftar dan Tetap | Rd ← Rd v K | Z, N, V | 1 |
EOR | Rd, Rr | Daftar Eksklusif ATAU | Rd ← Rd ⊕ Rr | Z, N, V | 1 |
COM | Rd | Pelengkap Satu | Rd ← 0xFF − Rd | Z, C, N, V | 1 |
NEG | Rd | Pelengkap Dua | Rd ← 0x00 − Rd | Z, C, N, V, H | 1 |
SBR | Rd, K | Tetapkan Bit dalam Daftar | Rd ← Rd v K | Z, N, V | 1 |
CBR | Rd, K | Kosongkan Bit dalam Daftar | Rd ← Rd ∙ (0xFF – K) | Z, N, V | 1 |
INC | Rd | Kenaikan | Rd ← Rd + 1 | Z, N, V | 1 |
DIS | Rd | Penurunan | Rd ← Rd − 1 | Z, N, V | 1 |
TST | Rd | Uji Zero atau Minus | Rd ← Rd ∙ Rd | Z, N, V | 1 |
CLR | Rd | Kosongkan Daftar | Rd ← Rd ⊕ Rd | Z, N, V | 1 |
SER | Rd | Tetapkan Daftar | Rd ← 0xFF | tiada | 1 |
ARAHAN CAWANGAN | |||||
RJMP | k | Lompatan Relatif | PC ← PC + k + 1 | tiada | 2 |
IJMP | Langsung Tidak Langsung ke (Z) | PC ← Z | tiada | 2 | |
RCALL | k | Panggilan Subrutin Relatif | PC ← PC + k + 1 | tiada | 3 |
PANGGILAN | Panggilan Tidak Langsung ke (Z) | PC ← Z | tiada | 3 | |
RET | Pemulangan Subrutin | PC ← TIMBANAN | tiada | 4 | |
RETI | Mengganggu Pulangan | PC ← TIMBANAN | I | 4 | |
CPSE | Rd, Rr | Bandingkan, Langkau jika Sama | jika (Rd = Rr) PC ← PC + 2 atau 3 | tiada | 1/2/3 |
CP | Rd, Rr | Bandingkan | Rd − Rr | Z, N, V, C, H | 1 |
CPC | Rd, Rr | Bandingkan dengan Carry | Rd − Rr − C | Z, N, V, C, H | 1 |
CPI | Rd, K | Bandingkan Daftar dengan Segera | Rd − K | Z, N, V, C, H | 1 |
SBRC | Rr, b | Langkau jika Bit dalam Daftar Dihapus | jika (Rr(b)=0) PC ← PC + 2 atau 3 | tiada | 1/2/3 |
SBRS | Rr, b | Langkau jika Bit dalam Daftar Ditetapkan | jika (Rr(b)=1) PC ← PC + 2 atau 3 | tiada | 1/2/3 |
SBIC | P, b | Langkau jika Daftar Bit I / O Dihapus | jika (P(b)=0) PC ← PC + 2 atau 3 | tiada | 1/2/3 |
SBIS | P, b | Langkau jika Bit In I / O Register ditetapkan | jika (P(b)=1) PC ← PC + 2 atau 3 | tiada | 1/2/3 |
BRBS | s, k | Cabang jika Bendera Status Tetapkan | jika (SREG(s) = 1) maka PC←PC+k + 1 | tiada | 1/2 |
BRBC | s, k | Cawangan jika Bendera Status Dihapus | jika (SREG(s) = 0) maka PC←PC+k + 1 | tiada | 1/2 |
BREQ | k | Cabang jika Sama | jika (Z = 1) maka PC ← PC + k + 1 | tiada | 1/2 |
BRNE | k | Cabang jika Tidak Sama | jika (Z = 0) maka PC ← PC + k + 1 | tiada | 1/2 |
BRCS | k | Cabang jika Carry Set | jika (C = 1) maka PC ← PC + k + 1 | tiada | 1/2 |
BRCC | k | Cawangan jika Carry Cleared | jika (C = 0) maka PC ← PC + k + 1 | tiada | 1/2 |
BRSH | k | Cawangan jika Sama atau Lebih Tinggi | jika (C = 0) maka PC ← PC + k + 1 | tiada | 1/2 |
BRLO | k | Cabang jika Rendah | jika (C = 1) maka PC ← PC + k + 1 | tiada | 1/2 |
BRMI | k | Cabang jika tolak | jika (N = 1) maka PC ← PC + k + 1 | tiada | 1/2 |
BRPL | k | Cabang jika Plus | jika (N = 0) maka PC ← PC + k + 1 | tiada | 1/2 |
BRGE | k | Cabang jika Lebih Besar atau Sama, Ditandatangani | jika (N ⊕ V= 0) maka PC ← PC + k + 1 | tiada | 1/2 |
BRLT | k | Cabang jika Kurang Dari Sifar, Ditandatangani | jika (N ⊕ V= 1) maka PC ← PC + k + 1 | tiada | 1/2 |
BRHS | k | Cabang jika Set Separuh Carry Flag | jika (H = 1) maka PC ← PC + k + 1 | tiada | 1/2 |
BRHC | k | Cabang jika Bendera Separuh Carry Dihapus | jika (H = 0) maka PC ← PC + k + 1 | tiada | 1/2 |
BRTS | k | Cabang jika Bendera T Tetapkan | jika (T = 1) maka PC ← PC + k + 1 | tiada | 1/2 |
BRTC | k | Cabang jika Bendera T Dihapus | jika (T = 0) maka PC ← PC + k + 1 | tiada | 1/2 |
BRVS | k | Cabang jika Bendera Limpahan Ditetapkan | jika (V = 1) maka PC ← PC + k + 1 | tiada | 1/2 |
BRVC | k | Cabang jika Bendera Limpahan Dihapus | jika (V = 0) maka PC ← PC + k + 1 | tiada | 1/2 |
RINGKAS | k | Cawangan jika Gangguan Diaktifkan | jika ( I = 1) maka PC ← PC + k + 1 | tiada | 1/2 |
JERAWAT | k | Cabang jika Gangguan Tidak Berupaya | jika ( I = 0) maka PC ← PC + k + 1 | tiada | 1/2 |
ARAHAN UJIAN BIT DAN BIT | |||||
SBI | P, b | Tetapkan Bit dalam Daftar I / O | I/O(P,b) ← 1 | tiada | 2 |
CBI | P, b | Clear Bit dalam Daftar I / O | I/O(P,b) ← 0 | tiada | 2 |
LSL | Rd | Anjakan Logik ke Kiri | Rd(n+1) ← Rd(n), Rd(0) ← 0 | Z, C, N, V | 1 |
LSR | Rd | Anjakan Logik ke Kanan | Rd(n) ← Rd(n+1), Rd(7) ← 0 | Z, C, N, V | 1 |
PERANAN | Rd | Putar Kiri Melalui Carry | Rd(0)←C,Rd(n+1)← Rd(n),C←Rd(7) | Z, C, N, V | 1 |
ROR | Rd | Putar Kanan Melalui Carry | Rd(7)←C,Rd(n)← Rd(n+1),C←Rd(0) | Z, C, N, V | 1 |
ASR | Rd | Pergeseran Aritmetik ke Kanan | Rd(n) ← Rd(n+1), n=0..6 | Z, C, N, V | 1 |
Mnemonik | Operan | Penerangan | Operasi | Bendera | #Kunci |
SWAP | Rd | Tukar Nibbles | Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) | tiada | 1 |
BSET | s | Set Bendera | SREG ← 1 | SREG | 1 |
BCLR | s | Bendera Bersih | SREG ← 0 | SREG | 1 |
BST | Rr, b | Kedai Bit dari Daftar ke T | T ← Rr(b) | T | 1 |
BLD | Rd, b | Beban bit dari T ke Daftar | Rd(b) ← T | tiada | 1 |
SEK | Tetapkan Carry | C ← 1 | C | 1 | |
CLC | Jelas Carry | C ← 0 | C | 1 | |
SEN | Tetapkan Bendera Negatif | N ← 1 | N | 1 | |
CLN | Bendera Negatif yang jelas | N ← 0 | N | 1 | |
SEZ | Tetapkan Bendera Sifar | Z ← 1 | Z | 1 | |
CLZ | Kosongkan Bendera Sifar | Z ← 0 | Z | 1 | |
SEI | Global Interrupt Enable | Saya ← 1 | I | 1 | |
CLI | Melumpuhkan Gangguan Global | Saya ← 0 | I | 1 | |
SES | Tetapkan Bendera Ujian yang Ditandatangani | S ← 1 | S | 1 | |
CLS | Bendera Ujian Bertanda Jelas | S ← 0 | S | 1 | |
SEV | Tetapkan Overflow Pelengkap Twos. | V ← 1 | V | 1 | |
CLV | Limpahan Pelengkap Clear Twos | V ← 0 | V | 1 | |
SET | Tetapkan T di SREG | T ← 1 | T | 1 | |
CLT | Kosongkan T di SREG | T ← 0 | T | 1 | |
SEH | Tetapkan Bendera Half Carry di SREG | H ← 1 | H | 1 | |
CLH | Kosongkan Bendera Half Carry di SREG | H ← 0 | H | 1 | |
ARAHAN PEMINDAHAN DATA | |||||
MOV | Rd, Rr | Berpindah Di antara Daftar | Rd ← Rr | tiada | 1 |
MOVW | Rd, Rr | Salin Word Daftar | Rd+1:Rd ← Rr+1:Rr | tiada | 1 |
LDI | Jalan, K | Muat Segera | Jalan ← K | tiada | 1 |
LD | Jalan, X | Beban Tidak Langsung | Rd ← (X) | tiada | 2 |
LD | Rd, X + | Muatkan Indirect dan Post-Inc | Rd ← (X), X ← X + 1 | tiada | 2 |
LD | Rd, - X | Muatkan Tidak Langsung dan Pra-Dis. | X ← X – 1, Rd ← (X) | tiada | 2 |
LD | Rd, Y | Beban Tidak Langsung | Rd ← (Y) | tiada | 2 |
LD | Rd, Y + | Muatkan Indirect dan Post-Inc | Rd ← (Y), Y ← Y + 1 | tiada | 2 |
LD | Rd, - Y | Muatkan Tidak Langsung dan Pra-Dis. | Y ← Y – 1, Rd ← (Y) | tiada | 2 |
LDD | Rd, Y + q | Beban Tidak Langsung dengan Perpindahan | Rd ← (Y + q) | tiada | 2 |
LD | Jalan, Z | Beban Tidak Langsung | Rd ← (Z) | tiada | 2 |
LD | Rd, Z + | Muatkan Indirect dan Post-Inc | Rd ← (Z), Z ← Z+1 | tiada | 2 |
LD | Jalan, -Z | Muatkan Tidak Langsung dan Pra-Dis. | Z ← Z – 1, Rd ← (Z) | tiada | 2 |
LDD | Rd, Z + q | Beban Tidak Langsung dengan Perpindahan | Rd ← (Z + q) | tiada | 2 |
LDS | Jalan, k | Muat Langsung dari SRAM | Rd ← (k) | tiada | 2 |
ST | X, Rr | Simpan Tidak Langsung | (X) ← Rr | tiada | 2 |
ST | X +, Rr | Kedai Tidak Langsung dan Post-Inc. | (X) ← Rr, X ← X + 1 | tiada | 2 |
ST | - X, Rr | Simpan Tidak Langsung dan Pra-Dis. | X ← X – 1, (X) ← Rr | tiada | 2 |
ST | Y, Rr | Simpan Tidak Langsung | (Y) ← Rr | tiada | 2 |
ST | Y +, Rr | Kedai Tidak Langsung dan Post-Inc. | (Y) ← Rr, Y ← Y + 1 | tiada | 2 |
ST | - Y, Rr | Simpan Tidak Langsung dan Pra-Dis. | Y ← Y – 1, (Y) ← Rr | tiada | 2 |
STD | Y + q, Rr | Simpan Tidak Langsung dengan Perpindahan | (Y + q) ← Rr | tiada | 2 |
ST | Z, Rr | Simpan Tidak Langsung | (Z) ← Rr | tiada | 2 |
ST | Z +, Rr | Kedai Tidak Langsung dan Post-Inc. | (Z) ← Rr, Z ← Z + 1 | tiada | 2 |
ST | -Z, Rr | Simpan Tidak Langsung dan Pra-Dis. | Z ← Z – 1, (Z) ← Rr | tiada | 2 |
STD | Z + q, Rr | Simpan Tidak Langsung dengan Perpindahan | (Z + q) ← Rr | tiada | 2 |
STS | k, Rr | Simpan terus ke SRAM | (k) ← Rr | tiada | 2 |
LPM | Muatkan Memori Program | R0 ← (Z) | tiada | 3 | |
LPM | Jalan, Z | Muatkan Memori Program | Rd ← (Z) | tiada | 3 |
LPM | Rd, Z + | Muat Memori Program dan Post-Inc | Rd ← (Z), Z ← Z+1 | tiada | 3 |
SPM | Simpan Memori Program | (z) ← R1:R0 | tiada | ||
IN | Jalan, P | Di Pelabuhan | Rd ← P | tiada | 1 |
KELUAR | P, Rr | Pelabuhan Keluar | P ← Rr | tiada | 1 |
TOLAK | Rr | Tolak Daftar di Tumpukan | TINDAKAN ← Rr | tiada | 2 |
POP | Rd | Pop Pop dari Stack | Rd ← TIMBANGAN | tiada | 2 |
ARAHAN KAWALAN MCU | |||||
TIDAK | Tiada Operasi | tiada | 1 | ||
TIDUR | tidur | (lihat penjelasan khusus untuk fungsi Tidur) | tiada | 1 | |
WDR | Tetapkan Semula Pengawas | (lihat penjelasan khusus untuk WDR / Pemasa) | tiada | 1 | |
BREAK | Rehat |
Kelajuan (MHz) (1) | Bekalan Voltage (V) | Julat Suhu | Pakej (2) | Kod Pesanan (3) |
10 | 1.8 – 5.5 | Perindustrian
(-40 ° C hingga + 85 ° C) (4) |
8P3 | ATtiny45V-10PU |
8S2 | ATtiny45V-10SU ATtiny45V-10SUR ATtiny45V-10SH ATtiny45V-10SHR | |||
8X | ATtiny45V-10XU ATtiny45V-10XUR | |||
20M1 | ATtiny45V-10MU ATtiny45V-10MUR | |||
20 | 2.7 – 5.5 | Perindustrian
(-40 ° C hingga + 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 |
Catatan: 1. Untuk kelajuan vs bekalan voltage, lihat bahagian 21.3 "Kelajuan" di halaman 163.
Semua bungkusan bebas Pb, bebas halida dan hijau sepenuhnya dan mereka mematuhi arahan Eropah untuk Sekatan Bahan Berbahaya (RoHS).
Penunjuk kod
H: Kemasan utama NiPdAu
U: timah matte
R: pita & kekili
Peranti ini juga boleh dibekalkan dalam bentuk wafer. Sila hubungi pejabat penjualan Atmel tempatan anda untuk maklumat pesanan terperinci dan jumlah minimum.
Erratum
Errata ATtiny25
Surat semakan dalam bahagian ini merujuk kepada penyemakan semula peranti ATtiny25.
Rev D - F
Tiada errata yang diketahui.
Rev B - C
Bacaan EEPROM mungkin gagal pada vol bekalan rendahtagfrekuensi jam e / rendah
Bacaan EEPROM mungkin gagal pada vol bekalan rendahtagfrekuensi jam e / rendah
Cuba membaca EEPROM pada frekuensi jam rendah dan / atau vol bekalan rendahtage boleh menyebabkan data tidak sah.
Pembaikan Masalah / Penyelesaian
Jangan gunakan EEPROM apabila frekuensi jam berada di bawah 1MHz dan jumlah bekalantage berada di bawah 2V. Sekiranya frekuensi operasi tidak dapat dinaikkan di atas 1MHz maka bekalan voltage mestilah lebih daripada 2V. Begitu juga, jika bekalan voltage tidak boleh dinaikkan di atas 2V maka frekuensi operasi harus lebih daripada 1MHz.
Ciri ini diketahui bergantung pada suhu tetapi belum dicirikan. Garis panduan diberikan untuk suhu bilik sahaja.
Pendeta A
Bukan sampdiketuai.
Errata ATtiny45
Surat semakan dalam bahagian ini merujuk kepada penyemakan semula peranti ATtiny45.
Rev F - G
Tiada errata yang diketahui
Rev D - E
Bacaan EEPROM mungkin gagal pada vol bekalan rendahtagfrekuensi jam e / rendah
Bacaan EEPROM mungkin gagal pada vol bekalan rendahtagfrekuensi jam e / rendah
Cuba membaca EEPROM pada frekuensi jam rendah dan / atau vol bekalan rendahtage boleh menyebabkan data tidak sah.
Pembaikan Masalah / Penyelesaian
Jangan gunakan EEPROM apabila frekuensi jam berada di bawah 1MHz dan jumlah bekalantage berada di bawah 2V. Sekiranya frekuensi operasi tidak dapat dinaikkan di atas 1MHz maka bekalan voltage mestilah lebih daripada 2V. Begitu juga, jika bekalan voltage tidak boleh dinaikkan di atas 2V maka frekuensi operasi harus lebih daripada 1MHz.
Ciri ini diketahui bergantung pada suhu tetapi belum dicirikan. Garis panduan diberikan untuk suhu bilik sahaja.
Rev B - C
PLL tidak mengunci
EEPROM yang dibaca dari kod aplikasi tidak berfungsi dalam Lock Bit Mode 3
Bacaan EEPROM mungkin gagal pada vol bekalan rendahtagfrekuensi jam e / rendah
Penjanaan output Timer Counter 1 PWM pada OC1B- XOC1B tidak berfungsi dengan betul
PLL tidak mengunci
Apabila pada frekuensi di bawah 6.0 MHz, PLL tidak akan terkunci
Penyelesaian masalah / Penyelesaian
Semasa menggunakan PLL, jalankan pada 6.0 MHz atau lebih tinggi.
EEPROM yang dibaca dari kod aplikasi tidak berfungsi dalam Lock Bit Mode 3
Apabila Memory Lock Bits LB2 dan LB1 diprogramkan ke mod 3, bacaan EEPROM tidak berfungsi dari kod aplikasi.
Perbaiki Masalah / Selesaikan Masalah
Jangan tetapkan Mode Perlindungan Kunci Bit 3 apabila kod aplikasi perlu dibaca dari EEPROM.
Bacaan EEPROM mungkin gagal pada vol bekalan rendahtagfrekuensi jam e / rendah
Cuba membaca EEPROM pada frekuensi jam rendah dan / atau vol bekalan rendahtage boleh menyebabkan data tidak sah.
Pembaikan Masalah / Penyelesaian
Jangan gunakan EEPROM apabila frekuensi jam berada di bawah 1MHz dan jumlah bekalantage berada di bawah 2V. Sekiranya frekuensi operasi tidak dapat dinaikkan di atas 1MHz maka bekalan voltage mestilah lebih daripada 2V. Begitu juga, jika bekalan voltage tidak boleh dinaikkan di atas 2V maka frekuensi operasi harus lebih daripada 1MHz.
Ciri ini diketahui bergantung pada suhu tetapi belum dicirikan. Garis panduan diberikan untuk suhu bilik sahaja.
Penjana keluaran Timer Counter 1 PWM pada OC1B - XOC1B tidak berfungsi dengan betul
Timer Counter1 PWM output OC1B-XOC1B tidak berfungsi dengan betul. Hanya dalam kes apabila bit kawalan, COM1B1 dan COM1B0 masing-masing berada dalam mod yang sama seperti COM1A1 dan COM1A0, output OC1B-XOC1B berfungsi dengan betul.
Perbaiki Masalah / Selesaikan Masalah
Satu-satunya jalan penyelesaian adalah menggunakan tetapan kawalan yang sama pada bit kawalan COM1A [1: 0] dan COM1B [1: 0], lihat jadual 14-4 dalam lembaran data. Masalah telah diperbaiki untuk Tiny45 rev D.
Pendeta A
Terlalu tinggi penggunaan kuasa turun
DebugWIRE kehilangan komunikasi apabila melangkah ke gangguan
PLL tidak mengunci
EEPROM yang dibaca dari kod aplikasi tidak berfungsi dalam Lock Bit Mode 3
Bacaan EEPROM mungkin gagal pada vol bekalan rendahtagfrekuensi jam e / rendah
Terlalu tinggi penggunaan kuasa turun
Tiga keadaan akan menyebabkan penggunaan kuasa turun yang terlalu tinggi. Ini adalah:
Jam luaran dipilih oleh sekering, tetapi PORT I / O masih diaktifkan sebagai output.
EEPROM dibaca sebelum mematikan kuasa.
VCC ialah 4.5 volt atau lebih tinggi.
Penafian: Maklumat dalam dokumen ini disediakan berkaitan dengan produk Atmel. Tiada lesen, nyata atau tersirat, melalui estoppel atau sebaliknya, kepada mana-mana hak harta intelek yang diberikan oleh dokumen ini atau berkaitan dengan penjualan produk Atmel. KECUALI YANG DITETAPKAN DALAM TERMA DAN SYARAT JUALAN ATMEL YANG TERLETAK DI ATMEL WEBLAMAN, ATMEL TIADA TANGGUNGJAWAB APA PUN DAN MENAFIKAN SEBARANG WARANTI TERSURAT, TERSIRAT ATAU BERKANUN BERKAITAN PRODUKNYA TERMASUK, TETAPI TIDAK TERHAD KEPADA, WARANTI TERSIRAT KEBOLEHPERDAGANGAN, KESESUAIAN UNTUK TUJUAN TERTENTU, SECARA TERTENTU. ATMEL TIDAK AKAN BERTANGGUNGJAWAB ATAS SEBARANG KEROSAKAN LANGSUNG, TIDAK LANGSUNG, AKIBAT, HUKUMAN, KHAS ATAU SAMPINGAN (TERMASUK, TANPA HAD, ROSAK ATAS KERUGIAN DAN KEUNTUNGAN, GANGGUAN PERNIAGAAN, ATAU KEHILANGAN MAKLUMAT PENGGUNAAN) PENGGUNAAN. DOKUMEN INI, WALAUPUN ATMEL TELAH DIMAKLUMKAN TENTANG KEMUNGKINAN KEROSAKAN TERSEBUT.
Atmel tidak membuat pernyataan atau jaminan berkenaan dengan ketepatan atau kesempurnaan kandungan dokumen ini dan berhak untuk membuat perubahan pada spesifikasi dan penerangan produk pada bila-bila masa tanpa notis. Atmel tidak membuat sebarang komitmen untuk mengemas kini maklumat yang terkandung di sini. Kecuali diperuntukkan sebaliknya secara khusus, produk Atmel tidak sesuai untuk, dan tidak boleh digunakan dalam, aplikasi automotif. Produk Atmel tidak dimaksudkan, dibenarkan atau dijamin untuk digunakan sebagai komponen dalam aplikasi yang bertujuan untuk menyokong atau mengekalkan kehidupan.