Atmel

Atmel 8-bit AVR Microcontroller dengan 2/4/8K Bytes In-System Programmable Flashkepingan

 

Fitur

  • Mikrokontroler AVR® 8-Bit Berperforma Tinggi dan Berdaya Rendah
  • Arsitektur RISC Lanjutan
  • 120 Instruksi Kuat - Eksekusi Siklus Jam Terbanyak
  • 32 x 8 Register Kerja Tujuan Umum
  • Operasi Statis Penuh
  • Program dan Memori Data yang tidak mudah menguap
  • 2/4 / 8K Byte dari Flash Memori Program yang Dapat Diprogram Dalam Sistem
  • Ketahanan: 10,000 Siklus Tulis/Hapus
  • 128/256/512 Byte EEPROM yang Dapat Diprogram Dalam Sistem
  • Ketahanan: 100,000 Siklus Tulis/Hapus
  • 128/256/512 Byte SRAM Internal
  • Kunci Pemrograman untuk Program Flash Pemrograman Mandiri dan Keamanan Data EEPROM

Fitur Periferal

  • Timer / Penghitung 8-bit dengan Prescaler dan Dua Saluran PWM
  • Timer / Penghitung Kecepatan Tinggi 8-bit dengan Prescaler Terpisah
  • 2 Output PWM Frekuensi Tinggi dengan Register Perbandingan Output Terpisah
  • Generator Waktu Mati yang Dapat Diprogram
  • USI - Antarmuka Serial Universal dengan Detektor Kondisi Mulai
  • ADC 10-bit

4 Saluran Berakhir Tunggal

2 Pasangan Saluran ADC Diferensial dengan Penguatan yang Dapat Diprogram (1x, 20x)

Pengukuran Suhu

Timer Pengawas yang Dapat Diprogram dengan Osilator On-chip Terpisah

Pembanding Analog On-chip

Fitur Khusus Mikrokontroler

debugWIRE Sistem Debug On-chip

Dalam Sistem Dapat Diprogram melalui Port SPI

Sumber Interupsi Eksternal dan Internal

Mode Idle Daya Rendah, Pengurangan Derau ADC, dan Power-down

Sirkuit Reset Power-on yang Ditingkatkan

Sirkuit Deteksi Brown-out yang Dapat Diprogram

Osilator Kalibrasi Internal

I / O dan Paket

Enam Garis I / O yang Dapat Diprogram

8-pin PDIP, 8-pin SOIC, 20-pad QFN / MLF, dan 8-pin TSSOP (hanya ATtiny45 / V)

Volume Operasitage
- 1.8 - 5.5V untuk ATtiny25V / 45V / 85V
- 2.7 - 5.5V untuk ATtiny25 / 45/85

Kelas Kecepatan
- ATtiny25V / 45V / 85V: 0 - 4 MHz @ 1.8 - 5.5V, 0 - 10 MHz @ 2.7 - 5.5V
- ATtiny25 / 45/85: 0 - 10 MHz @ 2.7 - 5.5V, 0 - 20 MHz @ 4.5 - 5.5V

Kisaran Suhu Industri

Konsumsi Daya Rendah

Mode Aktif:

1 MHz, 1.8V: 300 µA

Mode Power-down:

Konfigurasi Pin

Pinout ATtiny25 / 45/85 Konfigurasi

Deskripsi Pin

VCC: Pasokan voltage.
GND: Tanah.
Port B (PB5:PB0): Port B adalah port I/O dua arah 6-bit dengan resistor pull-up internal (dipilih untuk setiap bit). Buffer output Port B memiliki karakteristik drive simetris dengan kemampuan sink dan source yang tinggi. Sebagai input, pin Port B yang ditarik rendah secara eksternal akan menjadi sumber arus jika resistor pull-up diaktifkan. Pin Port B adalah tri-state ketika kondisi reset menjadi aktif, bahkan jika clock tidak berjalan.

Port B juga melayani fungsi berbagai fitur khusus ATtiny25 / 45/85 seperti yang terdaftar
Pada ATtiny25, port I / O yang dapat diprogram PB3 dan PB4 (pin 2 dan 3) ditukar dalam Mode Kompatibilitas ATtiny15 untuk mendukung kompatibilitas ke belakang dengan ATtiny15.

RESET: Atur ulang masukan. Level rendah pada pin ini lebih lama dari panjang pulsa minimum akan menghasilkan reset, meskipun jam tidak berjalan dan asalkan pin reset belum dinonaktifkan. Panjang pulsa minimum diberikan dalam Tabel 21-4 di halaman 165. Pulsa yang lebih pendek tidak dijamin akan menghasilkan reset.

Pin reset juga dapat digunakan sebagai pin I / O (lemah).

Lebihview

ATtiny25 / 45/85 adalah mikrokontroler CMOS 8-bit berdaya rendah berdasarkan arsitektur RISC yang ditingkatkan AVR. Dengan menjalankan instruksi yang kuat dalam satu siklus clock, ATtiny25 / 45/85 mencapai throughput mendekati 1 MIPS per MHz yang memungkinkan perancang sistem untuk mengoptimalkan konsumsi daya versus kecepatan pemrosesan.

Diagram Blok Diagram blok

Inti AVR menggabungkan set instruksi yang kaya dengan 32 register kerja tujuan umum. Semua 32 register secara langsung terhubung ke Arithmetic Logic Unit (ALU), memungkinkan dua register independen diakses dalam satu instruksi tunggal yang dijalankan dalam satu siklus clock. Arsitektur yang dihasilkan lebih efisien kode sambil mencapai throughput hingga sepuluh kali lebih cepat daripada mikrokontroler CISC konvensional.

ATtiny25 / 45/85 menyediakan fitur-fitur berikut: 2/4 / 8K byte In-System Programmable Flash, 128/256/512 byte EEPROM, 128/256/256 byte SRAM, 6 jalur I / O tujuan umum, 32 umum register kerja tujuan, satu Timer / Counter 8-bit dengan mode perbandingan, satu Timer / Counter kecepatan tinggi 8-bit, Antarmuka Serial Universal, Interupsi Internal dan Eksternal, ADC 4-saluran, 10-bit, Timer Pengawas yang dapat diprogram dengan internal Osilator, dan tiga mode hemat daya yang dapat dipilih perangkat lunak. Mode Idle menghentikan CPU sementara sistem SRAM, Timer / Counter, ADC, Analog Comparator, dan Interrupt tetap berfungsi. Mode Power-down menyimpan isi register, menonaktifkan semua fungsi chip hingga Interrupt atau Hardware Reset berikutnya. Mode Pengurangan Noise ADC menghentikan CPU dan semua modul I / O kecuali ADC, untuk meminimalkan kebisingan peralihan selama konversi ADC.

Perangkat ini diproduksi menggunakan teknologi memori non-volatile kepadatan tinggi Atmel. Flash ISP On-chip memungkinkan memori Program untuk diprogram ulang dalam Sistem melalui antarmuka serial SPI, oleh programmer memori non-volatile konvensional atau dengan kode booting On-chip yang berjalan pada inti AVR.

AVR ATtiny25 / 45/85 didukung dengan seperangkat program dan alat pengembangan sistem yang lengkap termasuk: C Com- pilers, Macro Assembler, Program Debugger / Simulators dan Evaluation kits.

Tentang Sumber Daya

Satu set lengkap alat pengembangan, catatan aplikasi, dan lembar data tersedia untuk diunduh http://www.atmel.com/avr.

Kode Contohampsedikit

Dokumentasi ini berisi kode sederhana exampfile yang secara singkat menunjukkan cara menggunakan berbagai bagian perangkat. Kode ini mantanamples berasumsi bahwa bagian header tertentu file disertakan sebelum kompilasi. Ketahuilah bahwa tidak semua vendor kompiler C menyertakan definisi bit di header files dan penanganan interupsi dalam C bergantung pada kompiler. Harap konfirmasi dengan dokumentasi kompiler C untuk detail lebih lanjut.

Untuk Register I / O yang terletak di peta I / O yang diperluas, instruksi “IN”, “OUT”, “SBIS”, “SBIC”, “CBI”, dan “SBI” harus diganti dengan instruksi yang memungkinkan akses ke perpanjangan I /HAI. Biasanya, ini berarti "LDS" dan "STS" yang digabungkan dengan "SBRS", "SBRC", "SBR", dan "CBR". Perhatikan bahwa tidak semua perangkat AVR menyertakan peta I / O yang diperluas.

Penginderaan Sentuh Kapasitif

Atmel QTouch Library menyediakan solusi yang mudah digunakan untuk antarmuka sensitif sentuhan pada mikrokontroler Atmel AVR. Pustaka QTouch menyertakan dukungan untuk metode akuisisi QTouch® dan QMatrix®.

Penginderaan sentuh dengan mudah ditambahkan ke aplikasi apa pun dengan menautkan Perpustakaan QTouch dan menggunakan Antarmuka Pemrograman Aplikasi (API) dari perpustakaan untuk menentukan saluran sentuh dan sensor. Aplikasi kemudian memanggil API untuk mengambil informasi saluran dan menentukan status sensor sentuh.

Perpustakaan QTouch gratis dan dapat diunduh dari Atmel weblokasi. Untuk informasi lebih lanjut dan detail implementasi, lihat Panduan Pengguna Perpustakaan QTouch – juga tersedia dari Atmel weblokasi.

Penyimpanan Data

Reliabilitas Hasil Kualifikasi menunjukkan bahwa tingkat kegagalan retensi data yang diproyeksikan jauh lebih kecil dari 1 PPM selama 20 tahun pada 85 ° C atau 100 tahun pada 25 ° C.

Inti CPU AVR

Perkenalan

Bagian ini membahas arsitektur inti AVR secara umum. Fungsi utama dari inti CPU adalah untuk memastikan pelaksanaan program yang benar. Oleh karena itu, CPU harus dapat mengakses memori, melakukan kalkulasi, mengontrol periferal, dan menangani interupsi.

Arsitektur Lebihview Arsitektur

Untuk memaksimalkan kinerja dan paralelisme, AVR menggunakan arsitektur Harvard - dengan memori dan bus terpisah untuk program dan data. Instruksi dalam memori Program dijalankan dengan pipelining satu level. Saat satu instruksi sedang dijalankan, instruksi berikutnya diambil sebelumnya dari memori Program. Konsep ini memungkinkan instruksi dijalankan di setiap siklus clock. Memori Program adalah memori Flash yang Dapat Diprogram Ulang Dalam Sistem.

Daftar akses cepat File berisi 32 x 8-bit register kerja tujuan umum dengan waktu akses siklus jam tunggal. Ini memungkinkan operasi Unit Logika Aritmatika (ALU) siklus tunggal. Dalam operasi ALU tipikal, dua operan dikeluarkan dari Register File, operasi dijalankan, dan hasilnya disimpan kembali di Register File- dalam satu siklus jam.

Enam dari 32 register dapat digunakan sebagai tiga pointer register alamat tidak langsung 16-bit untuk pengalamatan Ruang Data - memungkinkan penghitungan alamat yang efisien. Salah satu penunjuk alamat ini juga dapat digunakan sebagai penunjuk alamat untuk tabel pencarian di memori Program Flash. Register fungsi tambahan ini adalah register 16-bit X-, Y-, dan Z, yang dijelaskan nanti di bagian ini.

ALU mendukung operasi aritmatika dan logika antara register atau antara konstanta dan register. Operasi register tunggal juga dapat dijalankan di ALU. Setelah operasi aritmatika, Status Register diperbarui untuk mencerminkan informasi tentang hasil operasi.

Alur program disediakan oleh instruksi lompat dan panggilan bersyarat dan tidak bersyarat, yang dapat secara langsung menangani seluruh ruang alamat. Kebanyakan instruksi AVR memiliki satu format kata 16-bit, tetapi ada juga instruksi 32-bit.

Selama interupsi dan panggilan subrutin, program counter alamat pengirim (PC) disimpan di Stack. Stack secara efektif dialokasikan dalam data umum SRAM, dan akibatnya ukuran Stack hanya dibatasi oleh ukuran SRAM total dan penggunaan SRAM. Semua program pengguna harus menginisialisasi SP dalam rutinitas Reset (sebelum subrutin atau interupsi dijalankan). Stack Pointer (SP) dapat dibaca / ditulis di ruang I / O. Data SRAM dapat dengan mudah diakses melalui lima mode pengalamatan berbeda yang didukung dalam arsitektur AVR.

Ruang memori dalam arsitektur AVR semuanya berupa peta memori linier dan reguler.

Modul interupsi fleksibel memiliki register kontrolnya di ruang I / O dengan bit Pengaktifan Interupsi Global tambahan di Status Register. Semua interupsi memiliki Vektor Interupsi terpisah dalam tabel Vektor Interupsi. Interupsi memiliki prioritas sesuai dengan posisi Vektor Interupsi mereka. Semakin rendah alamat Vektor Interupsi, semakin tinggi prioritasnya.

Ruang memori I/O berisi 64 alamat untuk fungsi periferal CPU sebagai Register Kontrol, SPI, dan fungsi I/O lainnya. Memori I/O dapat diakses secara langsung, atau sebagai lokasi Data Space mengikuti lokasi Register File, 0x20 – 0x5F.

ALU - Unit Logika Aritmatika

AVR ALU berkinerja tinggi beroperasi dalam hubungan langsung dengan semua 32 register kerja tujuan umum. Dalam satu siklus clock, operasi aritmatika antara register tujuan umum atau antara register dan segera dijalankan. Operasi ALU dibagi menjadi tiga kategori utama - aritmatika, logika, dan fungsi bit. Beberapa implementasi arsitektur juga menyediakan pengali yang kuat yang mendukung perkalian bertanda / tidak bertanda dan format pecahan. Lihat bagian "Set Instruksi" untuk penjelasan rinci.

Daftar Status

Status Register berisi informasi tentang hasil dari instruksi aritmatika yang terakhir dieksekusi. Informasi ini dapat digunakan untuk mengubah aliran program untuk melakukan operasi bersyarat. Perhatikan bahwa Status Register diperbarui setelah semua operasi ALU, sebagaimana ditentukan dalam Referensi Set Instruksi. Ini dalam banyak kasus akan menghilangkan kebutuhan untuk menggunakan instruksi perbandingan khusus, menghasilkan kode yang lebih cepat dan lebih kompak.

Status Register tidak secara otomatis disimpan ketika memasuki rutinitas interupsi dan dikembalikan ketika kembali dari interupsi. Ini harus ditangani oleh perangkat lunak.

SREG - Daftar Status AVR

AVR Status Register - SREG - didefinisikan 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 Awal 0 0 0 0 0 0 0 0

Bit 7 - I: Mengaktifkan Interupsi Global

Bit Global Interrupt Enable harus disetel agar interupsi diaktifkan. Kontrol mengaktifkan interupsi individu kemudian dilakukan dalam register kontrol terpisah. Jika Global Interrupt Enable Register dihapus, tidak ada interupsi yang diaktifkan secara independen dari pengaturan mengaktifkan interupsi individu. I-bit dihapus oleh perangkat keras setelah terjadi interupsi, dan diatur oleh instruksi RETI untuk mengaktifkan interupsi berikutnya. I-bit juga dapat diatur dan dihapus oleh aplikasi dengan instruksi SEI dan CLI, seperti yang dijelaskan dalam referensi set instruksi.

Bit 6 - T: Penyimpanan Salinan Bit

Instruksi Bit Copy BLD (Bit LoaD) dan BST (Bit STore) menggunakan T-bit sebagai sumber atau tujuan untuk bit yang dioperasikan. Sedikit dari register di Register File dapat disalin ke T dengan instruksi BST, dan bit di T dapat disalin ke bit dalam register di Register File dengan instruksi BLD.

Bit 5 - H: Bendera Half Carry

Bendera Half Carry H menunjukkan Half Carry dalam beberapa operasi aritmatika. Half Carry berguna dalam aritmatika BCD. Lihat "Deskripsi Set Instruksi" untuk informasi rinci.

Bit 4 – S: Bit Tanda, S = N ⊕ V

S-bit selalu eksklusif atau antara Bendera Negatif N dan Bendera Overflow Pelengkap Dua V. Lihat "Deskripsi Set Instruksi" untuk informasi rinci.

Bit 3 - V: Bendera Overflow Pelengkap Dua

Bendera Dua Komplemen Overflow V mendukung aritmatika komplemen dua. Lihat "Deskripsi Set Instruksi" untuk informasi rinci.

Bit 2 - N: Bendera Negatif

Bendera Negatif N menunjukkan hasil negatif dalam operasi aritmatika atau logika. Lihat "Deskripsi Set Instruksi" untuk informasi rinci.

Bit 1 - Z: Bendera Nol

Bendera Nol Z menunjukkan hasil nol dalam operasi aritmatika atau logika. Lihat "Deskripsi Set Instruksi" untuk informasi rinci.

Bit 0 - C: Bawa Bendera

Bendera Carry C menunjukkan carry dalam operasi aritmatika atau logika. Lihat "Deskripsi Set Instruksi" untuk informasi rinci.

Daftar Tujuan Umum File

Daftar File dioptimalkan untuk set instruksi AVR Enhanced RISC. Untuk mencapai kinerja dan fleksibilitas yang diperlukan, skema input/output berikut didukung oleh Register File:

Satu operan keluaran 8-bit dan satu masukan hasil 8-bit

Dua operan keluaran 8-bit dan satu masukan hasil 8-bit

Dua operan keluaran 8-bit dan satu masukan hasil 16-bit

Satu operan keluaran 16-bit dan satu masukan hasil 16-bit

Gambar 4-2 menunjukkan struktur dari 32 register kerja tujuan umum di CPU. Tujuan umum

Seperti yang ditunjukkan pada Gambar 4-2, setiap register juga diberi alamat memori Data, memetakannya langsung ke 32 lokasi pertama dari Ruang Data pengguna. Meskipun tidak diimplementasikan secara fisik sebagai lokasi SRAM, organisasi memori ini memberikan fleksibilitas besar dalam akses register, karena register penunjuk X-, Y- dan Z dapat diatur untuk mengindeks register mana pun di file.Sebagian besar instruksi beroperasi pada Register File memiliki akses langsung ke semua register, dan kebanyakan dari mereka adalah instruksi siklus tunggal.

Daftar-X, Daftar-Y, dan Daftar-Z

Register R26..R31 memiliki beberapa fungsi tambahan untuk penggunaan tujuan umumnya. Register ini adalah pointer alamat 16-bit untuk pengalamatan tidak langsung dari ruang data. Tiga register alamat tidak langsung X, Y, dan Z didefinisikan seperti yang dijelaskan dalam Gambar 4-3.

Daftar

Dalam mode pengalamatan yang berbeda register alamat ini memiliki fungsi sebagai perpindahan tetap, peningkatan otomatis, dan penurunan otomatis (lihat referensi set instruksi untuk detailnya).

Penunjuk Tumpukan

Stack terutama digunakan untuk menyimpan data sementara, untuk menyimpan variabel lokal dan untuk menyimpan alamat yang dikembalikan setelah interupsi dan panggilan subrutin. Daftar Stack Pointer selalu mengarah ke bagian atas Stack. Perhatikan bahwa Stack diimplementasikan sebagai berkembang dari lokasi memori yang lebih tinggi ke lokasi memori yang lebih rendah. Ini menyiratkan bahwa perintah Stack PUSH menurunkan Stack Pointer.

Stack Pointer menunjuk ke data SRAM Stack area dimana Subrutin dan Interrupt Stacks berada. Ruang Stack dalam data SRAM ini harus ditentukan oleh program sebelum panggilan subrutin apa pun dijalankan atau interupsi diaktifkan. Stack Pointer harus disetel ke titik di atas 0x60. Stack Pointer berkurang satu ketika data didorong ke Stack dengan instruksi PUSH, dan itu berkurang dua ketika alamat pengirim didorong ke Stack dengan panggilan subrutin atau interupsi. Stack Pointer bertambah satu saat data dimunculkan dari Stack dengan instruksi POP, dan bertambah dua saat data dimunculkan dari Stack dengan pengembalian dari subrutin RET atau kembali dari interupsi RETI.

AVR Stack Pointer diimplementasikan sebagai dua register 8-bit di ruang I / O. Jumlah bit yang sebenarnya digunakan bergantung pada implementasi. Perhatikan bahwa ruang data di beberapa implementasi arsitektur AVR sangat kecil sehingga hanya diperlukan SPL. Dalam hal ini, Daftar SPH tidak akan ada.

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 Bahasa Inggris
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 Awal RAMADAN RAMADAN RAMADAN RAMADAN RAMADAN RAMADAN RAMADAN RAMADAN
Nilai Awal RAMADAN RAMADAN RAMADAN RAMADAN RAMADAN RAMADAN RAMADAN RAMADAN

Waktu Pelaksanaan Instruksi

Bagian ini menjelaskan konsep waktu akses umum untuk eksekusi instruksi. CPU AVR digerakkan oleh jam CPU clkCPU, dihasilkan langsung dari sumber jam yang dipilih untuk chip. Tidak ada pembagian jam internal yang digunakan.

Gambar 4.4

Gambar 4-4 menunjukkan pengambilan instruksi paralel dan eksekusi instruksi yang diaktifkan oleh arsitektur Harvard dan Register akses cepat File konsep. Ini adalah konsep dasar pipelining untuk mendapatkan hingga 1 MIPS per MHz dengan hasil unik yang sesuai untuk fungsi per biaya, fungsi per jam, dan fungsi per unit daya.

Gambar 4-5. Operasi ALU Siklus Tunggal

Gambar 4.5

Atur Ulang dan Penanganan Interupsi

AVR menyediakan beberapa sumber interupsi yang berbeda. Interupsi ini dan Reset Vector yang terpisah masing-masing memiliki Vektor Program terpisah dalam ruang memori Program. Semua interupsi diberikan bit mengaktifkan individu yang harus ditulis logika satu bersama dengan bit Aktifkan Interupsi Global dalam Status Register untuk mengaktifkan interupsi.

Alamat terendah dalam ruang memori Program secara default ditetapkan sebagai Vektor Atur Ulang dan Interupsi. Daftar lengkap vektor ditunjukkan pada "Interupsi" di halaman 48. Daftar tersebut juga menentukan tingkat prioritas dari interupsi yang berbeda. Semakin rendah alamatnya, semakin tinggi tingkat prioritasnya. RESET memiliki prioritas tertinggi, dan berikutnya adalah INT0 - Permintaan Interupsi Eksternal 0.

Ketika interupsi terjadi, I-bit Pengaktifan Interupsi Global dihapus dan semua interupsi dinonaktifkan. Perangkat lunak pengguna dapat menulis logika satu ke I-bit untuk mengaktifkan interupsi bersarang. Semua interupsi yang diaktifkan kemudian dapat mengganggu rutinitas interupsi saat ini. I-bit secara otomatis diset ketika instruksi Return from Interrupt - RETI - dijalankan.

Pada dasarnya ada dua jenis interupsi. Jenis pertama dipicu oleh peristiwa yang menetapkan Bendera Interupsi. Untuk interupsi ini, Penghitung Program di-vektor ke Vektor Interupsi aktual untuk menjalankan rutinitas penanganan interupsi, dan perangkat keras menghapus Bendera Interupsi yang sesuai. Bendera Interupsi juga dapat dihapus dengan menulis logika satu ke posisi bit bendera yang akan dihapus. Jika kondisi interupsi terjadi saat bit pengaktifan interupsi dihapus, Bendera Interupsi akan disetel dan diingat hingga interupsi diaktifkan, atau bendera dihapus oleh perangkat lunak. Demikian pula, jika satu atau lebih kondisi interupsi terjadi saat bit Pengaktifan Interupsi Global dihapus, Bendera Interupsi yang sesuai akan ditetapkan dan diingat hingga bit Pengaktifan Interupsi Global disetel, dan kemudian akan dijalankan berdasarkan urutan prioritas.

Jenis interupsi kedua akan dipicu selama kondisi interupsi ada. Interupsi ini tidak perlu memiliki Bendera Interupsi. Jika kondisi interupsi menghilang sebelum interupsi diaktifkan, interupsi tidak akan dipicu.

Ketika AVR keluar dari sebuah interupsi, AVR akan selalu kembali ke program utama dan menjalankan satu instruksi lagi sebelum interupsi yang tertunda dilayani.

Perhatikan bahwa Status Register tidak secara otomatis disimpan ketika memasuki rutinitas interupsi, atau dikembalikan ketika kembali dari rutinitas interupsi. Ini harus ditangani oleh perangkat lunak.

Saat menggunakan instruksi CLI untuk menonaktifkan interupsi, interupsi akan segera dinonaktifkan. Tidak ada interupsi yang akan dieksekusi setelah instruksi CLI, bahkan jika itu terjadi bersamaan dengan instruksi CLI. mantan berikutample menunjukkan bagaimana ini dapat digunakan untuk menghindari interupsi selama urutan penulisan EEPROM waktunya.

Kode Perakitan Example
di r16, SREG ; menyimpan nilai SREG

cli ; nonaktifkan interupsi selama urutan waktu

sbi EECR, EEMPE ; mulai menulis EEPROM

sbi EECR, EEPE

keluar SREG, r16 ; mengembalikan nilai SREG (I-bit)

Kode C Contohample
char cSREG;

cSREG = SREG; /* menyimpan nilai SREG */

/* nonaktifkan interupsi selama urutan waktu */

_CLI ();

EECR |= (1<

EECR | = (1 <

SREG = cSREG; /* mengembalikan nilai SREG (I-bit) */

Saat menggunakan instruksi SEI untuk mengaktifkan interupsi, instruksi yang mengikuti SEI akan dieksekusi sebelum interupsi yang tertunda, seperti yang ditunjukkan pada contoh ini.ampsaya.

Kode Perakitan Example
sei ; atur Aktifkan Interupsi Global

tidur; masuk tidur, menunggu interupsi

; catatan: akan masuk tidur sebelum tertunda

; menyela

Kode C Contohample
_SEI(); /* atur Aktifkan Interupsi Global */

_TIDUR(); /* memasuki mode tidur, menunggu interupsi */

/ * catatan: akan memasuki mode tidur sebelum ada interupsi yang tertunda * /

Interupsi Waktu Respons

Respons eksekusi interupsi untuk semua interupsi AVR yang diaktifkan adalah minimum empat siklus clock. Setelah empat siklus jam, alamat Vektor Program untuk rutinitas penanganan interupsi aktual dijalankan. Selama empat periode siklus clock ini, Penghitung Program didorong ke Stack. Vektor biasanya merupakan lompatan ke rutinitas interupsi, dan lompatan ini membutuhkan tiga siklus clock. Jika interupsi terjadi selama eksekusi instruksi multi-siklus, instruksi ini diselesaikan sebelum interupsi disajikan. Jika interupsi terjadi saat MCU dalam mode tidur, waktu respons eksekusi interupsi bertambah empat siklus clock. Peningkatan ini terjadi selain waktu start-up dari mode tidur yang dipilih.

Pengembalian dari rutinitas penanganan interupsi membutuhkan empat siklus clock. Selama empat siklus clock ini, Program Counter (dua byte) dimunculkan kembali dari Stack, Stack Pointer bertambah dua, dan I-bit di SREG disetel.

Kenangan AVR

Bagian ini menjelaskan berbagai memori di ATtiny25 / 45/85. Arsitektur AVR memiliki dua ruang memori utama, memori Data dan ruang memori Program. Selain itu, ATtiny25 / 45/85 memiliki fitur Memori EEPROM untuk penyimpanan data. Ketiga ruang memori itu linier dan teratur.

Memori Program Flash yang Dapat Diprogram Ulang Dalam Sistem

ATtiny25 / 45/85 berisi 2/4 / 8K byte On-chip In-System Reprogrammable Flash memory untuk penyimpanan program. Karena semua instruksi AVR memiliki lebar 16 atau 32 bit, Flash diatur sebagai 1024/2048/4096 x 16.

Memori Flash memiliki ketahanan setidaknya 10,000 siklus tulis / hapus. Program Counter (PC) ATtiny25 / 45/85 memiliki lebar 10/11/12 bit, sehingga menangani lokasi memori Program 1024/2048/4096. "Program Memori- ming ”di halaman 147 berisi penjelasan rinci tentang pengunduhan serial data Flash menggunakan pin SPI.

Tabel konstan dapat dialokasikan dalam seluruh ruang alamat memori Program (lihat LPM - Deskripsi instruksi memori Load Program).

Gambar 5-1. Peta Memori Program Peta memori

Memori Data SRAM

Gambar 5-2 menunjukkan bagaimana ATtiny25 / 45/85 SRAM Memory diatur.

Lokasi memori data 224/352/607 yang lebih rendah mengalamatkan kedua Register File, memori I/O dan SRAM data internal. 32 lokasi pertama membahas Register File, 64 lokasi berikutnya memori I/O standar, dan lokasi terakhir 128/256/512 alamat SRAM data internal.

Lima mode pengalamatan berbeda untuk penutup memori Data: Langsung, Tidak Langsung dengan Pemindahan, Tidak Langsung, Tidak Langsung dengan Pra-penurunan, dan Tidak Langsung dengan Pasca-kenaikan. Dalam Daftar File, register R26 hingga R31 menampilkan register penunjuk pengalamatan tidak langsung.

Pengalamatan langsung mencapai seluruh ruang data.

Mode Indirect with Displacement mencapai 63 lokasi alamat dari alamat dasar yang diberikan oleh register Y atau Z.

Saat menggunakan mode pengalamatan register tidak langsung dengan pre-decrement dan post-increment otomatis, register alamat X, Y, dan Z dikurangi atau ditambah.

32 register kerja tujuan umum, 64 Register I/O, dan 128/256/512 byte data internal SRAM dalam ATtiny25/45/85 semuanya dapat diakses melalui semua mode pengalamatan ini. Pendaftaran File dijelaskan dalam “Jen- Daftar Tujuan eral File” di halaman 10.

Gambar 5-2. Peta Memori Data Peta memori 2

Akses Memori Data Waktu

Bagian ini menjelaskan konsep waktu akses umum untuk akses memori internal. Akses SRAM data internal dilakukan dalam dua siklus clkCPU seperti yang dijelaskan dalam Gambar 5-3.

Gambar 5-3. Siklus Akses SRAM Data On-chip Pada data chip Memori Data EEPROM

ATtiny25 / 45/85 berisi 128/256/512 byte data memori EEPROM. Ini diatur sebagai ruang data terpisah, di mana byte tunggal dapat dibaca dan ditulis. EEPROM memiliki ketahanan setidaknya 100,000 siklus tulis / hapus. Akses antara EEPROM dan CPU dijelaskan berikut ini, menentukan Register Alamat EEPROM, Register Data EEPROM, dan Register Kontrol EEPROM. Untuk detailnya lihat “Serial Downloading” pada halaman 151.

Akses Baca / Tulis EEPROM

Register Akses EEPROM dapat diakses di ruang I / O.

Waktu akses tulis untuk EEPROM diberikan dalam Tabel 5-1 di halaman 21. Namun, fungsi self-timing memungkinkan perangkat lunak pengguna mendeteksi kapan byte berikutnya dapat ditulis. Jika kode pengguna berisi instruksi yang menulis EEPROM, beberapa tindakan pencegahan harus dilakukan. Dalam catu daya yang sangat disaring, VCC cenderung naik atau turun secara perlahan

Power-up/down. Hal ini menyebabkan perangkat untuk beberapa periode waktu berjalan pada volumetage lebih rendah dari yang ditentukan sebagai minimum untuk frekuensi clock yang digunakan. Melihat “Mencegah Korupsi EEPROM” di halaman 19 untuk mengetahui detail tentang cara menghindari masalah dalam situasi ini.

Untuk mencegah penulisan EEPROM yang tidak disengaja, prosedur penulisan khusus harus diikuti. Mengacu pada “Atom Pemrograman Byte ”di halaman 17 Dan “Split Byte Programming” di halaman 17 untuk detail tentang ini.

Ketika EEPROM dibaca, CPU dihentikan selama empat siklus clock sebelum instruksi berikutnya dijalankan. Ketika EEPROM ditulis, CPU dihentikan selama dua siklus clock sebelum instruksi berikutnya dijalankan.

Pemrograman Atomic Byte

Menggunakan Pemrograman Atomic Byte adalah mode yang paling sederhana. Saat menulis byte ke EEPROM, pengguna harus menulis alamat ke Register EEAR dan datanya ke Register EEDR. Jika bit EEPMn adalah nol, menulis EEPE (dalam empat siklus setelah EEMPE ditulis) akan memicu operasi hapus / tulis. Baik siklus hapus dan tulis dilakukan dalam satu operasi dan total waktu pemrograman diberikan Tabel 5-1 di halaman 21. Bit EEPE tetap disetel sampai operasi hapus dan tulis selesai. Saat perangkat sibuk dengan pemrograman, tidak mungkin untuk melakukan operasi EEPROM lainnya.

Pemrograman Split Byte

Dimungkinkan untuk membagi siklus hapus dan tulis dalam dua operasi yang berbeda. Ini mungkin berguna jika sistem memerlukan waktu akses singkat untuk beberapa periode waktu terbatas (biasanya jika tegangan catu dayatage jatuh). Untuk mengambil keuntungan- tage dari metode ini, diperlukan lokasi yang akan ditulis telah dihapus sebelum operasi tulis. Tetapi karena operasi hapus dan tulis dibagi, dimungkinkan untuk melakukan operasi penghapusan ketika sistem memungkinkan melakukan operasi kritis waktu (biasanya setelah Penyalaan).

Menghapus

Untuk menghapus satu byte, alamat harus dituliskan ke EEAR. Jika bit EEPMn adalah 0b01, menulis EEPE (dalam empat siklus setelah EEMPE ditulis) hanya akan memicu operasi penghapusan (waktu pemrograman diberikan dalam Tabel 5-1 tentang halaman 21). Bit EEPE tetap disetel sampai operasi penghapusan selesai. Saat perangkat sibuk memprogram, tidak mungkin untuk melakukan operasi EEPROM lainnya.

Menulis

Untuk menulis lokasi, pengguna harus menulis alamatnya menjadi EEAR dan datanya menjadi EEDR. Jika bit EEPMn adalah 0b10, penulisan EEPE (dalam empat siklus setelah EEMPE ditulis) akan memicu operasi tulis saja (waktu pemrograman diberikan dalam Tabel 5-1 di halaman 21). Bit EEPE tetap disetel sampai operasi tulis selesai. Jika lokasi yang akan ditulis belum terhapus sebelum ditulis, maka data yang disimpan harus dianggap hilang. Saat perangkat sibuk dengan pemrograman, tidak mungkin untuk melakukan operasi EEPROM lainnya.

Osilator yang dikalibrasi digunakan untuk mengatur waktu akses EEPROM. Pastikan frekuensi Osilator berada dalam persyaratan yang dijelaskan di “OSCCAL - Daftar Kalibrasi Osilator” di halaman 31.

Kode berikut examples menunjukkan satu rakitan dan satu fungsi C untuk menghapus, menulis, atau menulis atom EEPROM. Mantanample mengasumsikan bahwa interupsi dikendalikan (misalnya, dengan menonaktifkan interupsi secara global) sehingga tidak ada interupsi yang akan terjadi selama eksekusi fungsi-fungsi ini.

Kode Perakitan Example
EEPROM_tulis:

; Tunggu penyelesaian tulis sebelumnya

sbic EECR,EEPE

rjmp EEPROM_write

; Setel mode Pemrograman

ldi        r16, (0<<EEPM1)|(0<<EEPM0)

keluar EECR, r16

; Atur alamat (r18: r17) di register alamat

keluar EEARH, r18

keluar EEARL, r17

; Menulis data (r19) ke register data

keluar EEDR, r19

; Tulislah yang logis ke EEMPE

sbi EECR, EEMPE

; Mulai menulis eeprom dengan mengatur EEPE

sbi EECR,EEPE

membasahi

Kode C Contohample
void EEPROM_write (alamat char uc yang tidak ditandatangani, data char uc yang tidak ditandatangani)

{

/* Tunggu selesainya penulisan sebelumnya */ while(EECR & (1<

;

/* Menyetel mode Pemrograman */

EECR = (0 <

/ * Siapkan register alamat dan data * / EEAR = ucAddress;

EEDR = ucData;

/* Tulis logika satu ke EEMPE */

EECR | = (1 <

/ * Mulai menulis eeprom dengan mengatur EEPE * /

EECR | = (1 <

}

Kode selanjutnya examples menunjukkan fungsi assembly dan C untuk membaca EEPROM. Mantanamples mengasumsikan bahwa interupsi dikendalikan sehingga tidak ada interupsi yang akan terjadi selama pelaksanaan fungsi-fungsi ini.

Kode Perakitan Example
EEPROM_baca:

; Tunggu penyelesaian tulis sebelumnya

sbic EECR,EEPE

rjmp EEPROM_read

; Atur alamat (r18: r17) di register alamat

keluar EEARH, r18

keluar EEARL, r17

; Mulailah eeprom dibaca dengan menulis DI SINI

sbi EECR,EERE

; Membaca data dari register data

di r16,EEDR

membasahi

Kode C Contohample
unsigned char EEPROM_read(unsigned char ucAddress)

{

/ * Tunggu penyelesaian tulis sebelumnya * /

sementara (EECR & (1 <

;

/ * Siapkan register alamat * / EEAR = ucAddress;

/* Mulai membaca eeprom dengan menulis EERE */

EECR | = (1 <

/ * Mengembalikan data dari register data * /

mengembalikan EEDR;

}

Mencegah Korupsi EEPROM

Selama periode VCC rendah, data EEPROM dapat rusak karena supply voltage terlalu rendah untuk CPU dan EEPROM untuk beroperasi dengan benar. Masalah ini sama seperti untuk sistem tingkat papan yang menggunakan EEPROM, dan solusi desain yang sama harus diterapkan.

Kerusakan data EEPROM dapat disebabkan oleh dua situasi ketika volumetage terlalu rendah. Pertama, urutan penulisan reguler ke EEPROM membutuhkan volume minimumtage untuk beroperasi dengan benar. Kedua, CPU itu sendiri dapat mengeksekusi instruksi secara tidak benar, jika tegangan suplaitage terlalu rendah.

Kerusakan data EEPROM dapat dengan mudah dihindari dengan mengikuti rekomendasi desain ini:

Jaga agar AVR RESET aktif (rendah) selama periode pasokan daya tidak mencukupitage. Ini dapat dilakukan dengan mengaktifkan Brown-out Detector (BOD) internal. Jika tingkat deteksi BOD internal tidak sesuai dengan

diperlukan tingkat deteksi, rangkaian perlindungan reset VCC rendah eksternal dapat digunakan. Jika reset terjadi saat operasi tulis sedang berlangsung, operasi tulis akan selesai asalkan catu daya voltage cukup.

Memori I / O

Definisi ruang I / O dari ATtiny25 / 45/85 ditunjukkan pada "Daftar Ringkasan" di halaman 200.

Semua ATtiny25 / 45/85 I / Os dan periferal ditempatkan di ruang I / O. Semua lokasi I / O dapat diakses dengan instruksi LD / LDS / LDD dan ST / STS / STD, mentransfer data antara 32 register kerja tujuan umum dan ruang I / O. Register I / O dalam kisaran alamat 0x00 - 0x1F secara langsung dapat diakses bit menggunakan instruksi SBI dan CBI. Dalam register ini, nilai bit tunggal dapat diperiksa dengan menggunakan instruksi SBIS dan SBIC. Lihat bagian set instruksi untuk lebih jelasnya. Saat menggunakan perintah khusus I / O IN dan OUT, alamat I / O 0x00 - 0x3F harus digunakan. Saat menangani Register I / O sebagai ruang data menggunakan instruksi LD dan ST, 0x20 harus ditambahkan ke alamat ini.

Untuk kompatibilitas dengan perangkat masa depan, bit yang dicadangkan harus ditulis ke nol jika diakses. Alamat memori I / O yang dicadangkan tidak boleh ditulis.

Beberapa Bendera Status dihapus dengan menulis yang logis untuk mereka. Perhatikan bahwa instruksi CBI dan SBI hanya akan beroperasi pada bit yang ditentukan, dan oleh karena itu dapat digunakan pada register yang berisi Bendera Status tersebut. Petunjuk CBI dan SBI hanya berfungsi dengan register 0x00 hingga 0x1F.

Register Kontrol I / O dan Periferal akan dijelaskan di bagian selanjutnya.

Deskripsi Register

EEARH - EEPROM Address Register

Sedikit 7 6 5 4 3 2 1 0
0x1F TELINGA8 TELINGA
Baca/Tulis R R R R R R R R/W
Nilai Awal 0 0 0 0 0 0 0 X/0

Bit 7: 1 - Res: Bit yang Dicadangkan

Bit-bit ini dicadangkan untuk penggunaan di masa mendatang dan akan selalu dibaca sebagai nol.

Bit 0 - EEAR8: Alamat EEPROM

Ini adalah bit alamat EEPROM paling signifikan dari ATtiny85. Pada perangkat dengan EEPROM yang lebih sedikit, yaitu ATtiny25 / ATtiny45, bit ini dicadangkan dan akan selalu terbaca nol. Nilai awal EEPROM Address Register (EEAR) tidak ditentukan dan nilai yang tepat harus ditulis sebelum EEPROM diakses.

EEARL - Daftar Alamat EEPROM

Sedikit

0x1E TELINGA7 TELINGA6 TELINGA5 TELINGA4 TELINGA3 TELINGA2 TELINGA1 TELINGA0 EARL
Belakang / Tulis R/W R/W R/W R/W R/W R/W R/W R/W
Nilai Awal X X X X X X X X

Bit 7 - EEAR7: Alamat EEPROM

Ini adalah bit alamat EEPROM paling signifikan dari ATtiny45. Pada perangkat dengan EEPROM yang lebih sedikit, yaitu ATtiny25, bit ini dicadangkan dan akan selalu terbaca nol. Nilai awal EEPROM Address Register (EEAR) tidak ditentukan dan nilai yang tepat harus ditulis sebelum EEPROM diakses.

Bit 6: 0 - EEAR [6: 0]: Alamat EEPROM

Ini adalah bit (rendah) dari Register Alamat EEPROM. Byte data EEPROM ditangani secara linier dalam kisaran 0… (128/256 / 512-1). Nilai awal EEAR tidak ditentukan dan nilai yang tepat harus ditulis sebelum EEPROM dapat diakses.

EEDR - Registrasi Data EEPROM

Sedikit 7 6 5 4 3 2 1 0
0x1D Bahasa Indonesia: EEDR7 Bahasa Indonesia: EEDR6 Bahasa Indonesia: EEDR5 Bahasa Indonesia: EEDR4 Bahasa Indonesia: EEDR3 Bahasa Indonesia: EEDR2 Bahasa Indonesia: EEDR1 Bahasa Indonesia: EEDR0 EEDR
Baca/Tulis R/W R/W R/W R/W R/W R/W R/W R/W
Nilai Awal 0 0 0 0 0 0 0 0

Untuk operasi tulis EEPROM Register EEDR berisi data yang akan ditulis ke EEPROM di alamat yang diberikan oleh Register EEAR. Untuk operasi pembacaan EEPROM, EEDR berisi data yang dibaca dari

EEPROM di alamat yang diberikan oleh EEAR.

 

5.5.4 EECR - Daftar Kontrol EEPROM

Bit 7 6 5 4 3 2 1 0
0x1C        – EEPM1 EEPM0 NGERI EMPEK PENS DI SINI EECR
Baca / Tulis R R R / W R/W R/W R/W R/W R/W
Nilai Awal 0 0 X X 0 0 X 0

Bit 7 - Res: Bit yang Dicadangkan

Bit ini dicadangkan untuk penggunaan di masa mendatang dan akan selalu terbaca sebagai 0 di ATtiny25 / 45/85. Untuk kompatibilitas dengan perangkat AVR di masa mendatang, selalu tulis bit ini ke nol. Setelah membaca, tutupi bagian ini.

Bit 6 - Res: Bit yang Dicadangkan

Bit ini dicadangkan di ATtiny25 / 45/85 dan akan selalu dibaca sebagai nol.

Bit 5: 4 - EEPM [1: 0]: Mode Pemrograman EEPROM Bit

Pengaturan bit mode Pemrograman EEPROM menentukan tindakan pemrograman mana yang akan dipicu saat menulis EEPE. Dimungkinkan untuk memprogram data dalam satu operasi atom (menghapus nilai lama dan memprogram nilai baru) atau membagi operasi Hapus dan Tulis dalam dua operasi berbeda. Waktu Pemrograman untuk mode yang berbeda ditampilkan di Tabel 5-1. Saat EEPE disetel, penulisan apa pun ke EEPMn akan diabaikan. Selama reset, bit EEPMn akan direset ke 0b00 kecuali EEPROM sedang sibuk memprogram.

Tabel 5-1. Bit Mode EEPROM

EEPM1 EEPM0 Waktu Pemrograman Operasi
0 0 3.4 md Hapus dan Tulis dalam satu operasi (Operasi Atom)
0 1 1.8 md Hapus Saja
1 0 1.8 md Tulis Saja
1 1 Disimpan untuk penggunaan di masa mendatang

Bit 3 - EERIE: EEPROM Ready Interrupt Enable

Menulis EERIE ke satu mengaktifkan EEPROM Ready Interrupt jika I-bit di SREG disetel. Menulis EERIE ke nol akan menghilangkan interupsi. EEPROM Ready Interrupt menghasilkan interupsi konstan ketika Non-volatile memory siap untuk pemrograman.

Bit 2 - EEMPE: Program Master EEPROM Diaktifkan

Bit EEMPE menentukan apakah menulis EEPE ke satu akan berpengaruh atau tidak.

Saat EEMPE diatur, pengaturan EEPE dalam empat siklus jam akan memprogram EEPROM di alamat yang dipilih. Jika EEMPE nol, pengaturan EEPE tidak akan berpengaruh. Ketika EEMPE telah ditulis satu per satu oleh perangkat lunak, perangkat keras membersihkan bit ke nol setelah empat siklus jam.

Bit 1 - EEPE: Program EEPROM Diaktifkan

Program EEPROM Aktifkan Sinyal EEPE adalah sinyal mengaktifkan pemrograman ke EEPROM. Saat EEPE ditulis, EEPROM akan diprogram sesuai dengan pengaturan bit EEPMn. Bit EEMPE harus ditulis ke satu sebelum yang logis ditulis ke EEPE, jika tidak, penulisan EEPROM tidak terjadi. Ketika waktu akses tulis telah berlalu, bit EEPE dihapus oleh perangkat keras. Saat EEPE telah disetel, CPU akan dihentikan selama dua siklus sebelum instruksi berikutnya dijalankan.

Bit 0 - DI SINI: EEPROM Read Enable

EEPROM Read Enable Signal - EERE - adalah strobe baca ke EEPROM. Ketika alamat yang benar diatur di Register EEAR, bit EERE harus ditulis ke salah satu untuk memicu pembacaan EEPROM. Akses baca EEPROM membutuhkan satu instruksi, dan data yang diminta segera tersedia. Ketika EEPROM dibaca, CPU dihentikan selama empat siklus sebelum instruksi berikutnya dijalankan. Pengguna harus mengumpulkan bit EEPE sebelum memulai operasi baca. Jika operasi tulis sedang berlangsung, tidak mungkin untuk membaca EEPROM, atau mengubah Register EEAR.

Jam Sistem dan Opsi Jam

Sistem Jam dan Distribusinya

Distribusi jam

Jam CPU

Jam CPU dirutekan ke bagian sistem yang terkait dengan pengoperasian inti AVR. Mantanample dari modul tersebut adalah General Purpose Register File, Register Status dan memori Data yang menyimpan Stack Pointer. Menghentikan jam CPU menghambat inti dari melakukan operasi dan perhitungan umum.

Jam I / O - clkI / O

Jam I / O digunakan oleh sebagian besar modul I / O, seperti Timer / Penghitung. Jam I / O juga digunakan oleh modul Interupsi Eksternal, tetapi perhatikan bahwa beberapa interupsi eksternal dideteksi oleh logika asinkron, yang memungkinkan interupsi tersebut terdeteksi bahkan jika jam I / O dihentikan.

Jam Flash - clkFLASH

Jam Flash mengontrol pengoperasian antarmuka Flash. Jam Flash biasanya aktif bersamaan dengan jam CPU.

Jam ADC - clkADC

ADC dilengkapi dengan domain jam khusus. Hal ini memungkinkan penghentian CPU dan jam I / O untuk mengurangi noise yang dihasilkan oleh sirkuit digital. Ini memberikan hasil konversi ADC yang lebih akurat.

PLL Internal untuk Pembuatan Jam Periferal Cepat - clkPCK

PLL internal di ATtiny25 / 45/85 menghasilkan frekuensi clock yang dikalikan 8x dari input sumber. Secara default, PLL menggunakan output osilator RC 8.0 MHz internal sebagai sumber. Sebagai alternatif, jika bit LSM PLLCSR diatur, PLL akan menggunakan keluaran osilator RC dibagi dua. Jadi output dari PLL, clock periferal cepat adalah 64 MHz. Jam periferal cepat, atau jam prescaled dari itu, dapat dipilih sebagai sumber jam untuk Timer / Counter1 atau sebagai jam sistem. Lihat Gambar 6-2. Frekuensi jam periferal cepat dibagi dua saat LSM PLLCSR diatur, menghasilkan frekuensi jam 32 MHz. Perhatikan, bahwa LSM tidak dapat diatur jika PLLCLK digunakan sebagai jam sistem.

Gambar 6-2. Sistem Jam PCK. Pencatatan jam kerja PCK

PLL terkunci pada osilator RC dan menyesuaikan osilator RC melalui register OSCCAL akan menyesuaikan jam periferal cepat pada saat yang bersamaan. Namun, meskipun osilator RC dibawa ke frekuensi yang lebih tinggi dari 8 MHz, frekuensi clock periferal cepat jenuh pada 85 MHz (kasus terburuk) dan tetap berosilasi pada frekuensi maksimum. Perlu dicatat bahwa PLL dalam hal ini tidak lagi terkunci dengan jam osilator RC. Oleh karena itu, disarankan untuk tidak melakukan penyesuaian OSCCAL ke frekuensi yang lebih tinggi dari 8 MHz agar PLL tetap berada dalam jangkauan pengoperasian yang benar.

PLL internal diaktifkan ketika:

Bit PLLE dalam register PLLCSR disetel.

Sekring CKSEL diprogram ke '0001'.

Sekring CKSEL diprogram ke '0011'.

PLOCK bit PLLCSR diatur saat PLL dikunci. Baik osilator RC internal dan PLL dimatikan dalam mode power down dan stand-by sleep.

PLL internal dalam Mode Kompatibilitas ATtiny15

Karena ATtiny25 / 45/85 adalah perangkat migrasi untuk pengguna ATtiny15, ada mode kompatibilitas ATtiny15 untuk kompatibilitas ke belakang. Mode kompatibilitas ATtiny15 dipilih dengan memprogram sekering CKSEL ke '0011'.

Dalam mode kompatibilitas ATtiny15 frekuensi osilator RC internal dikalibrasi ke 6.4 MHz dan faktor perkalian PLL diatur ke 4x. Lihat Gambar 6-3. Dengan penyesuaian ini, sistem pencatatan jam kerja kompatibel dengan ATtiny15 dan jam periferal cepat yang dihasilkan memiliki frekuensi 25.6 MHz (sama seperti di ATtiny15).

Gambar 6-3. Sistem Pencatatan Jam PCK dalam Mode Kompatibilitas ATtiny15. Sistem pencatatan jam kerja

Sumber Jam

Perangkat ini memiliki opsi sumber jam berikut, dapat dipilih dengan bit Flash Fuse seperti yang ditunjukkan di bawah ini. Jam dari sumber yang dipilih dimasukkan ke generator jam AVR, dan diarahkan ke modul yang sesuai.

Tabel 6-1. Opsi Pencatatan Jam Perangkat Pilih

Opsi Pencatatan Jam Kerja Perangkat CKSEL[3:0](1)
Jam Eksternal (melihat halaman 26) 0000
Jam PLL Frekuensi Tinggi (melihat halaman 26) 0001
Osilator Internal Terkalibrasi (melihat halaman 27) 0010(2)
Osilator Internal Terkalibrasi (melihat halaman 27) 0011(3)
Osilator internal 128 kHz (melihat halaman 28) 0100
Osilator Kristal Frekuensi Rendah (melihat halaman 29) 0110
Osilator Kristal / Resonator Keramik (melihat halaman 29) 1000 – 1111
Disimpan 0101, 0111

Untuk semua sekering "1" berarti tidak terprogram sedangkan "0" berarti terprogram.

Perangkat dikirimkan dengan opsi ini dipilih.

Ini akan memilih Mode Kompatibilitas ATtiny15, di mana jam sistem dibagi empat, menghasilkan frekuensi jam 1.6 MHz. Untuk informasi lebih lanjut, lihat “Osilator Internal Terkalibrasi” di halaman 27.

Berbagai pilihan untuk setiap opsi pencatatan jam kerja diberikan di bagian berikut. Ketika CPU bangun dari Power-down, sumber jam yang dipilih digunakan untuk menghitung waktu start-up, memastikan operasi Osilator yang stabil sebelum eksekusi instruksi dimulai. Saat CPU mulai dari reset, ada penundaan tambahan yang memungkinkan daya mencapai level stabil sebelum memulai operasi normal. Watchdog Oscillator digunakan untuk menentukan waktu bagian waktu-nyata ini dari waktu start-up. Jumlah siklus WDT Oscillator yang digunakan untuk setiap time-out ditampilkan di Tabel 6-2.

Tabel 6-2. Jumlah Siklus Osilator Watchdog

Ketik Time-out Jumlah Siklus
4 md 512
64 md 8 ribu (8,192)

Jam Eksternal

Untuk menggerakkan perangkat dari sumber jam eksternal, CLKI harus digerakkan seperti yang ditunjukkan pada Gambar 6-4. Untuk menjalankan perangkat pada jam eksternal, Sekring CKSEL harus diprogram ke "00".

Gambar 6-4. Konfigurasi Drive Jam Eksternal

Gambar 6.4

Saat sumber jam ini dipilih, waktu start-up ditentukan oleh SUT Fuse seperti yang ditunjukkan pada Tabel 6-3.

Tabel 6-3. Waktu Start-up untuk Pemilihan Jam Eksternal

SUT[1:0] Waktu Mulai dari Power-down Penundaan Tambahan dari Reset Penggunaan yang Direkomendasikan
00 6 CK 14CK BOD diaktifkan
01 6 CK 14CK + 4 md Tenaga yang meningkat pesat
10 6 CK 14CK + 64 md Tenaga perlahan naik
11 Disimpan

Saat menerapkan jam eksternal, diperlukan untuk menghindari perubahan mendadak pada frekuensi jam yang diterapkan untuk memastikan operasi MCU yang stabil. Variasi frekuensi lebih dari 2% dari satu siklus clock ke siklus berikutnya dapat menyebabkan perilaku yang tidak dapat diprediksi. Hal ini diperlukan untuk memastikan bahwa MCU disimpan dalam Reset selama perubahan frekuensi clock tersebut.

Perhatikan bahwa System Clock Presale dapat digunakan untuk mengimplementasikan perubahan run-time dari frekuensi clock internal sambil tetap memastikan operasi yang stabil. Mengacu pada “System Clock Prescaler” di halaman 31 untuk rinciannya.

Jam PLL Frekuensi Tinggi

Ada PLL internal yang menyediakan clock rate 64 MHz yang dikunci ke RC Oscillator untuk penggunaan Peripheral Timer / Counter1 dan untuk sumber clock sistem. Ketika dipilih sebagai sumber jam sistem, dengan memprogram sekering CKSEL ke '0001', itu dibagi empat seperti yang ditunjukkan pada Tabel 6-4.

Tabel 6-4. Mode Operasi Jam PLL Frekuensi Tinggi

CKSEL[3:0] Frekuensi Nominal
0001 Frekuensi 16 MHz

Jika sumber jam ini dipilih, waktu start-up ditentukan oleh sekering SUT seperti yang ditunjukkan pada Tabel 6-5.

Tabel 6-5. Waktu Start-up untuk Jam PLL Frekuensi Tinggi

SUT[1:0] Waktu Start-up dari Power Down Penundaan Tambahan dari Power-On Reset (VCC = 5.0V) Penggunaan yang disarankan
00 14CK + 1K (1024) CK + 4 mdtk 4 md BOD diaktifkan

Tabel 6-5. Waktu Start-up untuk Jam PLL Frekuensi Tinggi

SUT[1:0] Waktu Start-up dari Power Down Penundaan Tambahan dari Power-On Reset (VCC = 5.0V) Penggunaan yang disarankan
01 14CK + 16K (16384) CK + 4 mdtk 4 md Tenaga yang meningkat pesat
10 14CK + 1K (1024) CK + 64 mdtk 4 md Tenaga perlahan naik
11 14CK + 16K (16384) CK + 64 mdtk 4 md Tenaga perlahan naik

Osilator Internal Terkalibrasi

Secara default, Osilator RC Internal menyediakan perkiraan clock 8.0 MHz. Meskipun voltage dan tergantung suhu, jam ini dapat dikalibrasi dengan sangat akurat oleh pengguna. Lihat “Akumulasi Osilator RC Internal Terkalibrasi cabul ”di halaman 164 Dan "Kecepatan Osilator Internal" di halaman 192 untuk lebih jelasnya. Perangkat dikirim dengan CKDIV8 Fuse yang telah diprogram. Lihat “System Clock Prescaler” di halaman 31 untuk lebih jelasnya.

Jam ini dapat dipilih sebagai jam sistem dengan memprogram Sekring CKSEL seperti yang ditunjukkan pada Tabel 6-6 di halaman

27. Jika dipilih, itu akan beroperasi tanpa komponen eksternal. Selama reset, perangkat keras memuat nilai kalibrasi yang telah diprogram sebelumnya ke dalam Register OSCCAL dan dengan demikian secara otomatis mengkalibrasi RC Oscillator. Akurasi kalibrasi ini ditampilkan sebagai kalibrasi Pabrik di Tabel 21-2 di halaman 164.

Dengan mengubah register OSCCAL dari SW, lihat “OSCCAL - Daftar Kalibrasi Osilator” di halaman 31, dimungkinkan untuk mendapatkan akurasi kalibrasi yang lebih tinggi daripada dengan menggunakan kalibrasi pabrik. Akurasi kalibrasi ini ditampilkan sebagai Kalibrasi pengguna di Tabel 21-2 di halaman 164.

Saat Osilator ini digunakan sebagai chip clock, Watchdog Oscillator akan tetap digunakan untuk Watchdog Timer dan untuk Reset Time-out. Untuk informasi lebih lanjut tentang nilai kalibrasi yang telah diprogram sebelumnya, lihat bagian “Kali- bration Bytes ”di halaman 150.

Osilator internal juga dapat diatur untuk menyediakan clock 6.4 MHz dengan menulis sekering CKSEL ke "0011", seperti yang ditunjukkan pada Tabel 6-6 di bawah. Pengaturan ini disebut sebagai Mode Kompatibilitas ATtiny15 dan dimaksudkan untuk menyediakan sumber jam yang dikalibrasi pada 6.4 MHz, seperti pada ATtiny15. Dalam Mode Kompatibilitas ATtiny15, PLL menggunakan osilator internal yang berjalan pada 6.4 MHz untuk menghasilkan sinyal clock periferal 25.6 MHz untuk Timer / Counter1 (lihat “Timer / Penghitung 8-bit1 in ATtiny15 Mode ”pada halaman 95). Perhatikan bahwa dalam mode operasi ini sinyal clock 6.4 MHz selalu dibagi empat, menyediakan clock sistem 1.6 MHz.

Tabel 6-6. Mode Operasi Osilator RC Terkalibrasi Internal

CKSEL[3:0] Frekuensi Nominal
0010(1) Frekuensi 8.0 MHz
0011(2) Frekuensi 6.4 MHz

Perangkat dikirimkan dengan opsi ini dipilih.

Pengaturan ini akan memilih Mode Kompatibilitas ATtiny15, di mana jam sistem dibagi empat, menghasilkan frekuensi clock 1.6 MHz.

Ketika osilator internal 8 MHz yang dikalibrasi dipilih sebagai sumber clock, waktu start-up ditentukan oleh SUT Fuse seperti yang ditunjukkan pada Tabel 6-7 di bawah.

Tabel 6-7. Waktu Start-up untuk Jam Osilator RC Terkalibrasi Internal

SUT[1:0] Waktu Mulai dari Power-down Penundaan Tambahan dari Reset (VCC = 5.0V) Penggunaan yang Direkomendasikan
00 6 CK 14CK(1) BOD diaktifkan
01 6 CK 14CK + 4 md Tenaga yang meningkat pesat
10(2) 6 CK 14CK + 64 md Tenaga perlahan naik
11 Disimpan

1. Jika sekering RSTDISBL diprogram, waktu start-up ini akan ditingkatkan menjadi 14CK + 4 ms untuk memastikan mode pemrograman dapat dimasukkan.
2. Perangkat dikirimkan dengan opsi ini dipilih.

Dalam ATtiny15 Mode Kompatibilitas, waktu start-up ditentukan oleh sekering SUT seperti yang ditunjukkan pada Tabel 6-8 di bawah.

Tabel 6-8. Waktu Start-up untuk Jam Osilator RC Terkalibrasi Internal (dalam Mode ATtiny15)

SUT[1:0] Waktu Mulai dari Power-down Penundaan Tambahan dari Reset (VCC = 5.0V) Penggunaan yang Direkomendasikan
00 6 CK 14CK + 64 md
01 6 CK 14CK + 64 md
10 6 CK 14CK + 4 md
11 1 CK 14CK(1)

Catatan: Jika sekering RSTDISBL diprogram, waktu mulai ini akan ditingkatkan menjadi 14CK + 4 ms untuk memastikan mode pemrograman dapat dimasukkan.

Singkatnya, informasi lebih lanjut tentang Mode Kompatibilitas ATtiny15 dapat ditemukan di bagian “Port B (PB5: PB0)” aktif halaman 2“PLL Internal dalam Mode Kompatibilitas ATtiny15” di halaman 24“Timer / Penghitung 8-bit1 dalam Mode ATtiny15” aktif halaman 95“Batasan debugWIRE” di halaman 140“Calibration Bytes” di halaman 150 dan di meja “Pengatur Waktu Jam Pilih ”di halaman 33.

Osilator internal 128 kHz

Osilator internal 128 kHz adalah Osilator berdaya rendah yang menyediakan clock 128 kHz. Frekuensi nominal pada 3V dan 25°C. Jam ini dapat dipilih sebagai jam sistem dengan memprogram Sekring CKSEL ke “0100”.

Saat sumber jam ini dipilih, waktu start-up ditentukan oleh SUT Fuse seperti yang ditunjukkan pada Tabel 6-9.

Tabel 6-9. Waktu Start-up untuk Osilator Internal 128 kHz

SUT[1:0] Waktu Mulai dari Power-down Penundaan Tambahan dari Reset Penggunaan yang Direkomendasikan
00 6 CK 14CK(1) BOD diaktifkan
01 6 CK 14CK + 4 md Tenaga yang meningkat pesat
10 6 CK 14CK + 64 md Tenaga perlahan naik
11 Disimpan

Catatan: Jika sekering RSTDISBL diprogram, waktu mulai ini akan ditingkatkan menjadi 14CK + 4 ms untuk memastikan mode pemrograman dapat dimasukkan.

Osilator Kristal Frekuensi Rendah

Untuk menggunakan kristal arloji 32.768 kHz sebagai sumber jam untuk perangkat, Osilator Kristal frekuensi rendah harus dipilih dengan mengatur sekering CKSEL ke '0110'. Kristal harus dihubungkan seperti yang ditunjukkan pada Gambar 6-5. Untuk menemukan kapasitansi beban yang sesuai untuk crysal 32.768 kHz, lihat lembar data pabrikan.

Jika osilator ini dipilih, waktu start-up ditentukan oleh sekering SUT seperti yang ditunjukkan pada Tabel 6-10.

Tabel 6-10. Waktu Start-up untuk Pemilihan Jam Osilator Kristal Frekuensi Rendah

SUT[1:0] Waktu Start-up dari Power Down Penundaan Tambahan dari Reset (VCC = 5.0V) Penggunaan yang disarankan
00 1K (1024) CK(1) 4 md Daya yang meningkat cepat atau BOD diaktifkan
01 1K (1024) CK(1) 64 md Tenaga perlahan naik
10 32K (32768) CK 64 md Frekuensi yang stabil saat start-up
11 Disimpan

Catatan: Opsi ini sebaiknya digunakan hanya jika stabilitas frekuensi saat start-up tidak penting.

Osilator Kristal frekuensi rendah menyediakan kapasitansi beban internal, lihat Tabel 6-11 di setiap pin TOSC.

Tabel 6-11. Kapasitansi Osilator Kristal Frekuensi Rendah

Perangkat 32 kHz Os. Tipe Tutup (Xtal1 / Tosc1) Tutup (Xtal2 / Tosc2)
ATtiny25 / 45/85 Sistem Osc. 16 pF 6 pF

Osilator Kristal / Resonator Keramik

XTAL1 dan XTAL2 adalah input dan output, masing-masing, dari pembalik amplifier yang dapat dikonfigurasi untuk digunakan sebagai Osilator On-chip, seperti yang ditunjukkan pada: Gambar 6-5. Baik kristal kuarsa atau resonator keramik dapat digunakan.

C1 dan C2 harus selalu sama untuk kristal dan resonator. Nilai optimal kapasitor tergantung pada kristal atau resonator yang digunakan, jumlah kapasitansi liar, dan derau elektromagnetik lingkungan. Beberapa pedoman awal untuk memilih kapasitor untuk digunakan dengan kristal diberikan Tabel 6-12 di bawah. Untuk resonator keramik, nilai kapasitor yang diberikan oleh pabrikan harus digunakan.

Tabel 6-12. Mode Operasi Osilator Kristal

CKSEL[3:1] Rentang Frekuensi (MHz) Rentang yang Direkomendasikan untuk Kapasitor C1 dan C2 untuk Digunakan 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

Catatan: Opsi ini tidak boleh digunakan dengan kristal, hanya dengan resonator keramik.

Osilator dapat beroperasi dalam tiga mode berbeda, masing-masing dioptimalkan untuk rentang frekuensi tertentu. Mode operasi dipilih oleh sekering CKSEL [3: 1] seperti yang ditunjukkan pada Tabel 6-12.

Sekring CKSEL0 bersama dengan Sekring SUT [1: 0] memilih waktu start-up seperti yang ditunjukkan pada Tabel 6-13.

Tabel 6-13. Waktu Start-up untuk Pemilihan Jam Crystal Oscillator

CKSEL0 SUT[1:0] Waktu Mulai dari Power-down Penundaan Tambahan dari Reset Penggunaan yang Direkomendasikan
0 00 258 CK(1) 14CK + 4 md Resonator keramik, daya yang naik cepat
0 01 258 CK(1) 14CK + 64 md Resonator keramik, daya naik perlahan
0 10 1K (1024) CK(2) 14CK Resonator keramik, BOD diaktifkan
0 11 1K (1024) CK(2) 14CK + 4 md Resonator keramik, daya yang naik cepat
1 00 1K (1024) CK(2) 14CK + 64 md Resonator keramik, daya naik perlahan
1 01 16K (16384) CK 14CK Crystal Oscillator, BOD diaktifkan
1 10 16K (16384) CK 14CK + 4 md Crystal Oscillator, tenaga yang naik dengan cepat
1 11 16K (16384) CK 14CK + 64 md Crystal Oscillator, daya naik perlahan

Catatan

Opsi ini hanya boleh digunakan saat tidak beroperasi mendekati frekuensi maksimum perangkat, dan hanya jika stabilitas frekuensi saat start-up tidak penting untuk aplikasi. Opsi ini tidak cocok untuk kristal.

Opsi ini dimaksudkan untuk digunakan dengan resonator keramik dan akan memastikan stabilitas frekuensi saat start-up. Mereka juga dapat digunakan dengan kristal saat tidak beroperasi mendekati frekuensi maksimum perangkat, dan jika kestabilan frekuensi saat start-up tidak penting untuk aplikasi.

Sumber Jam Default

Perangkat dikirimkan dengan CKSEL = “0010”, SUT = “10”, dan CKDIV8 diprogram. Oleh karena itu, pengaturan sumber jam default adalah Osilator RC Internal yang berjalan pada 8 MHz dengan waktu start-up terlama dan penskalaan jam sistem awal 8, menghasilkan jam sistem 1.0 MHz. Pengaturan default ini memastikan bahwa semua pengguna dapat membuat pengaturan sumber jam yang diinginkan menggunakan In-System atau High-voltage Pemrogram.

Prescaler Jam Sistem

Jam sistem ATtiny25 / 45/85 dapat dibagi dengan mengatur “CLKPR - Clock Prescale Register” di halaman 32. Fitur ini dapat digunakan untuk mengurangi konsumsi daya saat kebutuhan daya pemrosesan rendah. Ini dapat digunakan dengan semua opsi sumber jam, dan ini akan memengaruhi frekuensi jam CPU dan semua periferal sinkron. clkI/O, clkADC, clkCPU, dan clkFLASH dibagi dengan faktor seperti yang ditunjukkan pada Tabel 6-15 di halaman 33.

Waktu Pengalihan

Saat beralih di antara pengaturan prescaler, System Clock Prescaler memastikan bahwa tidak ada gangguan yang terjadi pada sistem jam dan tidak ada frekuensi antara yang lebih tinggi daripada frekuensi clock yang sesuai dengan pengaturan sebelumnya, maupun frekuensi clock yang sesuai dengan pengaturan baru.

Penghitung riak yang mengimplementasikan prescaler berjalan pada frekuensi clock yang tidak terbagi, yang mungkin lebih cepat daripada frekuensi clock CPU. Oleh karena itu, tidak mungkin untuk menentukan status prescaler - bahkan jika itu dapat dibaca, dan waktu yang tepat yang diperlukan untuk beralih dari satu divisi jam ke yang lain tidak dapat diprediksi secara tepat.

Sejak nilai CLKPS ditulis, dibutuhkan antara T1 + T2 dan T1 + 2 * T2 sebelum frekuensi jam baru aktif. Dalam interval ini, 2 tepi jam aktif diproduksi. Di sini, T1 adalah periode jam sebelumnya, dan T2 adalah periode yang sesuai dengan pengaturan prescaler baru.

Penyangga Output Jam

Perangkat dapat mengeluarkan jam sistem pada pin CLKO (bila tidak digunakan sebagai pin XTAL2). Untuk mengaktifkan output, CKOUT Fuse harus diprogram. Mode ini cocok ketika jam chip digunakan untuk menggerakkan sirkuit lain pada sistem. Perhatikan bahwa jam tidak akan dikeluarkan selama reset dan pengoperasian normal pin I / O akan diganti saat sekring diprogram. Osilator RC Internal, Osilator WDT, PLL, dan jam eksternal (CLKI) dapat dipilih saat jam di-output pada CLKO. Osilator kristal (XTAL1, XTAL2) tidak dapat digunakan untuk keluaran jam pada CLKO. Jika System Clock Prescaler digunakan, itu adalah jam sistem terbagi yang dikeluarkan.

Deskripsi Register

OSCCAL - Daftar Kalibrasi Osilator

Sedikit 7 6 5 4 3 2 1 0
ukuran 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

Bit 7: 0 - CAL [7: 0]: Nilai Kalibrasi Osilator

Oscillator Calibration Register digunakan untuk memotong Kalibrasi Internal RC Oscillator untuk menghilangkan variasi proses dari frekuensi osilator. Nilai kalibrasi yang telah diprogram sebelumnya secara otomatis ditulis ke register ini selama penyetelan ulang chip, memberikan frekuensi yang dikalibrasi Pabrik seperti yang ditentukan dalam Tabel 21-2 di halaman 164. Perangkat lunak aplikasi dapat menulis register ini untuk mengubah frekuensi osilator. Osilator dapat dikalibrasi ke frekuensi seperti yang ditentukan dalam Tabel 21-2 di halaman 164. Kalibrasi di luar kisaran itu tidak dijamin.

Perhatikan bahwa osilator ini digunakan untuk mengatur waktu akses tulis EEPROM dan Flash, dan waktu tulis ini akan terpengaruh. Jika EEPROM atau Flash ditulis, jangan kalibrasi ke lebih dari 8.8 MHz. Jika tidak, penulisan EEPROM atau Flash mungkin gagal.

Bit CAL7 menentukan kisaran operasi osilator. Menyetel bit ini ke 0 memberikan rentang frekuensi terendah, menyetel bit ini ke 1 memberikan rentang frekuensi tertinggi. Kedua rentang frekuensi tersebut saling tumpang tindih, dengan kata lain pengaturan OSCCAL = 0x7F memberikan frekuensi yang lebih tinggi daripada OSCCAL = 0x80.

Bit CAL [6: 0] digunakan untuk menyetel frekuensi dalam rentang yang dipilih. Pengaturan 0x00 memberikan frekuensi terendah dalam kisaran itu, dan pengaturan 0x7F memberikan frekuensi tertinggi dalam kisaran tersebut.

Untuk memastikan operasi MCU yang stabil, nilai kalibrasi harus diubah sedikit. Variasi frekuensi lebih dari 2% dari satu siklus ke siklus berikutnya dapat menyebabkan perilaku tidak dapat diprediksi. Perubahan OSCCAL tidak boleh melebihi 0x20 untuk setiap kalibrasi. Diperlukan untuk memastikan bahwa MCU disimpan dalam Reset selama perubahan frekuensi clock tersebut

Tabel 6-14. Rentang Frekuensi Osilator RC Internal

Nilai OSCCAL Frekuensi Terendah Khas sehubungan dengan Frekuensi Nominal Frekuensi Tertinggi Khas sehubungan dengan Frekuensi Nominal
ukuran 0x00 50% 100%
0x3F 75% 150%
0x7F 100% 200%

CLKPR - Daftar Prescale Jam

Sedikit 7 6 5 4 3 2 1 0
ukuran 0x26 KLKPCE CLKPS3 CLKPS2 CLKPS1 CLKPS0 CLKPR
Baca/Tulis R/W R R R R/W R/W R/W R/W

Nilai Awal 0 0 0 0 Lihat Deskripsi Bit

Bit 7 - CLKPCE: Clock Prescaler Change Enable

Bit CLKPCE harus ditulis ke logika satu untuk mengaktifkan perubahan bit CLKPS. Bit CLKPCE hanya diperbarui ketika bit lain di CLKPR ditulis secara bersamaan ke nol. CLKPCE dihapus oleh perangkat keras empat siklus setelah ditulis atau ketika bit CLKPS ditulis. Menulis ulang bit CLKPCE dalam periode waktu habis ini tidak akan memperpanjang periode waktu habis, atau menghapus bit CLKPCE.

Bit 6: 4 - Res: Bit yang Dicadangkan

Bit-bit ini adalah bit-bit yang dicadangkan dalam ATtiny25 / 45/85 dan akan selalu dibaca sebagai nol.

Bit 3: 0 - CLKPS [3: 0]: Prescaler Jam Pilih Bit 3 - 0

Bit-bit ini menentukan faktor pembagian antara sumber jam yang dipilih dan jam sistem internal. Bit-bit ini dapat ditulis run-time untuk memvariasikan frekuensi clock agar sesuai dengan kebutuhan aplikasi. Saat pembagi membagi input jam master ke MCU, kecepatan semua periferal sinkron berkurang saat faktor pembagian digunakan. Faktor pembagian diberikan Tabel 6-15.

Untuk menghindari perubahan frekuensi clock yang tidak disengaja, prosedur penulisan khusus harus diikuti untuk mengubah bit CLKPS:

Tulis bit Clock Prescaler Change Enable (CLKPCE) ke satu dan semua bit lainnya di CLKPR ke nol.

Dalam empat siklus, tulis nilai yang diinginkan ke CLKPS sambil menulis nol ke CLKPCE.

Interupsi harus dinonaktifkan saat mengubah pengaturan prescaler untuk memastikan prosedur penulisan tidak terganggu.

Fuse CKDIV8 menentukan nilai awal bit CLKPS. Jika CKDIV8 tidak diprogram, bit CLKPS akan diatur ulang ke "0000". Jika CKDIV8 diprogram, bit CLKPS diatur ulang ke "0011", memberikan faktor pembagian delapan saat start up. Fitur ini harus digunakan jika sumber jam yang dipilih memiliki frekuensi lebih tinggi daripada frekuensi maksimum perangkat pada kondisi pengoperasian saat ini. Perhatikan bahwa nilai apa pun dapat ditulis ke bit CLKPS terlepas dari pengaturan Fuse CKDIV8. Perangkat lunak Aplikasi harus memastikan bahwa faktor pembagian yang memadai

dipilih jika sumber jam yang dipilih memiliki frekuensi lebih tinggi daripada frekuensi maksimum perangkat pada kondisi pengoperasian saat ini. Perangkat dikirimkan dengan CKDIV8 Fuse yang telah diprogram.

Tabel 6-15. Pilih Prescaler Jam

CLKPS3 CLKPS2 CLKPS1 CLKPS0 Faktor Divisi Jam
0 0 0 0 1
0 0 0 1 2
0 0 1 0 4
0 0 1 1 8
0 1 0 0 16
0 1 0 1 32
0 1 1 0 64
0 1 1 1 128
1 0 0 0 256
1 0 0 1 Disimpan
1 0 1 0 Disimpan
1 0 1 1 Disimpan
1 1 0 0 Disimpan
1 1 0 1 Disimpan
1 1 1 0 Disimpan
1 1 1 1 Disimpan

Catatan: Prescaler dinonaktifkan dalam mode kompatibilitas ATtiny15 dan tidak menulis ke CLKPR, maupun memprogram sekering CKDIV8 tidak berpengaruh pada jam sistem (yang akan selalu 1.6 MHz).

Manajemen Daya dan Mode Tidur

Kinerja tinggi dan efisiensi kode terdepan di industri menjadikan mikrokontroler AVR pilihan ideal untuk aplikasi daya rendah. Selain itu, mode tidur memungkinkan aplikasi mematikan modul yang tidak digunakan di MCU, sehingga menghemat daya. AVR menyediakan berbagai mode tidur yang memungkinkan pengguna menyesuaikan konsumsi daya dengan kebutuhan aplikasi.

Mode Tidur

Gambar 6-1 di halaman 23 menyajikan sistem jam yang berbeda dan distribusinya di ATtiny25 / 45/85. Angka tersebut sangat membantu dalam memilih mode tidur yang sesuai. Tabel 7-1 menunjukkan berbagai mode tidur dan sumber bangunnya.

Tabel 7-1. Domain Jam Aktif dan Sumber Bangun dalam Mode Tidur Berbeda

Domain Jam Aktif Osilator Sumber Bangun
Mode Tidur clkCPU clkFLASH klikIO clkADC klikPCK Sumber Jam Utama Diaktifkan INT0 dan Pin Change SPM / EEPROM

Siap

 

Kondisi Mulai USI

ADC I/O lainnya Penjaga Mengganggu
Menganggur X X X X X X X X X X
Pengurangan Kebisingan ADC X X X(1) X X X X
Matikan daya X(1) X X

Catatan: Untuk INT0, hanya interupsi level.

Untuk memasuki salah satu dari tiga mode tidur, bit SE di MCUCR harus ditulis ke logika satu dan instruksi SLEEP harus dijalankan. Bit SM [1: 0] dalam MCUCR Register memilih mode tidur mana (Idle, ADC Noise Reduction atau Power-down) yang akan diaktifkan oleh instruksi SLEEP. Lihat Tabel 7-2 untuk ringkasan.

Jika interupsi yang diaktifkan terjadi saat MCU dalam mode tidur, MCU bangun. MCU kemudian dihentikan selama empat siklus selain waktu start-up, mengeksekusi rutin interupsi, dan melanjutkan eksekusi dari instruksi setelah SLEEP. Isi Daftar File dan SRAM tidak berubah saat perangkat bangun dari tidur. Jika reset terjadi selama mode sleep, MCU bangun dan mengeksekusi dari Reset Vector.

Catatan: bahwa jika interupsi yang dipicu level digunakan untuk bangun, level yang diubah harus ditahan selama beberapa waktu untuk membangunkan MCU (dan agar MCU memasuki rutin layanan interupsi). Melihat "Interupsi Eksternal" di halaman 49 untuk rinciannya.

Mode siaga

Ketika bit SM[1:0] ditulis ke 00, instruksi SLEEP membuat MCU masuk ke mode Idle, menghentikan CPU tetapi memungkinkan Analog Comparator, ADC, USI, Timer/Counter, Watchdog, dan sistem interupsi untuk terus beroperasi. makan. Mode tidur ini pada dasarnya menghentikan clkCPU dan clkFLASH, sambil membiarkan jam lain berjalan.

Mode Idle memungkinkan MCU untuk bangun dari interupsi yang dipicu eksternal serta internal seperti Timer Overflow. Jika pengaktifan dari interupsi Pembanding Analog tidak diperlukan, Pembanding Analog dapat dimatikan dengan mengatur bit ACD di "ACSR - Kontrol Pembanding Analog dan Daftar Status" di halaman 120. Ini akan mengurangi konsumsi daya dalam mode Idle. Jika ADC diaktifkan, konversi dimulai secara otomatis saat mode ini dimasukkan.

Mode Pengurangan Noise ADC

Ketika bit SM[1:0] ditulis ke 01, instruksi SLEEP membuat MCU masuk ke mode ADC Noise Reduction, menghentikan CPU tetapi mengizinkan ADC, interupsi eksternal, dan Watchdog untuk terus beroperasi (jika diaktifkan). Mode tidur ini menghentikan clkI/O, clkCPU, dan clkFLASH, sambil membiarkan jam lainnya berjalan.

Ini meningkatkan lingkungan kebisingan untuk ADC, memungkinkan pengukuran resolusi yang lebih tinggi. Jika ADC diaktifkan, konversi dimulai secara otomatis saat mode ini dimasukkan. Selain dari ADC Conversion Complete interrupt, hanya External Reset, Watchdog Reset, Brown-out Reset, SPM / EEPROM ready interrupt, external level interrupt pada INT0 atau pin change interrupt yang dapat membangunkan MCU dari ADC Noise Reduction mode.

Mode Power-down

Ketika bit SM [1: 0] ditulis menjadi 10, instruksi SLEEP membuat MCU memasuki mode Power-down. Dalam mode ini, Osilator dihentikan, sementara gangguan eksternal, USI memulai deteksi kondisi dan Watchdog terus beroperasi (jika diaktifkan). Hanya Reset Eksternal, Reset Watchdog, Reset Brown-out, Interupsi kondisi awal USI, interupsi level eksternal pada INT0 atau interupsi perubahan pin yang dapat membangunkan MCU. Mode tidur ini menghentikan semua jam yang dihasilkan, memungkinkan pengoperasian modul asinkron saja.

Perangkat Lunak BOD Disable

Ketika Brown-out Detector (BOD) diaktifkan oleh sekering BODLEVEL (lihat Tabel 20-4 di halaman 148), Direksi secara aktif memantau volume pasokantage selama periode tidur. Di beberapa perangkat, dimungkinkan untuk menghemat daya dengan menonaktifkan BOD oleh perangkat lunak dalam mode tidur Matikan. Konsumsi daya mode tidur kemudian akan berada pada tingkat yang sama seperti saat BOD dinonaktifkan secara global oleh sekering.

Jika BOD dinonaktifkan oleh perangkat lunak, fungsi BOD akan segera dimatikan setelah memasuki mode tidur. Saat bangun dari tidur, BOD diaktifkan kembali secara otomatis. Ini memastikan pengoperasian yang aman jika level VCC turun selama periode tidur.

Jika BOD telah dinonaktifkan, waktu bangun dari mode tidur akan sama dengan waktu bangun dari RESET. Pengguna harus mengkonfigurasi waktu bangun secara manual sehingga referensi celah pita memiliki waktu untuk memulai dan BOD bekerja dengan benar sebelum MCU terus menjalankan kode. Lihat bit sekering SUT [1: 0] dan CKSEL [3: 0] pada tabel “Fuse Low Byte” di halaman 149

Nonaktifkan BOD dikendalikan oleh bit BODS (BOD Sleep) dari MCU Control Register, lihat “MCUCR - Kontrol MCU Daftar ”di halaman 37. Menulis bit ini ke satu mematikan BOD di Power-Down, sementara menulis nol membuat BOD tetap aktif. Pengaturan default adalah nol, yaitu BOD aktif.

Menulis ke bit BODS dikontrol oleh urutan waktunya dan bit pengaktifan, lihat “MCUCR - Pendaftaran Kontrol MCU- ter ”di halaman 37.

Keterbatasan

Fungsionalitas penonaktifan BOD telah diterapkan di perangkat berikut, hanya:

ATtiny25, revisi E, dan yang lebih baru

ATtiny45, revisi D, dan yang lebih baru

ATtiny85, revisi C, dan yang lebih baru

Revisi ditandai pada paket perangkat dan dapat ditemukan sebagai berikut:

Sisi bawah paket 8P3 dan 8S2

Sisi atas paket 20M1

Register Pengurangan Daya

Power Reduction Register (PRR), lihat “PRR - Register Pengurangan Daya” di halaman 38, menyediakan metode untuk mengurangi konsumsi daya dengan menghentikan jam ke periferal individu. Status periferal saat ini dibekukan dan register I / O tidak dapat dibaca atau ditulis. Sumber daya yang digunakan oleh periferal saat menghentikan jam akan tetap digunakan, oleh karena itu periferal dalam banyak kasus harus dinonaktifkan sebelum menghentikan jam. Membangunkan modul, yang dilakukan dengan membersihkan bit di PRR, menempatkan modul dalam keadaan yang sama seperti sebelum mematikan.

Shutdown modul dapat digunakan dalam mode Idle dan mode Aktif untuk secara signifikan mengurangi konsumsi daya secara keseluruhan. Di semua mode tidur lainnya, jam sudah berhenti. Lihat “Pasokan Arus modul I / O” di halaman 177 untuk mantanampsedikit.

Meminimalkan Konsumsi Daya

Ada beberapa masalah yang perlu dipertimbangkan saat mencoba meminimalkan konsumsi daya dalam sistem yang dikendalikan AVR. Secara umum, mode tidur harus digunakan sebanyak mungkin, dan mode tidur harus dipilih sehingga sesedikit mungkin fungsi perangkat dapat beroperasi. Semua fungsi yang tidak diperlukan harus dinonaktifkan. Secara khusus, modul berikut mungkin memerlukan pertimbangan khusus saat mencoba mencapai konsumsi daya serendah mungkin.

Konverter Analog ke Digital

Jika diaktifkan, ADC akan diaktifkan di semua mode tidur. Untuk menghemat daya, ADC harus dinonaktifkan sebelum memasuki mode tidur apa pun. Ketika ADC dimatikan dan dihidupkan kembali, konversi berikutnya akan menjadi konversi yang diperpanjang. Mengacu pada "Konverter Analog ke Digital" di halaman 122 untuk mengetahui detail tentang operasi ADC.

Pembanding Analog

Saat memasuki mode Idle, Analog Comparator harus dinonaktifkan jika tidak digunakan. Saat memasuki mode Pengurangan Kebisingan ADC, Komparator Analog harus dinonaktifkan. Dalam mode tidur lainnya, Analog Comparator dinonaktifkan secara otomatis. Namun, jika Komparator Analog diatur untuk menggunakan Vol Internaltage Referensi sebagai input, Analog Comparator harus dinonaktifkan di semua mode tidur. Jika tidak, Vol Internaltage Referensi akan diaktifkan, terlepas dari mode tidur. Mengacu pada “Pembanding Analog” di halaman 119 untuk detail tentang cara mengkonfigurasi Pembanding Analog.

Detektor Brown-out

Jika Detektor Brown-out tidak diperlukan dalam aplikasi, modul ini harus dimatikan. Jika Detektor Brown-out diaktifkan oleh BODLEVEL Fuses, itu akan diaktifkan di semua mode tidur, dan karenanya, selalu mengonsumsi daya. Dalam mode tidur yang lebih nyenyak, ini akan memberikan kontribusi yang signifikan terhadap total konsumsi saat ini. Lihat “Deteksi Kecoklatan tion ”di halaman 41 Dan "Software BOD Disable" pada halaman 35 untuk detail tentang cara mengkonfigurasi Detektor Brown-out.

Volume Internaltage Referensi

Vol internaltage Referensi akan diaktifkan bila diperlukan oleh Deteksi Brown-out, Analog Comparator atau ADC. Jika modul ini dinonaktifkan seperti yang dijelaskan pada bagian di atas, volume internaltage referensi akan dinonaktifkan dan tidak akan memakan daya. Saat dihidupkan lagi, pengguna harus mengizinkan referensi untuk memulai sebelum output digunakan. Jika referensi tetap dalam mode tidur, output dapat segera digunakan. Mengacu pada “Vol Internaltage Referensi” pada halaman 42 untuk detail tentang waktu start-up.

Pengatur Waktu Pengawas

Jika Watchdog Timer tidak diperlukan dalam aplikasi, modul ini harus dimatikan. Jika Watchdog Timer diaktifkan, itu akan diaktifkan di semua mode tidur, dan karenanya, selalu konsumsi daya. Dalam mode tidur yang lebih nyenyak, ini akan memberikan kontribusi yang signifikan terhadap total konsumsi saat ini. Mengacu pada “Watchdog Timer” di halaman 42 untuk detail tentang cara mengkonfigurasi Timer Pengawas.

Pin Port

Saat memasuki mode tidur, semua pin port harus dikonfigurasi untuk menggunakan daya minimum. Hal yang paling penting adalah memastikan bahwa tidak ada pin yang menggerakkan beban resistif. Dalam mode tidur di mana jam I/O (clkI/O) dan jam ADC (clkADC) dihentikan, buffer input perangkat akan dinonaktifkan. Ini memastikan bahwa tidak ada daya yang dikonsumsi

dengan logika input saat tidak diperlukan. Dalam beberapa kasus, logika input diperlukan untuk mendeteksi kondisi bangun, dan

itu kemudian akan diaktifkan. Lihat bagian tersebut “Pengaktifan Input Digital dan Mode Tidur” di halaman 57 untuk detail tentang pin mana yang diaktifkan. Jika buffer input diaktifkan dan sinyal input dibiarkan mengambang atau memiliki level sinyal analog mendekati VCC/2, buffer input akan menggunakan daya yang berlebihan.

Untuk pin input analog, buffer input digital harus dinonaktifkan setiap saat. Level sinyal analog yang mendekati VCC/2 pada pin input dapat menyebabkan arus yang signifikan bahkan dalam mode aktif. Buffer input digital dapat dinonaktifkan dengan menulis ke Digital Input Disable Register (DIDR0). Mengacu pada “DIDR0 - Digital Input Disable Register 0” di halaman 121 untuk rinciannya.

Deskripsi Register

MCUCR - Daftar Kontrol MCU

Register Kontrol MCU berisi bit kontrol untuk manajemen daya.

Sedikit 7 6 5 4 3 2 1 0
ukuran 0x35 TUBUH 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 Awal 0 0 0 0 0 0 0 0

Bit 7 - BODS: BOD Sleep

Fungsionalitas penonaktifan BOD hanya tersedia di beberapa perangkat. Lihat “Batasan” di halaman 36.

Untuk menonaktifkan BOD selama tidur (lihat Tabel 7-1 di halaman 34) bit BODS harus ditulis ke logika satu. Ini dikontrol oleh urutan waktunya dan bit pengaktifan, BODSE di MCUCR. Pertama, BODS dan BODSE harus disetel menjadi satu. Kedua, dalam empat siklus clock, BODS harus disetel ke satu dan BODSE harus disetel ke nol. Bit BODS aktif tiga siklus jam setelah disetel. Instruksi tidur harus dijalankan saat BODS aktif untuk mematikan BOD untuk mode sleep yang sebenarnya. Bit BODS secara otomatis dihapus setelah tiga siklus clock.

Di perangkat di mana Sleeping BOD belum diimplementasikan, bit ini tidak digunakan dan akan selalu terbaca nol.

Bit 5 - SE: Sleep Enable

Bit SE harus ditulis ke logika satu agar MCU memasuki mode tidur ketika instruksi SLEEP dijalankan. Untuk menghindari MCU memasuki mode tidur kecuali itu adalah tujuan programmer, disarankan untuk menulis bit Sleep Enable (SE) ke satu sebelum eksekusi instruksi SLEEP dan menghapusnya segera setelah bangun.

Bit 4: 3 - SM [1: 0]: Mode Tidur Pilih Bit 1 dan 0

Bit ini memilih di antara tiga mode tidur yang tersedia seperti yang ditunjukkan pada Tabel 7-2.

Tabel 7-2. Pilih Mode Tidur

SM1 SM0 Mode Tidur
0 0 Menganggur
0 1 Pengurangan Kebisingan ADC
1 0 Matikan daya
1 1 Disimpan

Bit 2 - BODSE: BOD Sleep Enable

Fungsionalitas penonaktifan BOD hanya tersedia di beberapa perangkat. Lihat “Batasan” di halaman 36.

Bit BODSE memungkinkan pengaturan bit kontrol BODS, seperti yang dijelaskan pada deskripsi bit BODS. Nonaktifkan BOD dikendalikan oleh urutan waktu.

Bit ini tidak digunakan di perangkat yang menonaktifkan software BOD belum diterapkan dan akan dibaca sebagai nol di perangkat tersebut.

PRR - Register Pengurangan Daya

Power Reduction Register menyediakan metode untuk mengurangi konsumsi daya dengan membiarkan sinyal jam periferal dinonaktifkan.

Sedikit 7 6 5 4 3 2 1 0
ukuran 0x20 PRTM1 PRTM0 PRUSI Bahasa Indonesia: PRAD PRR
Baca/Tulis R R R R R/W R/W R/W R/W
Nilai Awal 0 0 0 0 0 0 0 0

Bit 7: 4 - Res: Bit yang Dicadangkan

Bit-bit ini adalah bit-bit yang dicadangkan dalam ATtiny25 / 45/85 dan akan selalu dibaca sebagai nol.

Bit 3 - PRTIM1: Timer / Penghitung Pengurangan Daya1

Menulis logika satu ke bit ini akan mematikan modul Timer / Counter1. Jika Timer / Counter1 diaktifkan, pengoperasian akan dilanjutkan seperti sebelum dimatikan.

Bit 2 - PRTIM0: Timer / Penghitung Pengurangan Daya0

Menulis logika satu ke bit ini akan mematikan modul Timer / Counter0. Jika Timer / Counter0 diaktifkan, pengoperasian akan dilanjutkan seperti sebelum dimatikan.

Bit 1 - PRUSI: Power Reduction USI

Menulis logika satu ke bit ini akan mematikan USI dengan menghentikan jam ke modul. Saat membangunkan USI lagi, USI harus diinisialisasi ulang untuk memastikan pengoperasian yang benar.

Bit 0 - PRADC: ADC Pengurangan Daya

Menulis logika satu ke bit ini akan mematikan ADC. ADC harus dinonaktifkan sebelum dimatikan. Perhatikan bahwa jam ADC juga digunakan oleh beberapa bagian komparator analog, yang berarti komparator analog tidak dapat digunakan saat bit ini tinggi.

Kontrol dan Reset Sistem

Mengatur ulang AVR

Selama reset, semua Register I / O disetel ke nilai awalnya, dan program mulai mengeksekusi dari Reset Vector. Instruksi yang ditempatkan pada Reset Vector harus berupa instruksi RJMP - Relative Jump - untuk rutinitas penanganan reset. Jika program tidak pernah mengaktifkan sumber interupsi, Vektor Interupsi tidak digunakan, dan kode program reguler dapat ditempatkan di lokasi ini. Diagram sirkuit di Gambar 8-1 menunjukkan logika reset. Parameter listrik dari sirkuit reset diberikan dalam “Karakteristik Sistem dan Pengaturan Ulang” pada halaman 165.

Gambar 8-1 Atur Ulang Logika Atur ulang logika

Port I / O AVR segera diatur ulang ke status awal saat sumber reset aktif. Ini tidak memerlukan sumber jam untuk dijalankan.

Setelah semua sumber reset tidak aktif, penghitung penundaan dipanggil, memperpanjang reset internal. Ini memungkinkan daya mencapai tingkat yang stabil sebelum pengoperasian normal dimulai. Periode waktu habis dari penghitung penundaan ditentukan oleh pengguna melalui Sekring SUT dan CKSEL. Pilihan berbeda untuk periode penundaan disajikan di "Jam Sumber ”di halaman 25.

Atur Ulang Sumber

ATtiny25 / 45/85 memiliki empat sumber reset:

Hidupkan Ulang. MCU direset ketika tegangan suplaitage berada di bawah ambang Power-on Reset (VPOT).

Reset Eksternal. MCU di-reset ketika level rendah ada pada pin RESET lebih lama dari panjang pulsa minimum.

Watchdog Reset. MCU di-reset ketika periode Watchdog Timer berakhir dan Watchdog diaktifkan.

Reset Brown-out. MCU direset ketika tegangan suplaitage VCC berada di bawah batas Brown-out Reset (VBOT) dan Brown-out Detector diaktifkan.

Hidupkan Ulang

Pulsa Power-on Reset (POR) dihasilkan oleh sirkuit deteksi On-chip. Tingkat deteksi ditentukan di “Si- tem dan Atur Ulang Karakteristik ”pada halaman 165. POR diaktifkan setiap kali VCC berada di bawah level deteksi. Sirkuit POR dapat digunakan untuk memicu Reset Start-up, serta untuk mendeteksi kegagalan pasokan voltage.

Sirkuit Power-on Reset (POR) memastikan bahwa perangkat diatur ulang dari Power-on. Mencapai ambang batas Power-on Resettage memanggil penghitung penundaan, yang menentukan berapa lama perangkat disimpan dalam RESET setelah kenaikan VCC. Sinyal RESET diaktifkan kembali, tanpa penundaan, saat VCC menurun di bawah level deteksi.

Gambar 8-2. Start-up MCU, RESET Terikat ke VCC

PENGATURAN INTERNAL

Gambar 8-3. Start-up MCU, RESET Diperpanjang Secara Eksternal

Reset Eksternal

Reset Eksternal dihasilkan oleh level rendah pada pin RESET jika diaktifkan. Setel ulang pulsa lebih panjang dari lebar pulsa minimum (lihat “Karakteristik Sistem dan Pengaturan Ulang” pada halaman 165) akan menghasilkan reset, bahkan jika jam tidak berjalan. Pulsa yang lebih pendek tidak dijamin menghasilkan reset. Ketika sinyal yang diterapkan mencapai Reset Threshold Voltage – VRST – pada tepi positifnya, penghitung penundaan memulai MCU setelah periode Time-out berakhir.

Gambar 8-4. Reset Eksternal Selama Pengoperasian Gambar 8.4

Deteksi Brown-out

ATtiny25/45/85 memiliki sirkuit Deteksi Brown-out (BOD) On-chip untuk memantau level VCC selama operasi dengan membandingkannya dengan level pemicu tetap. Level pemicu untuk BOD dapat dipilih oleh Sekering BODLEVEL. Level pemicu memiliki histeresis untuk memastikan Deteksi Brown-out bebas lonjakan. Histeresis pada level deteksi harus ditafsirkan sebagai VBOT+ = VBOT + VHYST/2 dan VBOT- = VBOT – VHYST/2.

Ketika BOD diaktifkan, dan VCC menurun ke nilai di bawah level pemicu (VBOT- in Gambar 8-5), Reset Brown-out segera diaktifkan. Ketika VCC meningkat di atas level pemicu (VBOT+ in Gambar 8-5), penghitung penundaan memulai MCU setelah periode Time-out tTOUT telah kedaluwarsa.

Sirkuit BOD hanya akan mendeteksi penurunan VCC jika voltage tetap di bawah level pemicu lebih lama dari tBOD yang diberikan “Karakteristik Sistem dan Pengaturan Ulang” pada halaman 165. Gambar 8.5

Setel Ulang Anjing Pengawas

Saat Watchdog kehabisan waktu, ini akan menghasilkan pulsa reset pendek dengan durasi satu siklus CK. Di ujung jatuh pulsa ini, pengatur waktu tunda mulai menghitung periode Time-out tTOUT. Mengacu pada “Watchdog Timer” di halaman 42 untuk detail tentang pengoperasian Timer Pengawas.

Jil.tage Referensi Aktifkan Sinyal dan Waktu Start-up

volumetagReferensi e memiliki waktu mulai yang dapat memengaruhi cara penggunaannya. Waktu start-up diberikan dalam “Karakteristik Sistem dan Pengaturan Ulang” pada halaman 165. Untuk menghemat daya, referensi tidak selalu dihidupkan. Referensi aktif selama situasi berikut:

Ketika BOD diaktifkan (dengan memprogram BODLEVEL [2: 0] Fuse Bits).

Saat referensi celah pita dihubungkan ke Pembanding Analog (dengan menyetel bit ACBG di ACSR).

Saat ADC diaktifkan.

Jadi, ketika BOD tidak diaktifkan, setelah mengatur bit ACBG atau mengaktifkan ADC, pengguna harus selalu mengizinkan referensi untuk memulai sebelum keluaran dari Analog Comparator atau ADC digunakan. Untuk mengurangi konsumsi daya dalam mode Power-down, pengguna dapat menghindari tiga kondisi di atas untuk memastikan bahwa referensi dimatikan sebelum memasuki mode Power-down.

Pengatur Waktu Pengawas

Timer Pengawas dihitung dari Osilator On-chip yang bekerja pada 128 kHz. Dengan mengontrol prescaler Watchdog Timer, interval Watchdog Reset dapat disesuaikan seperti yang ditunjukkan pada Tabel 8-3 di halaman 46. Instruksi WDR - Watchdog Reset - mengatur ulang Timer Pengawas. Watchdog Timer juga disetel ulang saat dinonaktifkan dan saat Chip Reset terjadi. Sepuluh periode siklus jam yang berbeda dapat dipilih untuk menentukan periode reset. Jika periode reset kedaluwarsa tanpa Watchdog Reset lainnya, ATtiny25 / 45/85 me-reset dan mengeksekusi dari Reset Vector. Untuk detail waktu di Watchdog Reset, lihat Tabel 8-3 di halaman 46.

Watchdog Timer juga dapat dikonfigurasi untuk menghasilkan interupsi alih-alih reset. Ini bisa sangat membantu saat menggunakan Watchdog untuk bangun dari Power-down.

Untuk mencegah penonaktifan Watchdog yang tidak disengaja atau perubahan waktu habis yang tidak disengaja, dua tingkat keamanan yang berbeda dipilih oleh sekring WDTON seperti yang ditunjukkan pada Tabel 8-1 Mengacu pada “Urutan Jangka Waktu untuk Mengubah Con- figuration of the Watchdog Timer ”di halaman 43 untuk rinciannya.

Tabel 8-1. Konfigurasi WDT sebagai Fungsi Pengaturan Fuse WDTON

Bahasa Indonesia: WDTON Tingkat Keamanan Status Awal WDT Cara Menonaktifkan WDT Bagaimana Mengubah Time-out
Tidak terprogram 1 Dengan disabilitas Urutan waktunya Tidak ada batasan
Diprogram 2 Diaktifkan Selalu diaktifkan Urutan waktunya

Gambar 8-7. Timer Pengawas Penjaga

Urutan Jangka Waktu untuk Mengubah Konfigurasi Timer Pengawas

Urutan untuk mengubah konfigurasi sedikit berbeda antara kedua tingkat keamanan tersebut. Prosedur terpisah dijelaskan untuk setiap tingkat.

Tingkat Keamanan 1: Dalam mode ini, Watchdog Timer pada awalnya dinonaktifkan, tetapi dapat diaktifkan dengan menulis bit WDE ke satu tanpa batasan apa pun. Urutan waktunya diperlukan saat menonaktifkan Watchdog Timer yang diaktifkan. Untuk menonaktifkan Watchdog Timer yang diaktifkan, prosedur berikut harus diikuti:

Dalam operasi yang sama, tulis logika satu ke WDCE dan WDE. Logika yang harus ditulis ke WDE tanpa menghiraukan nilai bit WDE sebelumnya.

Dalam empat siklus jam berikutnya, dalam operasi yang sama, tulis bit WDE dan WDP sesuai keinginan, tetapi dengan bit WDCE dihapus.

Tingkat Keamanan 2: Dalam mode ini, Watchdog Timer selalu diaktifkan, dan bit WDE akan selalu terbaca sebagai satu. Urutan waktunya diperlukan saat mengubah periode Watchdog Time-out. Untuk mengubah Watchdog Time-out, prosedur berikut harus diikuti:

Dalam operasi yang sama, tulis yang logis ke WDCE dan WDE. Meskipun WDE selalu disetel, WDE harus ditulis ke salah satu untuk memulai urutan waktunya.

Dalam empat siklus clock berikutnya, dalam operasi yang sama, tulis bit WDP sesuai keinginan, tetapi dengan bit WDCE dihapus. Nilai yang ditulis ke bit WDE tidak relevan.

Kode Contohample

Kode berikut example menunjukkan satu rakitan dan satu fungsi C untuk mematikan WDT. Mantanample mengasumsikan bahwa interupsi dikendalikan (misalnya, dengan menonaktifkan interupsi secara global) sehingga tidak ada interupsi yang akan terjadi selama pelaksanaan fungsi-fungsi ini.

Kode Perakitan Example(1)
WDT_mati:

wdr

; Hapus WDRF di MCUSR

ldi r16, (0<

keluar MCUSR, r16

; Tulis yang logis ke WDCE dan WDE

; Pertahankan pengaturan prescaler lama untuk mencegah Watchdog Reset yang tidak disengaja

di r16, WDTCR

ori r16, (1<

keluar WDTCR, r16

; Matikan WDT

ldi r16, (0<

keluar WDTCR, r16

membasahi

Kode C Contohample(1)
batal WDT_off(batal)

{

_WDR ();

/* Hapus WDRF di MCUSR */ MCUSR = 0x00

/* Tulis logika satu ke WDCE dan WDE */ WDTCR |= (1<

/ * Matikan WDT * / WDTCR = 0x00;

}

Catatan: 1. Lihat “Kode Contohamples” pada halaman 6.

Deskripsi Register

MCUSR - Daftar Status MCU

MCU Status Register memberikan informasi tentang sumber reset mana yang menyebabkan MCU Reset.

Sedikit 7 6 5 4 3 2 1 0
ukuran 0x34 WDRF BORF EKSTRF PORSI MCUSR
Baca/Tulis R R R R R/W R/W R/W R/W

Nilai Awal 0 0 0 0 Lihat Deskripsi Bit

Bit 7: 4 - Res: Bit yang Dicadangkan

Bit-bit ini adalah bit-bit yang dicadangkan dalam ATtiny25 / 45/85 dan akan selalu dibaca sebagai nol.

Bit 3 - WDRF: Bendera Reset Watchdog

Bit ini disetel jika Watchdog Reset terjadi. Bit diatur ulang dengan Power-on Reset, atau dengan menulis logika nol ke bendera.

Bit 2 - BORF: Brown-out Reset Flag

Bit ini disetel jika Brown-out Reset terjadi. Bit diatur ulang dengan Power-on Reset, atau dengan menulis logika nol ke bendera.

Bit 1 - EXTRF: Bendera Reset Eksternal

Bit ini disetel jika Reset Eksternal terjadi. Bit diatur ulang dengan Power-on Reset, atau dengan menulis logika nol ke bendera.

Bit 0 - PORF: Power-on Reset Flag

Bit ini disetel jika Power-on Reset terjadi. Bit diatur ulang hanya dengan menulis logika nol ke bendera.

Untuk menggunakan Reset Flags untuk mengidentifikasi kondisi reset, pengguna harus membaca dan mereset MCUSR sedini mungkin dalam program. Jika register dihapus sebelum reset lain terjadi, sumber reset dapat ditemukan dengan memeriksa Reset Flags.

WDTCR - Daftar Kontrol Pengatur Waktu Pengawas

Sedikit 7 6 5 4 3 2 1 0
ukuran 0x21 Bahasa Indonesia: 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 Awal 0 0 0 0 X 0 0 0

Bit 7 - WDIF: Bendera Interupsi Batas Waktu Pengawas

Bit ini disetel ketika waktu habis terjadi di Pengatur Waktu Anjing Pengawas dan Pengatur Waktu Pengawas dikonfigurasikan untuk interupsi. WDIF dihapus oleh perangkat keras saat menjalankan vektor penanganan interupsi yang sesuai. Alternatifnya, WDIF dihapus dengan menulis logika satu ke bendera. Ketika I-bit di SREG dan WDIE disetel, Watchdog Time-out Interrupt dijalankan.

Bit 6 - WDIE: Watchdog Timeout Interrupt Enable

Ketika bit ini ditulis ke satu, WDE dihapus, dan I-bit di Status Register diatur, Pengawas Time-out Interrupt diaktifkan. Dalam mode ini interupsi yang sesuai dijalankan alih-alih reset jika timeout di Watchdog Timer terjadi.

Jika WDE diatur, WDIE secara otomatis dihapus oleh perangkat keras saat waktu habis terjadi. Ini berguna untuk menjaga keamanan Watchdog Reset saat menggunakan interupsi. Setelah bit WDIE dihapus, time-out berikutnya akan menghasilkan reset. Untuk menghindari Watchdog Reset, WDIE harus diatur setelah setiap interupsi.

Tabel 8-2. Konfigurasi Timer Watchdog

WDE WDIE Status Pengawas Pengawas Tindakan saat Time-out
0 0 Berhenti Tidak ada
0 1 Berlari Mengganggu
1 0 Berlari Mengatur ulang
1 1 Berlari Mengganggu

Bit 4 - WDCE: Watchdog Change Enable

Bit ini harus disetel ketika bit WDE ditulis ke logika nol. Jika tidak, Watchdog tidak akan dinonaktifkan. Setelah ditulis ke satu, perangkat keras akan menghapus bit ini setelah empat siklus jam. Lihat deskripsi bit WDE untuk prosedur penonaktifan Watchdog. Bit ini juga harus disetel saat mengubah bit prescaler. Lihat “Urutan Jangka Waktu untuk Mengubah Konfigurasi Pengatur Waktu Watchdog ”di halaman 43.

Bit 3 - WDE: Watchdog Enable

Saat WDE ditulis ke logika satu, Pengatur Waktu Pengawas diaktifkan, dan jika WDE ditulis ke logika nol, fungsi Pengawas Pengawas dinonaktifkan. WDE hanya dapat dihapus jika bit WDCE memiliki level logika satu. Untuk menonaktifkan Watchdog Timer yang diaktifkan, prosedur berikut harus diikuti:

Dalam operasi yang sama, tulis logika satu ke WDCE dan WDE. Logika yang satu harus ditulis ke WDE meskipun telah diatur ke satu sebelum operasi penonaktifan dimulai.

Dalam empat siklus jam berikutnya, tulis logika 0 ke WDE. Ini menonaktifkan Watchdog.

Pada tingkat keamanan 2, tidak mungkin menonaktifkan Pengatur Waktu Anjing, bahkan dengan algoritme yang dijelaskan di atas. Lihat “Urutan Waktu untuk Mengubah Konfigurasi Pengatur Waktu Watchdog” di halaman 43.

Pada tingkat keamanan 1, WDE diganti oleh WDRF di MCUSR. Lihat “MCUSR - Daftar Status MCU” di halaman 44 untuk deskripsi WDRF. Ini berarti WDE selalu disetel saat WDRF disetel. Untuk menghapus WDE, WDRF harus dihapus sebelum menonaktifkan Watchdog dengan prosedur yang dijelaskan di atas. Fitur ini memastikan beberapa pengaturan ulang selama kondisi yang menyebabkan kegagalan, dan pengaktifan yang aman setelah kegagalan.

Catatan: Jika pengawas waktu tidak akan digunakan dalam aplikasi, penting untuk melalui prosedur penonaktifan pengawas dalam inisialisasi perangkat. Jika Watchdog secara tidak sengaja diaktifkan, misalnyaample oleh penunjuk runaway atau kondisi brown-out, perangkat akan disetel ulang, yang pada gilirannya akan menyebabkan penyetelan ulang pengawas baru. Untuk menghindari situasi ini, perangkat lunak aplikasi harus selalu menghapus flag WDRF dan bit kontrol WDE dalam rutinitas inisialisasi.

Bit 5, 2: 0 - WDP [3: 0]: Pengawas Pengatur Waktu Prescaler 3, 2, 1, dan 0

Bit WDP [3: 0] menentukan prescaling Watchdog Timer ketika Watchdog Timer diaktifkan. Nilai prescaling yang berbeda dan Periode Batas Waktu yang sesuai ditampilkan di Tabel 8-3.

Tabel 8-3. Watchdog Timer Prescale Pilih

WDP3 WDP2 WDP1 WDP0 Jumlah Siklus Osilator WDT Time-out Khas di VCC = 5.0V
0 0 0 0 2K (2048) siklus 16 md
0 0 0 1 4K (4096) siklus 32 md
0 0 1 0 8K (8192) siklus 64 md
0 0 1 1 16K (16384) siklus 0.125 detik
0 1 0 0 32K (32764) siklus 0.25 detik
0 1 0 1 64K (65536) siklus 0.5 detik
0 1 1 0 128K (131072) siklus 1.0 detik
0 1 1 1 256K (262144) siklus 2.0 detik
1 0 0 0 512K (524288) siklus 4.0 detik
1 0 0 1 1024K (1048576) siklus 8.0 detik

Tabel 8-3. Prescale Timer Watchdog Pilih (Lanjutan)

WDP3 WDP2 WDP1 WDP0 Jumlah Siklus Osilator WDT Time-out Khas di VCC = 5.0V
1 0 1 0 Disimpan(1)
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1

Catatan: 1. Jika dipilih, salah satu dari pengaturan yang valid di bawah 0b1010 akan digunakan.

Terganggu

Bagian ini menjelaskan secara spesifik penanganan interupsi seperti yang dilakukan di ATtiny25 / 45/85. Untuk penjelasan umum tentang penanganan interupsi AVR, lihat “Reset dan Penanganan Interupsi” di halaman 12.

Vektor Interupsi di ATtiny25 / 45/85

Vektor interupsi ATtiny25 / 45/85 dijelaskan dalam Tabel 9-1di bawah.

Tabel 9-1. Atur Ulang dan Interupsi Vektor

Nomor Vektor Alamat Program Sumber Definisi Interupsi
1 ukuran 0x0000 MENGATUR ULANG Pin Eksternal, Atur Ulang Pengaktifan, Atur Ulang Brown-out, Atur Ulang Pengawas
2 ukuran 0x0001 INT0 Permintaan Interupsi Eksternal 0
3 ukuran 0x0002 PCINT0 Permintaan Interupsi Perubahan Pin 0
4 ukuran 0x0003 WAKTU1_COMPA Timer / Counter1 Bandingkan Pertandingan A
5 ukuran 0x0004 WAKTU1_OVF Timer / Counter1 Overflow
6 ukuran 0x0005 WAKTU0_OVF Timer / Counter0 Overflow
7 ukuran 0x0006 EE_RDY Siap EEPROM
8 ukuran 0x0007 ANA_KOMP Pembanding Analog
9 ukuran 0x0008 ADC Konversi ADC Selesai
10 ukuran 0x0009 WAKTU1_COMPB Timer / Counter1 Bandingkan Pertandingan B
11 0x000A WAKTU0_COMPA Timer / Counter0 Bandingkan Pertandingan A
12 0x000B WAKTU0_COMPB Timer / Counter0 Bandingkan Pertandingan B
13 0x000C WDT Time-out anjing penjaga
14 0x000D USI_MULAI USI MULAI
15 0x000E KAMI_OVF Luapan USI

Jika program tidak pernah mengaktifkan sumber interupsi, Vektor Interupsi tidak digunakan, dan kode program reguler dapat ditempatkan di lokasi ini.

Pengaturan tipikal dan umum untuk alamat vektor interupsi di ATtiny25/45/85 ditunjukkan dalam contoh programample di bawah.

Kode Perakitan Example
.org 0x0000 ; Tetapkan alamat berikutnya penyataan
RESET rjmp ; Alamat 0x0000
rjmp INT0_ISR ; Alamat 0x0001
rjmpPCINT0_ISR ; Alamat 0x0002
TIM1_COMPA_ISR_yang_digunakan ; Alamat 0x0003
TIM1_OVF_ISR yang dapat dibaca ; Alamat 0x0004
TIM0_OVF_ISR yang dapat dibaca ; Alamat 0x0005
rjmp EE_RDY_ISR ; Alamat 0x0006
rjmp ANA_KOMP_ISR ; Alamat 0x0007
ADC_ISR yang dapat dibaca ; Alamat 0x0008
TIM1_COMPB_ISR yang dapat dibaca ; Alamat 0x0009
TIM0_COMPA_ISR_yang_digunakan ; Alamat 0x000A
TIM0_COMPB_ISR yang dapat dibaca ; Alamat 0x000B
rjmp WDT_ISR ; Alamat 0x000C
rjmp USI_MULAI_ISR ; Alamat 0x000D
rjmp USI_OVF_ISR ; Alamat 0x000E
SETEL ULANG: ; Program utama dimulai
; Alamat 0x000F

Catatan: Lihat “Kode Contohamples” pada halaman 6.

Interupsi Eksternal

Interupsi Eksternal dipicu oleh pin INT0 atau pin PCINT [5: 0] lainnya. Perhatikan bahwa, jika diaktifkan, interupsi akan terpicu meskipun pin INT0 atau PCINT [5: 0] dikonfigurasi sebagai output. Fitur ini menyediakan cara untuk menghasilkan interupsi perangkat lunak. Perubahan pin mengganggu PCI akan terpicu jika ada pin PCINT [5: 0] yang diaktifkan berubah. Kontrol Register PCMSK pin mana yang berkontribusi pada interupsi perubahan pin. Interupsi perubahan pin pada PCINT [5: 0] terdeteksi secara tidak sinkron. Ini menyiratkan bahwa interupsi ini dapat digunakan untuk membangunkan bagian juga dari mode tidur selain mode Idle.

Interupsi INT0 dapat dipicu oleh tepi jatuh atau naik atau level rendah. Ini diatur seperti yang ditunjukkan dalam spesifikasi untuk Register Kontrol MCU - MCUCR. Ketika interupsi INT0 diaktifkan dan dikonfigurasi sebagai pemicu level, interupsi akan terpicu selama pin ditahan rendah. Perhatikan bahwa pengenalan interupsi tepi jatuh atau naik pada INT0 membutuhkan kehadiran jam I / O, yang dijelaskan di "Sistem Jam dan Distribusinya" aktif halaman 23.

Interupsi Tingkat Rendah

Interupsi tingkat rendah pada INT0 terdeteksi secara tidak sinkron. Ini menyiratkan bahwa interupsi ini dapat digunakan untuk membangunkan bagian juga dari mode tidur selain mode Idle. Jam I / O dihentikan di semua mode tidur kecuali mode Idle.

Perhatikan bahwa jika interupsi yang dipicu level digunakan untuk pengaktifan dari Power-down, level yang diperlukan harus ditahan cukup lama agar MCU menyelesaikan pengaktifan untuk memicu interupsi level. Jika level menghilang sebelum akhir Waktu Start-up, MCU akan tetap aktif, tetapi interupsi tidak akan dihasilkan. Waktu start-up ditentukan oleh Sekering SUT dan CKSEL seperti yang dijelaskan dalam “Jam Sistem dan Opsi Jam” di halaman 23.

Jika level rendah pada pin interupsi dilepas sebelum perangkat bangun maka eksekusi program tidak akan dialihkan ke rutin layanan interupsi tetapi melanjutkan dari instruksi mengikuti perintah SLEEP.

Waktu Interupsi Perubahan Pin

mantanample waktu dari interupsi perubahan pin ditunjukkan pada: Gambar 9-1.

Deskripsi Register

MCUCR - Daftar Kontrol MCU

Register Kontrol Interupsi Eksternal A berisi bit kontrol untuk kontrol sensor interupsi.

Sedikit 7 6 5 4 3 2 1 0
ukuran 0x35 TUBUH 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 Awal 0 0 0 0 0 0 0 0

Bit 1: 0 - ISC0 [1: 0]: Interrupt Sense Control 0 Bit 1 dan Bit 0

Interupsi Eksternal 0 diaktifkan oleh pin eksternal INT0 jika bendera SREG I dan masker interupsi yang sesuai disetel. Level dan edge pada pin INT0 eksternal yang mengaktifkan interupsi ditentukan di Tabel 9-2. Nilai pada pin INT0 adalah sampdipimpin sebelum mendeteksi tepi. Jika edge atau toggle interupsi dipilih, pulsa yang bertahan lebih lama dari satu periode clock akan menghasilkan interupsi. Pulsa yang lebih pendek tidak dijamin menghasilkan interupsi. Jika interupsi level rendah dipilih, level rendah harus ditahan sampai penyelesaian instruksi yang sedang dieksekusi untuk menghasilkan interupsi.

Tabel 9-2. Interupsi 0 Kontrol Sense

ISC01 ISC00 Keterangan
0 0 Level INT0 yang rendah menghasilkan permintaan interupsi.
0 1 Setiap perubahan logis pada INT0 menghasilkan permintaan interupsi.
1 0 Tepi jatuh dari INT0 menghasilkan permintaan interupsi.
1 1 Tepi naik dari INT0 menghasilkan permintaan interupsi.

GIMSK - Pendaftaran Topeng Interupsi 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 Awal 0 0 0 0 0 0 0 0

Bit 7, 4: 0 - Res: Bit yang Dicadangkan

Bit-bit ini adalah bit-bit yang dicadangkan dalam ATtiny25 / 45/85 dan akan selalu dibaca sebagai nol.

Bit 6 - INT0: Permintaan Interupsi Eksternal 0 Aktif

Ketika bit INT0 disetel (satu) dan bit I dalam Status Register (SREG) disetel (satu), interupsi pin eksternal diaktifkan. Interrupt Sense Control0 bit 1/0 (ISC01 dan ISC00) dalam MCU Control Register (MCUCR) menentukan apakah interupsi eksternal diaktifkan pada tepi naik dan / atau turun dari pin INT0 atau level yang dirasakan. Aktivitas pada pin akan menyebabkan permintaan interupsi meskipun INT0 dikonfigurasi sebagai output. Interupsi yang sesuai dari Permintaan Interupsi Eksternal 0 dijalankan dari Vektor Interupsi INT0.

Bit 5 - PCIE: Pin Change Interrupt Enable

Ketika bit PCIE disetel (satu) dan bit I dalam Status Register (SREG) disetel (satu), interupsi perubahan pin diaktifkan. Setiap perubahan pada pin PCINT [5: 0] yang diaktifkan akan menyebabkan interupsi. Interupsi yang sesuai dari Permintaan Interupsi Perubahan Pin dijalankan dari Vektor Interupsi PCI. Pin PCINT [5: 0] diaktifkan secara individual oleh Register 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 Awal 0 0 0 0 0 0 0 0

Bit 7, 4: 0 - Res: Bit yang Dicadangkan

Bit-bit ini adalah bit-bit yang dicadangkan dalam ATtiny25 / 45/85 dan akan selalu dibaca sebagai nol.

Bit 6 - INTF0: Bendera Interupsi Eksternal 0

Ketika tepi atau logika berubah pada pin INT0 memicu permintaan interupsi, INTF0 menjadi set (satu). Jika I-bit di SREG dan bit INT0 di GIMSK ditetapkan (satu), MCU akan melompat ke Interrupt Vector yang sesuai. Bendera dihapus ketika rutinitas interupsi dijalankan. Alternatifnya, bendera dapat dihapus dengan menulis yang logis untuk itu. Bendera ini selalu dihapus ketika INT0 dikonfigurasi sebagai interupsi level.

Bit 5 - PCIF: Pin Change Interrupt Flag

Ketika logika berubah pada pin PCINT [5: 0] apa pun memicu permintaan interupsi, PCIF menjadi disetel (satu). Jika I-bit di SREG dan bit PCIE di GIMSK ditetapkan (satu), MCU akan melompat ke Vektor Interupsi yang sesuai. Bendera dihapus ketika rutinitas interupsi dijalankan. Alternatifnya, bendera dapat dihapus dengan menulis yang logis untuk itu.

PCMSK - Pin Change Mask Register

Sedikit 7 6 5 4 3 2 1 0
ukuran 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 Awal 0 0 0 0 0 0 0 0

Bit 7: 6 - Res: Bit yang Dicadangkan

Bit-bit ini adalah bit-bit yang dicadangkan dalam ATtiny25 / 45/85 dan akan selalu dibaca sebagai nol.

Bit 5: 0 - PCINT [5: 0]: Perubahan Pin Aktifkan Masker 5: 0

Setiap bit PCINT [5: 0] memilih apakah interupsi perubahan pin diaktifkan pada pin I / O yang sesuai. Jika PCINT [5: 0] disetel dan bit PCIE di GIMSK disetel, interupsi perubahan pin diaktifkan pada pin I / O yang sesuai. Jika PCINT [5: 0] dihapus, interupsi perubahan pin pada pin I / O yang sesuai dinonaktifkan.

Port masukan/keluaran

Perkenalan

Semua port AVR memiliki fungsionalitas Read-Modify-Write yang sebenarnya saat digunakan sebagai port I/O digital umum. Ini berarti bahwa arah satu pin port dapat diubah tanpa secara tidak sengaja mengubah arah pin lainnya dengan instruksi SBI dan CBI. Hal yang sama berlaku saat mengubah nilai drive (jika dikonfigurasi sebagai output) atau mengaktifkan/menonaktifkan resistor pull-up (jika dikonfigurasi sebagai input). Setiap buffer output memiliki karakteristik drive simetris dengan kemampuan sink dan sumber yang tinggi. Driver pin cukup kuat untuk menggerakkan tampilan LED secara langsung. Semua pin port memiliki resistor pull-up yang dapat dipilih secara individual dengan tegangan suplaitage resistensi invarian. Semua pin I/O memiliki dioda proteksi ke VCC dan Ground seperti yang ditunjukkan pada Gambar 10-1. Lihat “Karakteristik Listrik” di halaman 161 untuk daftar lengkap parameter.

Gambar 10-1. Skema Setara Pin I/O

Gambar 10

Semua register dan referensi bit pada bagian ini ditulis dalam bentuk umum. Huruf kecil “x” mewakili huruf penomoran untuk port, dan huruf kecil “n” mewakili nomor bit. Namun, ketika menggunakan register atau bit yang didefinisikan dalam suatu program, bentuk yang tepat harus digunakan. Untuk mantanample, PORTB3 untuk bit no. 3 di Port B, di sini umumnya didokumentasikan sebagai PORTxn. Register I/O fisik dan lokasi bit terdaftar di "Register Description" di halaman 64.

Tiga lokasi alamat memori I / O dialokasikan untuk setiap port, masing-masing untuk Data Register - PORTx, Data Direction Register - DDRx, dan Port Input Pins - PINx. Lokasi Port Input Pin I / O hanya baca, sedangkan Register Data dan Register Arah Data adalah baca / tulis. Namun, menulis logika satu ke bit di Register PINx, akan menghasilkan toggle di bit yang sesuai di Register Data. Selain itu, bit Pull-up Disable - PUD di MCUCR menonaktifkan fungsi pull-up untuk semua pin di semua port saat diatur.

Menggunakan port I / O sebagai General Digital I / O dijelaskan di “Ports sebagai General Digital I / O” di halaman 53. Kebanyakan pin port dibuat multipleks dengan fungsi alternatif untuk fitur periferal pada perangkat. Bagaimana setiap fungsi alternatif mengganggu pin port dijelaskan dalam “Fungsi Port Alternatif” di halaman 57. Lihat bagian modul individu untuk penjelasan lengkap tentang fungsi alternatif.

Perhatikan bahwa mengaktifkan fungsi alternatif dari beberapa pin port tidak mempengaruhi penggunaan pin lain di port sebagai I / O digital umum.

Ports sebagai General Digital I / O

Port tersebut adalah port I / O dua arah dengan pull-up internal opsional. Gambar 10-2 menunjukkan deskripsi fungsional dari satu pin port I / O, yang secara umum disebut Pxn.

Gambar 10-2. I/O Digital Umum(1)

Gambar 10

Konfigurasi Pin

Setiap pin port terdiri dari tiga bit register: DDxn, PORTxn, dan PINxn. Seperti yang ditunjukkan di "Register Description" di halaman 64, bit DDxn diakses di alamat DDRx I / O, bit PORTxn di alamat PORTx I / O, dan bit PINxn di alamat PINx I / O.

Bit DDxn di DDRx Register memilih arah pin ini. Jika DDxn ditulis dengan logika satu, Pxn dikonfigurasi sebagai pin keluaran. Jika DDxn ditulis logika nol, Pxn dikonfigurasi sebagai pin input.

Jika PORTxn ditulis logika satu ketika pin dikonfigurasi sebagai pin input, resistor pull-up diaktifkan. Untuk mematikan resistor pull-up, PORTxn harus ditulis dengan logika nol atau pin harus dikonfigurasi sebagai pin keluaran. Pin port tri-status ketika kondisi reset menjadi aktif, bahkan jika tidak ada jam yang berjalan.

Jika PORTxn ditulis logika satu ketika pin dikonfigurasi sebagai pin keluaran, pin port didorong tinggi (satu). Jika PORTxn ditulis logika nol ketika pin dikonfigurasi sebagai pin output, pin port didorong rendah (nol).

Mengalihkan Pin

Menulis logika satu ke PINxn akan mengubah nilai PORTxn, tidak bergantung pada nilai DDRxn. Perhatikan bahwa instruksi SBI dapat digunakan untuk mengubah satu bit di port.

Beralih Antara Input dan Output

Saat beralih antara tri-state ({DDxn, PORTxn} = 0b00) dan keluaran tinggi ({DDxn, PORTxn} = 0b11), keadaan antara dengan pull-up diaktifkan {DDxn, PORTxn} = 0b01) atau keluaran rendah ({DDxn, PORTxn} = 0b10) harus terjadi. Biasanya, status aktif pull-up sepenuhnya dapat diterima, karena lingkungan impedan tinggi tidak akan melihat perbedaan antara driver tinggi yang kuat dan pull-up. Jika tidak demikian, bit PUD di Daftar MCUCR dapat diatur untuk menonaktifkan semua pull-up di semua port.

Beralih antara input dengan pull-up dan output rendah menghasilkan masalah yang sama. Pengguna harus menggunakan status tiga ({DDxn, PORTxn} = 0b00) atau status keluaran tinggi ({DDxn, PORTxn} = 0b10) sebagai langkah perantara.

Tabel 10-1 meringkas sinyal kontrol untuk nilai pin.

Tabel 10-1. Konfigurasi Pin Port

DDxn PORTXN PUD

(di MCUCR)

masukan/keluaran Tarik ke atas Komentar
0 0 X Masukan TIDAK Tri-negara (Hi-Z)
0 1 0 Masukan Ya Pxn akan mengalirkan arus jika ext. ditarik rendah.
0 1 1 Masukan TIDAK Tri-negara (Hi-Z)
1 0 X Keluaran TIDAK Output Rendah (Tenggelam)
1 1 X Keluaran TIDAK Output Tinggi (Sumber)

Membaca Nilai Pin

Terlepas dari pengaturan Arah Data bit DDxn, pin port dapat dibaca melalui bit Register PINxn. Seperti yang ditunjukkan di Gambar 10-2, bit PINxn Register dan kait sebelumnya merupakan sinkronisasi. Ini diperlukan untuk menghindari metastabilitas jika pin fisik berubah nilai di dekat tepi jam internal, tetapi juga menyebabkan penundaan. Gambar 10-3 menunjukkan diagram waktu sinkronisasi saat membaca nilai pin yang diterapkan secara eksternal. Penundaan propagasi maksimum dan minimum masing-masing dilambangkan dengan tpd,max dan tpd,min.

Pertimbangkan periode jam yang dimulai segera setelah tepi jatuh pertama dari jam sistem. Pengunci ditutup saat jam rendah, dan menjadi transparan saat jam tinggi, seperti yang ditunjukkan oleh daerah bayangan sinyal "SYNC LATCH". Nilai sinyal terkunci ketika jam sistem menjadi rendah. Ini dicatat dalam PINxn Register di tepi jam positif berikutnya. Seperti yang ditunjukkan oleh dua panah tpd, max dan tpd, min, transisi sinyal tunggal pada pin akan tertunda antara periode jam sistem ½ dan 1½ tergantung pada waktu pernyataan.

Saat membaca kembali nilai pin yang ditetapkan perangkat lunak, instruksi nop harus dimasukkan seperti yang ditunjukkan pada Gambar 10-4. Instruksi out menyetel sinyal "SYNC LATCH" di tepi positif jam. Dalam hal ini, penundaan tpd melalui sinkronisasi adalah satu periode jam sistem.

Kode berikut example menunjukkan bagaimana mengatur pin port B 0 dan 1 tinggi, 2 dan 3 rendah, dan menentukan pin port dari 4 hingga 5 sebagai input dengan pull-up yang ditugaskan ke pin port 4. Nilai pin yang dihasilkan dibaca kembali, tetapi seperti yang telah dibahas sebelumnya, instruksi nop disertakan untuk dapat membaca kembali nilai yang baru saja diberikan ke beberapa pin.

Kode Perakitan Example(1)

; Tentukan pull-up dan atur 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 sinkronisasi

tidak

; Baca pin port

di r16, PINB

Catatan: Untuk program perakitan, dua register sementara digunakan untuk meminimalkan waktu dari pull-up yang diatur pada pin 0, 1 dan 4, hingga bit arah diatur dengan benar, mendefinisikan bit 2 dan 3 sebagai rendah dan mendefinisikan ulang bit 0 dan 1 sebagai driver tinggi yang kuat.

Kode C Contohample
unsigned char i;

/* Mendefinisikan pull-up dan mengatur output tinggi */

/* Tentukan arah untuk pin port */ PORTB = (1<

DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0);

/* Sisipkan nop untuk sinkronisasi*/

_NOP ();

/* Membaca pin port */ i = PINB;

Pengaktifan Input Digital dan Mode Tidur

Seperti yang ditunjukkan pada Gambar 10-2, sinyal input digital dapat clamped ke ground pada input dari schmitt-trigger. Sinyal SLEEP pada gambar, diatur oleh MCU Sleep Controller dalam mode Power-down untuk menghindari konsumsi daya yang tinggi jika beberapa sinyal input dibiarkan mengambang, atau memiliki level sinyal analog mendekati VCC/2.

SLEEP diganti untuk pin port yang diaktifkan sebagai pin interupsi eksternal. Jika permintaan interupsi eksternal tidak diaktifkan, SLEEP juga aktif untuk pin ini. SLEEP juga diganti dengan berbagai fungsi alternatif lainnya seperti yang dijelaskan di “Fungsi Port Alternatif” di halaman 57.

Jika logika tingkat tinggi ("satu") hadir pada pin interupsi eksternal asinkron yang dikonfigurasi sebagai "Interrupt pada Rising Edge, Falling Edge, atau Any Logic Change on Pin" sementara interupsi eksternal tidak diaktifkan, Bendera Interupsi Eksternal yang sesuai akan diatur saat melanjutkan dari mode Tidur yang disebutkan di atas, sebagai clamping dalam mode tidur ini menghasilkan perubahan logika yang diminta.

Pin Tidak Terhubung

Jika beberapa pin tidak digunakan, disarankan untuk memastikan bahwa pin ini memiliki level yang ditentukan. Meskipun sebagian besar input digital dinonaktifkan dalam mode tidur nyenyak seperti yang dijelaskan di atas, input mengambang harus dihindari untuk mengurangi konsumsi arus di semua mode lain di mana input digital diaktifkan (Reset, mode Aktif dan mode Idle).

Metode paling sederhana untuk memastikan level tertentu dari pin yang tidak terpakai, adalah mengaktifkan pull-up internal. Dalam hal ini, pull-up akan dinonaktifkan selama reset. Jika konsumsi daya rendah selama reset penting, disarankan untuk menggunakan pull-up atau pull-down eksternal. Menghubungkan pin yang tidak terpakai secara langsung ke VCC atau GND tidak disarankan, karena ini dapat menyebabkan arus berlebih jika pin tersebut secara tidak sengaja dikonfigurasi sebagai output.

Fungsi Port Alternatif

Kebanyakan pin port memiliki fungsi alternatif selain sebagai I / O digital umum. Gambar 10-5 menunjukkan bagaimana sinyal dari kontrol pin port disederhanakan Gambar 10-2 dapat diganti dengan fungsi alternatif. Sinyal utama mungkin tidak ada di semua pin port, tetapi gambar tersebut berfungsi sebagai deskripsi umum yang berlaku untuk semua pin port dalam keluarga mikrokontroler AVR.

Tabel 10-2. Deskripsi Generik Sinyal Pengganti untuk Fungsi Alternatif

Nama Sinyal Nama Lengkap Keterangan
PUO Pull-up Override Aktifkan Jika sinyal ini disetel, pengaktifan pull-up dikontrol oleh sinyal PUOV. Jika sinyal ini hilang, pull-up diaktifkan saat

{DDxn, PORTxn, PUD} = 0b010.

PUOV Nilai Penggantian Pull-up Jika PUOE diatur, pull-up diaktifkan / dinonaktifkan saat PUOV diatur / dihapus, terlepas dari pengaturan bit Register DDxn, PORTxn, dan PUD.
HATI-HATI Mengaktifkan Pengesampingan Arah Data Jika sinyal ini disetel, Output Driver Enable dikendalikan oleh sinyal DDOV. Jika sinyal ini dihapus, driver Output diaktifkan oleh bit Register DDxn.
DDOV Nilai Pengabaian Arah Data Jika DDOE diatur, Driver Output diaktifkan / dinonaktifkan ketika DDOV diatur / dihapus, terlepas dari pengaturan bit Register DDxn.
PVOE Mengaktifkan Penimpaan Nilai Port Jika sinyal ini disetel dan Driver Output diaktifkan, nilai port dikontrol oleh sinyal PVOV. Jika PVOE dihapus, dan Driver Output diaktifkan, Nilai port dikontrol oleh bit PORTxn Register.
PVOV Nilai Penimpaan Nilai Port Jika PVOE disetel, nilai port disetel ke PVOV, terlepas dari setelan bit Register PORTxn.
PTOE Port Toggle Override Aktifkan Jika PTOE diset, bit PORTxn Register terbalik.
MATI Input Digital Enable Override Enable Jika bit ini disetel, Pengaktifan Input Digital dikontrol oleh sinyal DIEOV. Jika sinyal ini hilang, Pengaktifan Input Digital ditentukan oleh status MCU (mode Normal, mode tidur).
DIEOV Input Digital Enable Override Value Jika DIEOE diatur, Input Digital diaktifkan / dinonaktifkan saat DIEOV diatur / dihapus, terlepas dari status MCU (mode Normal, mode tidur).
DI Masukan digital Ini adalah Input Digital untuk fungsi alternatif. Pada gambar, sinyal terhubung ke output pemicu schmitt tetapi sebelum sinkronisasi. Kecuali jika Input Digital digunakan sebagai sumber jam, modul dengan fungsi alternatif akan menggunakan penyinkronnya sendiri.
AIO Input / Output Analog Ini adalah Input / Output Analog ke / dari fungsi alternatif. Sinyal dihubungkan langsung ke pad, dan dapat digunakan secara dua arah.

Subbagian berikut menjelaskan secara singkat fungsi alternatif untuk setiap port, dan menghubungkan sinyal utama ke fungsi alternatif. Lihat deskripsi fungsi alternatif untuk detail lebih lanjut.

Fungsi Alternatif Port B

Pin Port B dengan fungsi alternatif ditampilkan di Tabel 10-3.

Tabel 10-3. Pin Port B Fungsi Alternatif

Pin Pelabuhan Fungsi Alternatif
PB5

RESET: Atur Ulang Pin

dW: debugWIRE I / O ADC0: Saluran Input ADC 0

PCINT5: Interupsi Perubahan Pin, Sumber 5

PB4 XTAL2: Output Osilator Kristal CLKO: Output Jam Sistem ADC2: Saluran Input ADC 2

OC1B: Timer / Counter1 Bandingkan Pertandingan B Output PCINT4: Pin Change Interrupt 0, Source 4

PB3 XTAL1: Input Osilator Kristal CLKI: Input Jam Eksternal ADC3: Saluran Input ADC 3

OC1B: Timer Pelengkap / Penghitung1 Bandingkan Pertandingan B Output PCINT3: Pin Change Interrupt 0, Source 3

PB2 SCK: Input Jam Seri ADC1: Saluran Input ADC 1

T0: Timer / Penghitung0 Sumber Jam USCK: Jam USI (Mode Tiga Kabel) SCL: Jam USI (Mode Dua Kabel) INT0: Interupsi Eksternal 0 Input PCINT2: Interupsi Perubahan Pin 0, Sumber 2

PB1 MISO: Input Data Master SPI / Output Data Slave AIN1: Pembanding Analog, Input Negatif OC0B: Timer / Penghitung0 Bandingkan Cocok B Output OC1A: Timer / Penghitung1 Bandingkan Match A Output DO: Output Data USI (Mode Tiga Kabel) PCINT1: Pin Change Interrupt 0, Sumber 1
PB0 MOSI :: Output Data Master SPI / Input Data Slave AIN0: Pembanding Analog, Input Positif

OC0A: Timer/Counter0 Bandingkan Match A output

OC1A: Timer / Penghitung Pelengkap1 Bandingkan Cocok A Output DI: Input Data USI (Mode Tiga Kabel)

SDA: Input Data USI (Mode Dua Kabel) AREF: Referensi Analog Eksternal PCINT0: Interupsi Perubahan Pin 0, Sumber 0

Port B, Bit 5 - RESET / dW / ADC0 / PCINT5

RESET: Input Reset Eksternal aktif rendah dan diaktifkan dengan membatalkan program ("1") Sekring RSTDISBL. Pullup diaktifkan dan driver output dan input digital dinonaktifkan ketika pin digunakan sebagai pin RESET.

dW: Ketika sekering debugWIRE Enable (DWEN) diprogram dan bit Lock tidak terprogram, sistem debugWIRE dalam perangkat target diaktifkan. Pin port RESET dikonfigurasi sebagai pin I / O dua arah wire-AND (open-drain) dengan pull-up diaktifkan dan menjadi gateway komunikasi antara target dan emulator.

ADC0: Konverter Analog ke Digital, Saluran 0.

PCINT5: Ubah Pin Sumber Interupsi 5.

Port B, Bit 4 - XTAL2 / CLKO / ADC2 / OC1B / PCINT4

XTAL2: Pin Osilator Jam Chip 2. Digunakan sebagai pin jam untuk semua sumber jam chip kecuali Osilator RC kalibrasi internal dan jam eksternal. Saat digunakan sebagai pin clock, pin tersebut tidak dapat digunakan sebagai pin I / O. Saat menggunakan Osilator RC internal yang dapat dikalibrasi atau Jam eksternal sebagai sumber jam Chip, PB4 berfungsi sebagai pin I / O biasa.

CLKO: Jam sistem yang dibagi dapat dikeluarkan pada pin PB4. Jam sistem yang dibagi akan menjadi keluaran jika CKOUT Fuse sudah diprogram, terlepas dari pengaturan PORTB4 dan DDB4. Ini juga akan menjadi keluaran selama reset.

ADC2: Konverter Analog ke Digital, Saluran 2.

OC1B: Output Compare Match output: Pin PB4 dapat berfungsi sebagai output eksternal untuk Timer / Counter1 Compare Match B ketika dikonfigurasi sebagai output (set DDB4). Pin OC1B juga merupakan pin keluaran untuk fungsi timer mode PWM.

PCINT4: Ubah Pin Sumber Interupsi 4.

Port B, Bit 3 - XTAL1 / CLKI / ADC3 / OC1B / PCINT3

XTAL1: Pin Osilator Jam Chip 1. Digunakan untuk semua sumber jam chip kecuali osilator RC kalibrasi internal. Saat digunakan sebagai pin clock, pin tersebut tidak dapat digunakan sebagai pin I / O.

CLKI: Input Jam dari sumber jam eksternal, lihat "Jam Eksternal" di halaman 26.

ADC3: Konverter Analog ke Digital, Saluran 3.

OC1B: Output Terbalik Bandingkan Output pertandingan: Pin PB3 dapat berfungsi sebagai output eksternal untuk Timer / Counter1 Bandingkan Pertandingan B ketika dikonfigurasi sebagai output (kumpulan DDB3). Pin OC1B juga merupakan pin keluaran terbalik untuk fungsi pengatur waktu mode PWM.

PCINT3: Ubah Pin Sumber Interupsi 3.

Port B, Bit 2 - SCK / ADC1 / T0 / USCK / SCL / INT0 / PCINT2

SCK: Output Master Clock, pin input Jam Slave untuk saluran SPI. Ketika SPI diaktifkan sebagai Slave, pin ini dikonfigurasi sebagai input terlepas dari pengaturan DDB2. Saat SPI diaktifkan sebagai Master, arah data pin ini dikontrol oleh DDPB2. Saat pin dipaksa oleh SPI untuk menjadi input, pull-up masih dapat dikontrol oleh bit PORTB2.

ADC1: Konverter Analog ke Digital, Saluran 1.

T0: Sumber penghitung Timer / Penghitung0.

USCK: Jam Antarmuka Seri Universal mode tiga kabel.

SCL: Jam Serial mode dua kabel untuk mode dua kabel USI.

INT0: Sumber Interupsi Eksternal 0.

PCINT2: Ubah Pin Sumber Interupsi 2.

Port B, Bit 1 - MISO / AIN1 / OC0B / OC1A / DO / PCINT1

MISO: Input Master Data, pin output Data Slave untuk saluran SPI. Saat SPI diaktifkan sebagai Master, pin ini dikonfigurasi sebagai input terlepas dari pengaturan DDB1. Saat SPI diaktifkan sebagai Slave, arah data pin ini dikontrol oleh DDB1. Saat pin dipaksa oleh SPI untuk menjadi input, pull-up masih dapat dikontrol oleh bit PORTB1.

AIN1: Input Negatif Pembanding Analog. Konfigurasikan pin port sebagai input dengan pull-up internal dimatikan untuk menghindari fungsi port digital mengganggu fungsi Pembanding Analog.

OC0B: Keluaran Bandingkan keluaran Pertandingan. Pin PB1 dapat berfungsi sebagai output eksternal untuk Timer / Counter0 Bandingkan Pertandingan B. Pin PB1 harus dikonfigurasi sebagai output (set DDB1 (satu)) untuk menjalankan fungsi ini. Pin OC0B juga merupakan pin keluaran untuk fungsi timer mode PWM.

OC1A: Output Compare Match output: Pin PB1 dapat berfungsi sebagai output eksternal untuk Timer / Counter1 Compare Match B ketika dikonfigurasi sebagai output (set DDB1). Pin OC1A juga merupakan pin keluaran untuk fungsi timer mode PWM.

LAKUKAN: Output Data Antarmuka Seri Universal mode tiga kabel. Mode tiga kabel Output data mengesampingkan nilai PORTB1 dan didorong ke port ketika arah data bit DDB1 diatur (satu). PORTB1 masih mengaktifkan pull-up, jika arahnya adalah input dan PORTB1 diatur (satu).

PCINT1: Ubah Pin Sumber Interupsi 1.

Port B, Bit 0 - MOSI / AIN0 / OC0A / OC1A / DI / SDA / AREF / PCINT0

MOSI: Output Data Master SPI, Input Data Slave untuk saluran SPI. Ketika SPI diaktifkan sebagai Slave, pin ini dikonfigurasi sebagai input terlepas dari pengaturan DDB0. Saat SPI diaktifkan sebagai Master, arah data pin ini dikontrol oleh DDB0. Ketika pin dipaksa oleh SPI untuk menjadi input, pull-up masih dapat dikontrol oleh bit PORTB0.

AIN0: Input Positif Pembanding Analog. Konfigurasikan pin port sebagai input dengan pull-up internal dimatikan untuk menghindari fungsi port digital mengganggu fungsi Pembanding Analog.

OC0A: Keluaran Bandingkan keluaran Pertandingan. Pin PB0 dapat berfungsi sebagai output eksternal untuk Timer / Counter0 Bandingkan Match A ketika dikonfigurasi sebagai output (set DDB0 (satu)). Pin OC0A juga merupakan pin keluaran untuk fungsi timer mode PWM.

OC1A: Output Terbalik Bandingkan Output pertandingan: Pin PB0 dapat berfungsi sebagai output eksternal untuk Timer / Counter1 Bandingkan Pertandingan B ketika dikonfigurasi sebagai output (set DDB0). Pin OC1A juga merupakan pin keluaran terbalik untuk fungsi pengatur waktu mode PWM.

SDA: Data Antarmuka Serial mode dua kabel.

AREF: Referensi Analog Eksternal untuk ADC. Pullup dan driver output dinonaktifkan pada PB0 ketika pin digunakan sebagai referensi eksternal atau Vol . Internaltage Referensi dengan kapasitor eksternal pada pin AREF.

DI: Input Data dalam mode Tiga kabel USI. Mode USI Three-wire tidak mengesampingkan fungsi port normal, jadi pin harus dikonfigurasi sebagai input untuk fungsi DI.

PCINT0: Ubah Pin Sumber Interupsi 0.

Tabel 10-4 Dan Tabel 10-5 hubungkan fungsi alternatif Port B dengan sinyal utama yang ditunjukkan di Gambar 10-5 halaman 58.

Tabel 10-4. Mengganti Sinyal untuk Fungsi Alternatif di PB[5:3]

Nama Sinyal PB5 / RESET / ADC0 / PCINT5 PB4/ADC2/XTAL2/ OC1B/PCINT4 PB3/ADC3/XTAL1/ OC1B/PCINT3
PUO

RSTDISBL(1) • TINGGAL(1)

0 0
PUOV 1 0 0
HATI-HATI RSTDISBL(1) • TINGGAL(1) 0 0
DDOV transmisi debugWire 0 0
PVOE 0 OC1B Aktifkan

OC1B Aktifkan

PVOV 0 OC1B OC1B
PTOE 0 0 0
MATI

RSTDISBL(1) + (PCINT5 • PCIE + ADC0D)

PCINT4 • PCIE + ADC2D PCINT3 • PCIE + ADC3D
DIEOV ADC0D ADC2D ADC3D
DI Masukan PCINT5 Masukan PCINT4 Masukan PCINT3
AIO RESET Input, Input ADC0 Masukan ADC2 Masukan ADC3

Catatan: ketika Fuse adalah "0" (Diprogram).

Tabel 10-5. Mengganti Sinyal untuk Fungsi Alternatif di PB[2:0]

Nama Sinyal PB2/SCK/ADC1/T0/ USCK/SCL/INT0/PCINT2 PB1/MISO/DO/AIN1/ OC1A/OC0B/PCINT1 PB0/MOSI/DI/SDA/AIN0/AR EF/OC1A/OC0A/

PCINT0

PUO USI_DUA_KABEL 0 USI_DUA_KABEL
PUOV 0 0 0
HATI-HATI USI_DUA_KABEL 0 USI_DUA_KABEL
DDOV (USI_SCL_TAHAN + PORTB2) • DDB2 0  

(SDA + PORTB0) • DDB0

PVOE USI_DUA_KABEL • DDB2 OC0B Aktifkan + OC1A Aktifkan + USI_THREE_WIRE

OC0A Aktifkan + OC1A Aktifkan + (USI_TWO_WIRE

(DDB0)

PVOV 0 OC0B + OC1A + LAKUKAN

OC0A + OC1A

PTOE ASITC 0 0
MATI PCINT2 • PCIE + ADC1D + USISIE PCINT1 • PCIE + AIN1D PCINT0 • PCIE + AIN0D + PENGGUNAAN
DIEOV ADC1D 1D APA ADANYA 0D APA ADANYA
DI T0 / USCK / SCL / INT0 /

Masukan PCINT2

Masukan PCINT1 Masukan DI / SDA / PCINT0
AIO Masukan ADC1 Input Negatif Pembanding Analog Input Positif Pembanding Analog

Deskripsi Register

MCUCR - Daftar Kontrol MCU

Sedikit 7 6 5 4 3 2 1 0
ukuran 0x35 TUBUH 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 Awal 0 0 0 0 0 0 0 0

Bit 6 - PUD: Pull-up Nonaktifkan

Ketika bit ini ditulis ke satu, pull-up di port I / O dinonaktifkan bahkan jika Register DDxn dan PORTxn dikonfigurasi untuk mengaktifkan pull-up ({DDxn, PORTxn} = 0b01). Lihat “Mengkonfigurasi Pin” di halaman 54 untuk detail lebih lanjut tentang fitur ini.

PORTB - Register Data Port B.

Sedikit 7 6 5 4 3 2 1 0
ukuran 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 Awal 0 0 0 0 0 0 0 0

DDRB - Daftar Arah Data Port B.

Sedikit 7 6 5 4 3 2 1 0
ukuran 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 Awal 0 0 0 0 0 0 0 0

PINB - Alamat Pin Input Port B.

Sedikit 7 6 5 4 3 2 1 0
ukuran 0x16 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0 PINB
Baca/Tulis R R R/W R/W R/W R/W R/W R/W
Nilai Awal 0 0 Tidak tersedia Tidak tersedia Tidak tersedia Tidak tersedia Tidak tersedia Tidak tersedia

Timer / Counter8 0-bit dengan PWM

Fitur

Dua Unit Perbandingan Output Independen

Output Buffer Ganda Bandingkan Register

Hapus Timer saat Bandingkan Pertandingan (Muat Ulang Otomatis)

Bebas Glitch, Modulator Lebar Pulsa Benar Fase (PWM)

Variabel Periode PWM

Generator Frekuensi

Tiga Sumber Interupsi Independen (TOV0, OCF0A, dan OCF0B)

Lebihview

Timer / Counter0 adalah modul Timer / Counter tujuan umum 8-bit, dengan dua Unit Perbandingan Output independen, dan dengan dukungan PWM. Hal ini memungkinkan waktu pelaksanaan program yang akurat (manajemen acara) dan generasi gelombang.

Diagram blok yang disederhanakan dari Timer / Penghitung 8-bit ditunjukkan di Gambar 11-1. Untuk penempatan sebenarnya dari pin I / O, lihat “Pinout ATtiny25 / 45/85” di halaman 2. Register I / O yang dapat diakses CPU, termasuk bit I / O dan pin I / O, ditampilkan dengan huruf tebal. Register I / O khusus perangkat dan lokasi bit tercantum di "Register Description" di halaman 77.

Timer/Counter (TCNT0) dan Register Pembanding Keluaran (OCR0A dan OCR0B) adalah register 8-bit. Sinyal permintaan interupsi (disingkat Int.Req. pada gambar) semuanya terlihat di Timer Interrupt Flag Register (TIFR). Semua interupsi ditutup secara individual dengan Timer Interrupt Mask Register (TIMSK). TIFR dan TIMSK tidak ditampilkan pada gambar.

Timer/Counter dapat di-clock secara internal, melalui prescaler, atau dengan sumber clock eksternal pada pin T0. Blok logika Pilih Jam mengontrol sumber dan tepi jam mana yang digunakan Timer/Counter untuk menambah (atau mengurangi) nilainya. Timer/Counter tidak aktif ketika tidak ada sumber clock yang dipilih. Output dari logika Pilih Jam disebut sebagai timer jam (clkT0).

Register Perbandingan Output buffer ganda (OCR0A dan OCR0B) dibandingkan dengan nilai Timer / Counter setiap saat. Hasil perbandingan dapat digunakan oleh Waveform Generator untuk menghasilkan PWM atau output frekuensi variabel pada pin Output Compare (OC0A dan OC0B). Lihat "Unit Perbandingan Output" di halaman 69. untuk detailnya. Acara Bandingkan Pertandingan juga akan mengatur Bendera Perbandingan (OCF0A atau OCF0B) yang dapat digunakan untuk menghasilkan permintaan interupsi Perbandingan Output.

Definisi

Banyak register dan referensi bit di bagian ini ditulis dalam bentuk umum. Huruf kecil “n” menggantikan nomor Timer / Counter, dalam hal ini 0. Huruf kecil “x” menggantikan Output Bandingkan Unit, dalam hal ini Bandingkan Unit A atau Bandingkan Unit B. Namun, saat menggunakan register atau bit mendefinisikan dalam sebuah program, bentuk yang tepat harus digunakan, yaitu TCNT0 untuk mengakses nilai pencacah Timer / Counter0 dan seterusnya.

Definisi dalam Tabel 11-1 juga digunakan secara ekstensif di seluruh dokumen.

Tabel 11-1. Definisi

Konstan Keterangan
DASAR Penghitung mencapai BAWAH ketika menjadi 0x00
MAKS Penghitung mencapai MAXimumnya ketika menjadi 0xFF (desimal 255)
ATAS Penghitung mencapai TOP ketika itu menjadi sama dengan nilai tertinggi dalam urutan penghitungan. Nilai TOP dapat ditetapkan menjadi nilai tetap 0xFF (MAX) atau nilai yang disimpan dalam Register OCR0A. Penetapannya tergantung pada mode operasi

Timer / Penghitung Prescaler dan Sumber Jam

Pengatur Waktu / Penghitung dapat dihitung oleh sumber jam internal atau eksternal. Sumber clock dipilih oleh logika Clock Select yang dikontrol oleh Clock Select (c) bit yang terletak di Timer / Counter0 Control Register (TCCR0B).

Sumber Jam Internal dengan Prescaler

Timer/Counter0 dapat di-clock langsung oleh jam sistem (dengan menyetel CS0[2:0] = 1). Ini memberikan operasi tercepat, dengan frekuensi jam timer/pencacah maksimum sama dengan frekuensi jam sistem (fCLK_I/O). Alternatifnya, satu dari empat ketukan dari prescaler dapat digunakan sebagai sumber jam. Jam prescaled memiliki frekuensi baik

Atur Ulang Prescaler

Prescaler berjalan bebas, yaitu beroperasi secara independen dari logika Clock Select dari Timer/Counter0. Karena prescaler tidak terpengaruh oleh pemilihan jam timer/counter, status prescaler akan berimplikasi pada situasi di mana jam yang telah diskalakan digunakan. Satu mantanample artefak prescaling adalah ketika timer/counter diaktifkan dan di-clock oleh prescaler (6 > CS0[2:0] > 1). Jumlah siklus jam sistem dari saat pengatur waktu diaktifkan hingga penghitungan pertama terjadi dapat dari 1 hingga N+1 siklus jam sistem, di mana N sama dengan pembagi prescaler (8, 64, 256, atau 1024).

Prescaler Reset dapat digunakan untuk mensinkronisasi Timer / Counter untuk pelaksanaan program.

Sumber Jam Eksternal

Sumber clock eksternal yang diterapkan pada pin T0 dapat digunakan sebagai timer/counter clock (clkT0). Pin T0 adalah sampdipimpin sekali setiap siklus jam sistem oleh logika sinkronisasi pin. tersinkronisasi (sampled) sinyal kemudian dilewatkan

melalui detektor tepi. Gambar 11-2 menunjukkan diagram blok ekuivalen fungsional dari sinkronisasi T0 dan logika detektor tepi. Register di-clock pada sisi positif jam sistem internal (clkI/O). Kait transparan dalam periode tinggi dari jam sistem internal.

Detektor tepi menghasilkan satu pulsa clkT0 untuk setiap sisi positif (CS0[2:0] = 7) atau negatif (CS0[2:0] = 6) yang dideteksinya.

Register OCR0x memiliki buffer ganda saat menggunakan salah satu mode Modulasi Lebar Pulsa (PWM). Untuk mode operasi normal dan Clear Timer on Compare (CTC), buffering ganda dinonaktifkan. Buffer ganda menyinkronkan pembaruan Register Perbandingan OCR0x ke atas atau bawah dari urutan penghitungan. Sinkronisasi mencegah terjadinya pulsa PWM dengan panjang ganjil, non-simetris, sehingga membuat keluaran bebas dari kesalahan.

Akses Register OCR0x mungkin tampak rumit, tetapi tidak demikian. Jika buffering ganda diaktifkan, CPU memiliki akses ke Register Penyangga OCR0x, dan jika buffering ganda dinonaktifkan, CPU akan mengakses OCR0x secara langsung.

Angkatan Output Bandingkan

Dalam mode pembangkitan gelombang non-PWM, output yang cocok dari komparator dapat dipaksakan dengan menulis satu ke bit Force Output Compare (FOC0x). Memaksa Perbandingan Pertandingan tidak akan menyetel Bendera OCF0x atau memuat ulang / menghapus pengatur waktu, tetapi pin OC0x akan diperbarui seolah-olah telah terjadi Perbandingan Pencocokan yang nyata (pengaturan bit COM0x [1: 0] menentukan apakah pin OC0x disetel, dihapus atau toggled).

Bandingkan Pencekalan Pertandingan dengan TCNT0 Tulis

Semua operasi tulis CPU ke Register TCNT0 akan memblokir Pencocokan Perbandingan apa pun yang terjadi di siklus jam pengatur waktu berikutnya, bahkan saat pengatur waktu dihentikan. Fitur ini memungkinkan OCR0x untuk diinisialisasi ke nilai yang sama seperti TCNT0 tanpa memicu interupsi saat Timer / Counter clock diaktifkan.

Menggunakan Unit Perbandingan Output

Karena menulis TCNT0 dalam mode operasi apa pun akan memblokir semua Perbandingan Cocok untuk satu siklus jam pengatur waktu, ada risiko yang terlibat saat mengubah TCNT0 saat menggunakan Unit Perbandingan Keluaran, terlepas dari apakah Pengatur Waktu / Penghitung sedang berjalan atau tidak. Jika nilai yang ditulis ke TCNT0 sama dengan nilai OCR0x, Perbandingan Pencocokan akan terlewatkan, sehingga menghasilkan bentuk gelombang yang salah. Demikian pula, jangan menulis nilai TCNT0 sama dengan BAWAH saat penghitung sedang menghitung mundur.

Pengaturan OC0x harus dilakukan sebelum mengatur Data Direction Register untuk pin port ke output. Cara termudah untuk menyetel nilai OC0x adalah dengan menggunakan bit strobe Force Output Compare (FOC0x) dalam mode Normal. Register OC0x menyimpan nilainya bahkan ketika berganti di antara mode Generasi Bentuk Gelombang.

Ketahuilah bahwa bit COM0x [1: 0] tidak memiliki buffer ganda bersama-sama dengan nilai pembanding. Mengubah bit COM0x [1: 0] akan segera berlaku.

Bandingkan Unit Hasil Pertandingan

Bit Compare Output mode (COM0x [1: 0]) memiliki dua fungsi. Generator Bentuk Gelombang menggunakan bit COM0x [1: 0] untuk menentukan status Perbandingan Output (OC0x) pada Pertandingan Perbandingan berikutnya. Juga, bit COM0x [1: 0] mengontrol sumber keluaran pin OC0x. Gambar 11-6 menunjukkan skema yang disederhanakan dari logika yang dipengaruhi oleh pengaturan bit COM0x [1: 0]. Register I / O, bit I / O, dan pin I / O pada gambar ditampilkan dengan huruf tebal. Hanya bagian dari I / O Port Control Register (DDR dan PORT) umum yang dipengaruhi oleh bit COM0x [1: 0] yang ditampilkan. Jika mengacu pada status OC0x, rujukannya adalah untuk Register OC0x internal, bukan pin OC0x. Jika reset sistem terjadi, OC0x Register di-reset ke "0".

Jika OC0A / OC0B dihubungkan ke pin I / O, fungsi bit COM0A [1: 0] / COM0B [1: 0] bergantung pada pengaturan bit WGM0 [2: 0]. Tabel 11-2 menunjukkan fungsionalitas bit COM0x [1: 0] ketika bit WGM0 [2: 0] diatur ke mode normal atau CTC (non-PWM).

Tabel 11-2. Bandingkan Mode Output, Mode non-PWM

KOM0A1 KOM0B1 KOM0A0 KOM0B0 Keterangan
0 0 Operasi port normal, OC0A / OC0B terputus.
0 1 Alihkan OC0A / OC0B pada Perbandingan Pertandingan
1 0 Selesaikan OC0A / OC0B pada Pertandingan Perbandingan
1 1 Setel OC0A / OC0B pada Pertandingan Perbandingan

Tabel 11-3 menunjukkan fungsionalitas bit COM0x [1: 0] ketika bit WGM0 [2: 0] diatur ke mode PWM cepat.

Tabel 11-3. Bandingkan Mode Output, Mode PWM Cepat(1)

KOM0A1 KOM0B1 KOM0A0 KOM0B0 Keterangan
0 0 Operasi port normal, OC0A / OC0B terputus.
0 1 Disimpan
1 0 Hapus OC0A / OC0B pada Pertandingan Perbandingan, atur OC0A / OC0B pada BAWAH (mode non-pembalik)
1 1 Setel OC0A / OC0B pada Perbandingan Pertandingan, hapus OC0A / OC0B di BAWAH (mode pembalik)

Catatan: Kasus khusus terjadi saat OCR0A atau OCR0B sama dengan TOP dan COM0A1/COM0B1 diatur. Dalam hal ini, pertandingan perbandingan diabaikan, tetapi set atau clear dilakukan di BOTTOM. Melihat “Mode PWM Cepat” di halaman 73 untuk lebih jelasnya.

Tabel 11-4 menunjukkan fungsionalitas bit COM0x [1: 0] ketika bit WGM0 [2: 0] diatur ke mode PWM fase yang benar.

Tabel 11-4. Bandingkan Mode Output, Mode PWM Fase Koreksi(1)

KOM0A1 KOM0B1 KOM0A0 KOM0B0 Keterangan
0 0 Operasi port normal, OC0A / OC0B terputus.
0 1 Disimpan
1 0 Selesaikan OC0A / OC0B pada Pertandingan Perbandingan saat menghitung naik. Setel OC0A / OC0B pada Pertandingan Perbandingan saat menghitung mundur.
1 1 Setel OC0A / OC0B pada Pertandingan Perbandingan saat menghitung naik. Selesaikan OC0A / OC0B pada Pertandingan Perbandingan saat menghitung mundur.

Catatan: 1. Kasus khusus terjadi ketika OCR0A atau OCR0B sama dengan TOP dan COM0A1/COM0B1 diatur. Dalam hal ini, Match Match diabaikan, tetapi set atau clear dilakukan di TOP. Melihat “Mode PWM Fase Benar” di halaman 74 untuk lebih jelasnya.

Bit 3: 2 - Res: Bit yang Dicadangkan

Bit-bit ini adalah bit-bit yang dicadangkan dalam ATtiny25 / 45/85 dan akan selalu dibaca sebagai nol.

Bit 1: 0 - WGM0 [1: 0]: Mode Penghasil Gelombang

Dikombinasikan dengan bit WGM02 yang ditemukan di Register TCCR0B, bit-bit ini mengontrol urutan penghitungan pencacah, sumber untuk nilai pencacah maksimum (TOP), dan jenis pembangkitan gelombang apa yang akan digunakan, lihat Tabel 11-5. Mode operasi yang didukung oleh unit Timer / Counter adalah: mode Normal (counter), mode Clear Timer on Compare Match (CTC), dan dua jenis mode Pulse Width Modulation (PWM) (lihat "Mode Operasi" di halaman 71).

Tabel 11-5. Deskripsi Bit Mode Generasi Bentuk Gelombang

Mode WGM 02 WGM 01 WGM 00 Pengatur Waktu / Penghitung Mode Pengoperasian ATAS Pembaruan OCRx di Bendera TOV Diatur
0 0 0 0 Normal 0xFF Segera MAKS(1)
1 0 0 1 PWM, Fase Benar 0xFF ATAS DASAR(2)
2 0 1 0 CTC OCRA Segera MAKS(1)
3 0 1 1 PWM cepat 0xFF DASAR(2) MAKS(1)
4 1 0 0 Disimpan
5 1 0 1 PWM, Fase Benar OCRA ATAS DASAR(2)
6 1 1 0 Disimpan
7 1 1 1 PWM cepat OCRA DASAR(2) ATAS

Bit 7 - FOC0A: Perbandingan Output Paksa A

Bit FOC0A hanya aktif ketika bit WGM menentukan mode non-PWM.

Namun, untuk memastikan kompatibilitas dengan perangkat di masa mendatang, bit ini harus disetel ke nol saat TCCR0B ditulis saat beroperasi dalam mode PWM. Saat menulis yang logis ke bit FOC0A, Perbandingan Langsung diterapkan pada unit Generasi Bentuk Gelombang. Output OC0A diubah sesuai dengan pengaturan bit COM0A [1: 0]. Perhatikan bahwa bit FOC0A diimplementasikan sebagai strobe. Oleh karena itu, nilai yang ada dalam bit COM0A [1: 0] yang menentukan efek dari perbandingan paksa.

Strobo FOC0A tidak akan menghasilkan interupsi apa pun, juga tidak akan menghapus pengatur waktu dalam mode CTC menggunakan OCR0A sebagai TOP. Bit FOC0A selalu dibaca sebagai nol.

Bit 6 - FOC0B: Perbandingan Output Paksa B

Bit FOC0B hanya aktif ketika bit WGM menentukan mode non-PWM.

Namun, untuk memastikan kompatibilitas dengan perangkat di masa mendatang, bit ini harus disetel ke nol saat TCCR0B ditulis saat beroperasi dalam mode PWM. Saat menulis yang logis ke bit FOC0B, Perbandingan Langsung diterapkan pada unit Generasi Gelombang. Output OC0B diubah sesuai dengan pengaturan bit COM0B [1: 0]. Perhatikan bahwa bit FOC0B diimplementasikan sebagai strobe. Oleh karena itu, nilai yang ada dalam bit COM0B [1: 0] yang menentukan efek dari perbandingan paksa.

Strobo FOC0B tidak akan menghasilkan interupsi apa pun, juga tidak akan menghapus pengatur waktu dalam mode CTC menggunakan OCR0B sebagai TOP.

Bit FOC0B selalu dibaca sebagai nol.

Bit 5: 4 - Res: Bit yang Dicadangkan

Bit-bit ini adalah bit-bit yang dicadangkan dalam ATtiny25 / 45/85 dan akan selalu dibaca sebagai nol.

Bit 3 - WGM02: Mode Penghasil Gelombang

Lihat deskripsi di “TCCR0A - Timer / Kontrol Penghitung Register A” di halaman 77.

Bit 2: 0 - CS0 [2: 0]: Pilih Jam

Tiga bit Clock Select memilih sumber clock yang akan digunakan oleh Timer / Counter.

Tabel 11-6. Jam Pilih Deskripsi Bit

CS02 CS01 CS00 Keterangan
0 0 0 Tidak ada sumber jam (Timer / Penghitung dihentikan)
0 0 1 clkI/O/(Tanpa prescaling)
0 1 0 clkI/O/8 (Dari prescaler)
0 1 1 clkI/O/64 (Dari prescaler)
1 0 0 clkI/O/256 (Dari prescaler)
1 0 1 clkI/O/1024 (Dari prescaler)
1 1 0 Sumber jam eksternal pada pin T0. Jam di tepi jatuh.
1 1 1 Sumber jam eksternal pada pin T0. Jam di tepi menanjak.

Jika mode pin eksternal digunakan untuk Timer / Counter0, transisi pada pin T0 akan menghitung counter bahkan jika pin dikonfigurasi sebagai output. Fitur ini memungkinkan kontrol perangkat lunak penghitungan.

Menghitung dan Membandingkan Unit

Operasi umum Timer / Counter1 dijelaskan dalam mode asinkron dan operasi dalam mode sinkron hanya disebutkan jika ada perbedaan antara kedua mode ini. Gambar 12-2 menampilkan diagram blok register sinkronisasi Timer / Counter 1 dan penundaan sinkronisasi di antara register. Perhatikan bahwa semua detail clock gating tidak ditampilkan pada gambar. Nilai register Timer / Counter1 melewati register sinkronisasi internal, yang menyebabkan penundaan sinkronisasi input, sebelum mempengaruhi operasi counter. Register TCCR1, GTCCR, OCR1A, OCR1B, dan OCR1C dapat dibaca kembali setelah menulis register. Nilai membaca kembali tertunda untuk Timer / Counter1 (TCNT1) register dan flag (OCF1A, OCF1B, dan TOV1), karena sinkronisasi input dan output.

Timer / Counter1 menampilkan resolusi tinggi dan penggunaan akurasi tinggi dengan peluang prescaling yang lebih rendah. Ini juga dapat mendukung dua Modulator Lebar Pulsa 8-bit yang akurat, berkecepatan tinggi, menggunakan kecepatan clock hingga 64 MHz (atau 32 MHz dalam Mode Kecepatan Rendah). Dalam mode ini, Timer / Counter1 dan register pembanding output berfungsi sebagai PWM mandiri ganda dengan output non-terbalik dan terbalik yang tidak tumpang tindih. Mengacu pada halaman 86 untuk penjelasan rinci tentang fungsi ini. Demikian pula, peluang prescaling yang tinggi membuat unit ini berguna untuk fungsi kecepatan rendah atau fungsi pengaturan waktu yang tepat dengan tindakan yang jarang.

Gambar 12-2. Timer/Counter 1 Diagram Blok Register Sinkronisasi.

Timer / Counter1 dan prescaler memungkinkan menjalankan CPU dari sumber clock mana pun sementara prescaler beroperasi pada clock PCK 64 MHz yang cepat (atau 32 MHz dalam Mode Kecepatan Rendah) dalam mode asynchronous.

Perhatikan bahwa frekuensi clock sistem harus lebih rendah dari sepertiga frekuensi PCK. Mekanisme sinkronisasi Pengatur Waktu / Penghitung1 asinkron membutuhkan setidaknya dua sisi PCK saat jam sistem tinggi. Jika frekuensi jam sistem terlalu tinggi, ada risiko hilangnya data atau nilai kontrol.

Berikut ini Gambar 12-3 menunjukkan diagram blok untuk Timer / Counter1.

Tabel 12-1. Bandingkan Mode Pilih dalam Mode PWM

KOM1x1 KOM1x0 Efek pada Output Bandingkan Pin
0 0 OC1x tidak terhubung. OC1x tidak terhubung.
0 1 OC1x dibersihkan pada pertandingan perbandingan. Setel saatTCNT1 = $ 00. OC1x diatur pada pertandingan perbandingan. Dihapus saat TCNT1 = $ 00.
1 0 OC1x dibersihkan pada pertandingan perbandingan. Setel saat TCNT1 = $ 00. OC1x tidak terhubung.
1 1 OC1x Atur pada pertandingan perbandingan. Dihapus saat TCNT1 = $ 00. OC1x tidak terhubung.

Karakteristik ADC

Tabel 21-8. Karakteristik ADC, Saluran Berakhir Tunggal. TA = -40°C hingga +85°C

Simbol Parameter Kondisi menit Ketik Maksimal Satuan
Resolusi 10 Sedikit
Akurasi mutlak (Termasuk INL, DNL, ​​dan Kuantisasi, kesalahan Penguatan dan Pengimbangan) VREF = 4V, VCC = 4V,

Jam ADC = 200 kHz

2 LSB
VREF = 4V, VCC = 4V,

Jam ADC = 1 MHz

3 LSB
VREF = 4V, VCC = 4V,

Jam ADC = 200 kHz

Mode Pengurangan Noise

1.5 LSB
VREF = 4V, VCC = 4V,

Jam ADC = 1 MHz

Mode Pengurangan Noise

2.5 LSB
Integral Non-linearity (INL) (Akurasi setelah offset dan kalibrasi penguatan) VREF = 4V, VCC = 4V,

Jam ADC = 200 kHz

1 LSB
Diferensial Non-linearitas (DNL) VREF = 4V, VCC = 4V,

Jam ADC = 200 kHz

0.5 LSB
Dapatkan Kesalahan VREF = 4V, VCC = 4V,

Jam ADC = 200 kHz

2.5 LSB
Kesalahan Offset VREF = 4V, VCC = 4V,

Jam ADC = 200 kHz

1.5 LSB
Konversi Waktu Konversi Berjalan Gratis 14 280 s
Frekuensi Jam 50 1000 kHz
Nomor VIN Masukan Voltage GND VREF V
Bandwidth Input 38.4 kHz
ARAB Referensi Eksternal Voltage 2.0 VCC V
VINT Volume Internaltage Referensi 1.0 1.1 1.2 V
Referensi 2.56V Internal (1) VCC> 3.0V 2.3 2.56 2.8 V
Referensi 32 k
HUJAN Resistensi Input Analog 100
Keluaran ADC 0 1023 LSB

Catatan: 1. Nilai hanyalah pedoman.

Tabel 21-9. Karakteristik ADC, Saluran Diferensial (Mode Unipolar). TA = -40°C hingga +85°C

Simbol Parameter Kondisi menit Ketik Maksimal Satuan
Resolusi Keuntungan = 1x 10 Sedikit
Keuntungan = 20x 10 Sedikit
Akurasi mutlak (Termasuk INL, DNL, ​​dan

Kuantisasi, Penguatan, dan Kesalahan Offset)

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) (Akurasi setelah Offset dan Gain Calibration) 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
Dapatkan Kesalahan Keuntungan = 1x 10.0 LSB
Keuntungan = 20x 15.0 LSB
Kesalahan Offset 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
Konversi Waktu Konversi Berjalan Gratis 70 280 s
Frekuensi Jam 50 200 kHz
Nomor VIN Masukan Voltage GND VCC V
VDIFF Masukan Diferensial Voltage VREF/Mendapatkan V
Bandwidth Input 4 kHz
ARAB Referensi Eksternal Voltage 2.0 VCC – 1.0 V
VINT Volume Internaltage Referensi 1.0 1.1 1.2 V
Referensi 2.56V Internal (1) VCC> 3.0V 2.3 2.56 2.8 V
Referensi Referensi Input Resistensi 32 k
HUJAN Resistensi Input Analog 100
Output Konversi ADC 0 1023 LSB

Catatan: Nilai hanyalah pedoman.

Tabel 21-10. Karakteristik ADC, Saluran Diferensial (Bipolar Mode). TA = -40°C hingga +85°C

Simbol Parameter Kondisi menit Ketik Maksimal Satuan
Resolusi Keuntungan = 1x 10 Sedikit
Keuntungan = 20x 10 Sedikit
Akurasi mutlak (Termasuk INL, DNL, ​​dan

Kuantisasi, Penguatan, dan Kesalahan Offset)

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) (Akurasi setelah Offset dan Gain Calibration) 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
Dapatkan Kesalahan Keuntungan = 1x 4.0 LSB
Keuntungan = 20x 5.0 LSB
Kesalahan Offset 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
Konversi Waktu Konversi Berjalan Gratis 70 280 s
Frekuensi Jam 50 200 kHz
Nomor VIN Masukan Voltage GND VCC V
VDIFF Masukan Diferensial Voltage VREF/Mendapatkan V
Bandwidth Input 4 kHz
ARAB Referensi Eksternal Voltage 2.0 VCC – 1.0 V
VINT Volume Internaltage Referensi 1.0 1.1 1.2 V
Referensi 2.56V Internal (1) VCC> 3.0V 2.3 2.56 2.8 V
Referensi Referensi Input Resistensi 32 k
HUJAN Resistensi Input Analog 100
Output Konversi ADC -512 511 LSB

Ringkasan Set Instruksi

Ilmu tentang cara menghafal Operan Keterangan Operasi Bendera #Jam
PETUNJUK ARITMETIK DAN LOGIKA
MENAMBAHKAN Rd, rr Tambahkan dua Register Rd ← Rd + Rr Z, C, N, V, H 1
ADC Rd, rr Tambahkan dengan Carry dua Register Rd ← Rd + Rr + C Z, C, N, V, H 1
Bahasa Indonesia: ADIW Rdl, K Tambahkan Segera ke Word Rdh:Rdl ← Rdh:Rdl + K Z, C, N, V, S 2
SUB Rd, rr Kurangi dua Register Rd ← Rd – Rr Z, C, N, V, H 1
KE ATAS Rd, K Kurangi Constant dari Register Rd ← Rd – K Z, C, N, V, H 1
SBC Rd, rr Kurangi dengan Carry dua Register Rd ← Rd – Rr – C Z, C, N, V, H 1
SBCI Rd, K Kurangi dengan Carry Constant dari Reg. Rd ← Rd – K – C Z, C, N, V, H 1
SBIW Rdl, K Kurangi Segera dari Word Rdh:Rdl ← Rdh:Rdl – K Z, C, N, V, S 2
DAN Rd, rr Logis DAN Register Rd ← Rd ∙ Rr Z, N, V 1
DAN SAYA Rd, K Logis DAN Daftar dan Konstan Rd ← Rd ∙ K Z, N, V 1
OR Rd, rr Logis ATAU Register Rd ← Rd v Rr Z, N, V 1
ASLI Rd, K Logis ATAU Daftar dan Konstan Rd ← Rd v K Z, N, V 1
EOR Rd, rr Eksklusif ATAU Register Rd ← Rd ⊕ Rr Z, N, V 1
DAPAT Rd Pelengkap Satu Rd ← 0xFF − Rd Z, C, N, V 1
NEG Rd Komplemen Dua Rd ← 0x00 − Rd Z, C, N, V, H 1
Bahasa Inggris: SBR Rd, K Setel Bit di Register Rd ← Rd v K Z, N, V 1
CBR Rd, K Hapus Bit di Register Rd ← Rd ∙ (0xFF – K) Z, N, V 1
Perusahaan Rd Kenaikan Rd ← Rd + 1 Z, N, V 1
DESEMBER Rd Pengurangan Rd ← Rd − 1 Z, N, V 1
TST Rd Uji Nol atau Minus Jalan ← Jalan ∙ Jalan Z, N, V 1
Bahasa Inggris: CLR Rd Hapus Daftar Rd ← Rd ⊕ Rd Z, N, V 1
SER Rd Atur Daftar Rd ← 0xFF Tidak ada 1
PETUNJUK CABANG
RJMP k Lompatan Relatif PC ← PC + k + 1 Tidak ada 2
IJMP Lompat Tidak Langsung ke (Z) PC ← Z Tidak ada 2
RALL k Panggilan Subrutin Relatif PC ← PC + k + 1 Tidak ada 3
Panggilan IC Panggilan Tidak Langsung ke (Z) PC ← Z Tidak ada 3
MEMBASAHI Pengembalian Subrutin PC ← Tumpukan Tidak ada 4
JARINGAN Pengembalian Interupsi PC ← Tumpukan I 4
CPSE Rd, Rr Bandingkan, Lewati jika Sama jika (Rd = Rr) PC ← PC + 2 atau 3 Tidak ada 1/2/3
CP Rd, Rr Membandingkan Rd − Rr Z, N, V, C, H 1
BPK Rd, Rr Bandingkan dengan Carry Rd−Rr−C Z, N, V, C, H 1
IHK Rd, K Bandingkan Daftar dengan Segera Rd-K Z, N, V, C, H 1
Bahasa Indonesia: SBRC rr, b Lewati jika Bit dalam Daftar Dihapus jika (Rr(b)=0) PC ← PC + 2 atau 3 Tidak ada 1/2/3
SBR rr, b Lewati jika Bit in Register diatur jika (Rr(b)=1) PC ← PC + 2 atau 3 Tidak ada 1/2/3
SBIC hal, b Lewati jika Bit di Daftar I / O Dihapus jika (P(b)=0) PC ← PC + 2 atau 3 Tidak ada 1/2/3
SBIS hal, b Lewati jika Bit in I / O Register diatur jika (P(b)=1) PC ← PC + 2 atau 3 Tidak ada 1/2/3
BRBS s, k Bercabang jika Bendera Status Ditetapkan jika (SREG(s) = 1) maka PC←PC+k + 1 Tidak ada 1/2
BRBC s, k Cabang jika Bendera Status Dihapus jika (SREG(s) = 0) maka PC←PC+k + 1 Tidak ada 1/2
BREQ k Cabang jika Sama jika (Z = 1) maka PC ← PC + k + 1 Tidak ada 1/2
BRNE k Cabang jika Tidak Sama jika (Z = 0) maka PC ← PC + k + 1 Tidak ada 1/2
BRC k Cabang jika Carry Set jika (C = 1) maka PC ← PC + k + 1 Tidak ada 1/2
BRCC k Cabang jika Pembawa Dibersihkan jika (C = 0) maka PC ← PC + k + 1 Tidak ada 1/2
BRSH k Bercabang jika Sama atau Lebih Tinggi jika (C = 0) maka PC ← PC + k + 1 Tidak ada 1/2
BRLO k Cabang jika Lebih Rendah jika (C = 1) maka PC ← PC + k + 1 Tidak ada 1/2
BRMI k Cabang jika Minus jika (N = 1) maka PC ← PC + k + 1 Tidak ada 1/2
BRPL k Cabang jika Plus jika (N = 0) maka PC ← PC + k + 1 Tidak ada 1/2
BRGE k Bercabang jika Lebih Besar atau Sama, Ditandatangani jika (N ⊕ V= 0) maka PC ← PC + k + 1 Tidak ada 1/2
BRLT k Bercabang jika Kurang dari Nol, Ditandatangani jika (N ⊕ V= 1) maka PC ← PC + k + 1 Tidak ada 1/2
BRHS k Cabang jika Bendera Half Carry Set jika (H = 1) maka PC ← PC + k + 1 Tidak ada 1/2
BRHC k Cabang jika Bendera Half Carry Dihapus jika (H = 0) maka PC ← PC + k + 1 Tidak ada 1/2
BRT k Cabang jika T Flag Set jika (T = 1) maka PC ← PC + k + 1 Tidak ada 1/2
BRTC k Cabang jika Bendera T Dihapus jika (T = 0) maka PC ← PC + k + 1 Tidak ada 1/2
BRV k Bercabang jika Bendera Overflow Diatur jika (V = 1) maka PC ← PC + k + 1 Tidak ada 1/2
BRVC k Bercabang jika Bendera Overflow Dihapus jika (V = 0) maka PC ← PC + k + 1 Tidak ada 1/2
BRIE k Cabang jika Interupsi Diaktifkan jika ( I = 1) maka PC ← PC + k + 1 Tidak ada 1/2
BRID k Cabang jika Interupsi Dinonaktifkan jika ( I = 0) maka PC ← PC + k + 1 Tidak ada 1/2
PETUNJUK BIT DAN BIT-TEST
SBI P, b Setel Bit di Register I / O I/O(P,b) ← 1 Tidak ada 2
CBI P, b Hapus Bit di Pendaftaran I / O I/O(P,b) ← 0 Tidak ada 2
LSL Rd Pergeseran Logika Kiri Rd(n+1) ← Rd(n), Rd(0) ← 0 Z, C, N, V 1
LSR Rd Pergeseran Logika ke Kanan Rd(n) ← Rd(n+1), Rd(7) ← 0 Z, C, N, V 1
PERAN Rd Putar Left Through Carry Rd(0)←C,Rd(n+1)← Rd(n),C←Rd(7) Z, C, N, V 1
ROR Rd Putar Right Through Carry Rd(7)←C,Rd(n)← Rd(n+1),C←Rd(0) Z, C, N, V 1
ASR Rd Geser Aritmatika ke Kanan Rd(n) ← Rd(n+1), n=0..6 Z, C, N, V 1
Ilmu tentang cara menghafal Operan Keterangan Operasi Bendera #Jam
MENUKAR Rd Tukar Camilan Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) Tidak ada 1
BSET s Tandai Set SREG(s) ← 1 SREG 1
Bahasa Inggris BCLR s Tandai Clear SREG(s) ← 0 SREG 1
Waktu Standar Barat rr, b Bit Store dari Register ke T T ← Rr(b) T 1
BLD Rd, b Bit load dari T ke Register Rd(b) ← T Tidak ada 1
DETIK Atur Carry C ← 1 C 1
CLC Hapus Bawaan C ← 0 C 1
SEN Tetapkan Bendera Negatif N ← 1 N 1
Bahasa Indonesia: CLN Hapus Bendera Negatif N ← 0 N 1
KEK Setel Bendera Nol Z ← 1 Z 1
CLZ Hapus Bendera Nol Z ← 0 Z 1
SEI Aktifkan Interupsi Global saya ← 1 I 1
KLIK Penonaktifan Interupsi Global saya ← 0 I 1
SES Setel Tanda Tes yang Ditandatangani S ← 1 S 1
Kelas Bisnis Hapus Tanda Uji yang Ditandatangani S ← 0 S 1
SEV Setel Twos Complement Overflow. V ← 1 V 1
KLV Hapus Overflow Pelengkap Twos V ← 0 V 1
MENGATUR Setel T di SREG T ← 1 T 1
Bahasa Indonesia: CLT Hapus T di SREG T ← 0 T 1
SEH Setel Bendera Half Carry di SREG H ← 1 H 1
CLH Hapus Bendera Half Carry di SREG H ← 0 H 1
PETUNJUK TRANSFER DATA
Pindah Rd, rr Pindah Antar Register Rd ← Rr Tidak ada 1
MOVW Rd, rr Salin Register Word Rd+1:Rd ← Rr+1:Rr Tidak ada 1
LDI Rd, K Muat Segera Rd ← K Tidak ada 1
LD Jalan, X Muat Tidak Langsung Rd ← (X) Tidak ada 2
LD Rd, X + Muat Tidak Langsung dan Post-Inc. Rd ← (X), X ← X + 1 Tidak ada 2
LD Rd, - X Muat Tidak Langsung dan Sebelum Des. X ← X – 1, Rd ← (X) Tidak ada 2
LD Jalan, Y Muat Tidak Langsung Rd ← (Y) Tidak ada 2
LD Rd, Y + Muat Tidak Langsung dan Post-Inc. Rd ← (Y), Y ← Y + 1 Tidak ada 2
LD Rd, - Y Muat Tidak Langsung dan Sebelum Des. Y ← Y – 1, Rd ← (Y) Tidak ada 2
LDD Rd, Y + q Muat Tidak Langsung dengan Pemindahan Rd ← (Y + q) Tidak ada 2
LD Jalan, Z Muat Tidak Langsung Jalan ← (Z) Tidak ada 2
LD Rd, Z + Muat Tidak Langsung dan Post-Inc. Rd ← (Z), Z ← Z+1 Tidak ada 2
LD Rd,-Z Muat Tidak Langsung dan Sebelum Des. Z ← Z – 1, Rd ← (Z) Tidak ada 2
LDD Rd, Z + q Muat Tidak Langsung dengan Pemindahan Rd ← (Z + q) Tidak ada 2
Gereja LDs Jalan, k Muat Langsung dari SRAM Rd ← (k) Tidak ada 2
ST X, rr Simpan Tidak Langsung (X) ← Rr Tidak ada 2
ST X +, Rr Simpan Tidak Langsung dan Post-Inc. (X) ← Rr, X ← X + 1 Tidak ada 2
ST - X, Rr Simpan Tidak Langsung dan Sebelum Des. X ← X – 1, (X) ← Rr Tidak ada 2
ST Y, Rr Simpan Tidak Langsung (Y) ← Rr Tidak ada 2
ST Y +, Rr Simpan Tidak Langsung dan Post-Inc. (Y) ← Rr, Y ← Y + 1 Tidak ada 2
ST - Y, Rr Simpan Tidak Langsung dan Sebelum Des. Y ← Y – 1, (Y) ← Rr Tidak ada 2
Penyakit Menular Seksual (PMS) Y + q, Rr Simpan Tidak Langsung dengan Pemindahan (Y + q) ← Rr Tidak ada 2
ST Z, Rr Simpan Tidak Langsung (Z) ← Rr Tidak ada 2
ST Z +, Rr Simpan Tidak Langsung dan Post-Inc. (Z) ← Rr, Z ← Z + 1 Tidak ada 2
ST -Z, Rr Simpan Tidak Langsung dan Sebelum Des. Z ← Z – 1, (Z) ← Rr Tidak ada 2
Penyakit Menular Seksual (PMS) Z + q, Rr Simpan Tidak Langsung dengan Pemindahan (Z + q) ← Rr Tidak ada 2
STS k, rr Simpan Langsung ke SRAM (k) ← Rr Tidak ada 2
LPM Muat Memori Program R0 ← (Z) Tidak ada 3
LPM Jalan, Z Muat Memori Program Jalan ← (Z) Tidak ada 3
LPM Rd, Z + Muat Memori Program dan Post-Inc Rd ← (Z), Z ← Z+1 Tidak ada 3
SPM Simpan Memori Program (z) ← R1:R0 Tidak ada
IN Rd, P Di Port Rd ← P Tidak ada 1
KELUAR P, Rr Keluar Port P ← Rr Tidak ada 1
DORONGAN Rr Dorong Daftar di Stack Tumpukan ← Rr Tidak ada 2
POP Rd Pop Register dari Stack Rd ← Tumpukan Tidak ada 2
PETUNJUK PENGENDALIAN MCU
Tidak ada Tidak Ada Operasi Tidak ada 1
TIDUR Tidur (lihat deskripsi khusus untuk fungsi Tidur) Tidak ada 1
WDR Setel Ulang Anjing Pengawas (lihat deskripsi khusus untuk WDR / Timer) Tidak ada 1
MERUSAK Merusak
Kecepatan (MHz) (1) Volume Pasokantage (V) Kisaran Suhu Kemasan (2) Kode Pemesanan (3)
10 1.8 – 5.5 Industri

(-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 Industri

(-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 kecepatan vs. suplai voltage, lihat bagian 21.3 "Kecepatan" di halaman 163.

Semua paket bebas Pb, bebas halida dan sepenuhnya hijau dan memenuhi arahan Eropa untuk Pembatasan Zat Berbahaya (RoHS).

Indikator kode

H: Selesai memimpin NiPdAu

U: timah matte

R: tape & reel

Perangkat ini juga dapat dipasok dalam bentuk wafer. Silakan hubungi kantor penjualan Atmel setempat Anda untuk informasi pemesanan rinci dan jumlah minimum.

Ralat

Kesalahan ATtiny25

Surat revisi di bagian ini mengacu pada revisi perangkat ATtiny25.

Rev D - F

Tidak ada ralat yang diketahui.

Rev B - C

Pembacaan EEPROM mungkin gagal pada tegangan suplai rendahtage / frekuensi jam rendah

Pembacaan EEPROM mungkin gagal pada tegangan suplai rendahtage / frekuensi jam rendah

Mencoba membaca EEPROM pada frekuensi clock rendah dan/atau volume suplai rendahtage dapat mengakibatkan data tidak valid.

Perbaikan Masalah / Solusi

Jangan gunakan EEPROM saat frekuensi clock di bawah 1MHz dan tegangan suplaitage di bawah 2V. Jika frekuensi operasi tidak dapat dinaikkan di atas 1MHz maka suplai voltage harus lebih dari 2V. Demikian pula, jika pasokan voltage tidak dapat dinaikkan di atas 2V maka frekuensi operasi harus lebih dari 1MHz.

Fitur ini diketahui bergantung pada suhu tetapi belum dikarakterisasi. Panduan diberikan hanya untuk suhu kamar.

Pendeta A

Tidak sampLED.

Kesalahan ATtiny45

Surat revisi di bagian ini mengacu pada revisi perangkat ATtiny45.

Rev F - G

Tidak ada ralat yang diketahui

Rev D - E

Pembacaan EEPROM mungkin gagal pada tegangan suplai rendahtage / frekuensi jam rendah

Pembacaan EEPROM mungkin gagal pada tegangan suplai rendahtage / frekuensi jam rendah

Mencoba membaca EEPROM pada frekuensi clock rendah dan/atau volume suplai rendahtage dapat mengakibatkan data tidak valid.

Perbaikan Masalah / Solusi

Jangan gunakan EEPROM saat frekuensi clock di bawah 1MHz dan tegangan suplaitage di bawah 2V. Jika frekuensi operasi tidak dapat dinaikkan di atas 1MHz maka suplai voltage harus lebih dari 2V. Demikian pula, jika pasokan voltage tidak dapat dinaikkan di atas 2V maka frekuensi operasi harus lebih dari 1MHz.

Fitur ini diketahui bergantung pada suhu tetapi belum dikarakterisasi. Panduan diberikan hanya untuk suhu kamar.

Rev B - C

PLL tidak mengunci

Pembacaan EEPROM dari kode aplikasi tidak berfungsi dalam Lock Bit Mode 3

Pembacaan EEPROM mungkin gagal pada tegangan suplai rendahtage / frekuensi jam rendah

Penghitung Pengatur Waktu Pembangkitan keluaran 1 PWM pada OC1B- XOC1B tidak bekerja dengan benar

PLL tidak mengunci

Saat frekuensi di bawah 6.0 MHz, PLL tidak akan terkunci

Perbaikan masalah / Solusi

Saat menggunakan PLL, jalankan pada 6.0 MHz atau lebih tinggi.

Pembacaan EEPROM dari kode aplikasi tidak berfungsi dalam Lock Bit Mode 3

Ketika Memory Lock Bits LB2 dan LB1 diprogram ke mode 3, pembacaan EEPROM tidak bekerja dari kode aplikasi.

Memperbaiki Masalah / Mengatasi

Jangan mengatur Lock Bit Protection Mode 3 ketika kode aplikasi perlu dibaca dari EEPROM.

Pembacaan EEPROM mungkin gagal pada tegangan suplai rendahtage / frekuensi jam rendah

Mencoba membaca EEPROM pada frekuensi clock rendah dan/atau volume suplai rendahtage dapat mengakibatkan data tidak valid.

Perbaikan Masalah / Solusi

Jangan gunakan EEPROM saat frekuensi clock di bawah 1MHz dan tegangan suplaitage di bawah 2V. Jika frekuensi operasi tidak dapat dinaikkan di atas 1MHz maka suplai voltage harus lebih dari 2V. Demikian pula, jika pasokan voltage tidak dapat dinaikkan di atas 2V maka frekuensi operasi harus lebih dari 1MHz.

Fitur ini diketahui bergantung pada suhu tetapi belum dikarakterisasi. Panduan diberikan hanya untuk suhu kamar.

Penghitung Pengatur Waktu Pembangkitan keluaran 1 PWM pada OC1B - XOC1B tidak bekerja dengan baik

Timer Counter1 Output PWM OC1B-XOC1B tidak bekerja dengan benar. Hanya jika bit kontrol, COM1B1 dan COM1B0 berada dalam mode yang sama dengan COM1A1 dan COM1A0, output OC1B-XOC1B bekerja dengan benar.

Memperbaiki Masalah / Mengatasi

Satu-satunya solusi adalah menggunakan pengaturan kontrol yang sama pada bit kontrol COM1A [1: 0] dan COM1B [1: 0], lihat tabel 14- 4 di lembar data. Masalahnya telah diperbaiki untuk Tiny45 rev D.

Pendeta A

Konsumsi daya turun daya terlalu tinggi

DebugWIRE kehilangan komunikasi saat satu langkah menjadi interupsi

PLL tidak mengunci

Pembacaan EEPROM dari kode aplikasi tidak berfungsi dalam Lock Bit Mode 3

Pembacaan EEPROM mungkin gagal pada tegangan suplai rendahtage / frekuensi jam rendah

Konsumsi daya turun daya terlalu tinggi

Tiga situasi akan menyebabkan konsumsi daya turun yang terlalu tinggi. Ini adalah:

Jam eksternal dipilih oleh sekering, tetapi PORT I / O masih diaktifkan sebagai keluaran.

EEPROM dibaca sebelum mematikan daya.

VCC adalah 4.5 volt atau lebih tinggi.

Penafian: Informasi dalam dokumen ini disediakan sehubungan dengan produk Atmel. Tidak ada lisensi, tersurat maupun tersirat, dengan estoppel atau lainnya, untuk hak kekayaan intelektual apa pun yang diberikan oleh dokumen ini atau sehubungan dengan penjualan produk Atmel. KECUALI SEBAGAIMANA TERCANTUM DALAM SYARAT DAN KETENTUAN PENJUALAN YANG BERLAKU DI ATMEL ATMEL WEBSITUS, ATMEL TIDAK BERTANGGUNG JAWAB APA PUN DAN MENYANGKAL JAMINAN TERSURAT, TERSIRAT ATAU HUKUM TERKAIT DENGAN PRODUK-PRODUKNYA TERMASUK, NAMUN TIDAK TERBATAS PADA, GARANSI TERSIRAT UNTUK DAPAT DIPERDAGANGKAN, KESESUAIAN UNTUK TUJUAN TERTENTU, ATAU NON-PELANGGARAN. DALAM KONDISI APAPUN ATMEL TIDAK BERTANGGUNG JAWAB ATAS KERUGIAN LANGSUNG, TIDAK LANGSUNG, KONSEKUENSIAL, PENGHUKUMAN, KHUSUS ATAU INSIDENTAL (TERMASUK, TETAPI TIDAK TERBATAS, KERUGIAN KERUGIAN DAN KEUNTUNGAN, GANGGUAN BISNIS, ATAU KEHILANGAN INFORMASI) YANG TIMBUL DARI PENGGUNAAN ATAU KETIDAKMAMPUAN UNTUK MENGGUNAKAN DOKUMEN INI, MESKIPUN ATMEL TELAH DIBERITAHU TENTANG KEMUNGKINAN KERUSAKAN TERSEBUT.

Atmel tidak membuat pernyataan atau jaminan sehubungan dengan keakuratan atau kelengkapan isi dokumen ini dan berhak melakukan perubahan spesifikasi dan deskripsi produk kapan saja tanpa pemberitahuan. Atmel tidak membuat komitmen apa pun untuk memperbarui informasi yang terkandung di sini. Kecuali ditentukan lain secara khusus, produk Atmel tidak cocok untuk, dan tidak boleh digunakan dalam aplikasi otomotif. Produk Atmel tidak dimaksudkan, disahkan, atau dijamin untuk digunakan sebagai komponen dalam aplikasi yang ditujukan untuk mendukung atau mempertahankan masa pakai.

Referensi

Tinggalkan komentar

Alamat email Anda tidak akan dipublikasikan. Bidang yang wajib diisi ditandai *