Rabu, 25 Juli 2018

seting clock

Crystal Oscillator
high fusebit 
7.RSTDISBL digunakanan untuk disable pin reset
6.WDTON watchdog enable
5.SPIEN spi enable
4.CKOPT aktifkan capasitor xtal internal
3.EESAVE Memori EEPROM dipertahankan melalui Penghapusan Chip
2.BOOTSZ1 pilih ukursan bootloader
1.BOOTSZ0 pilih ukursan bootloader
0.BOOTRST pilih saat reset bootloder dulu atau aplikasi dulu
Catatan: 1. SPIEN Fuse tidak dapat diakses dalam mode Pemrograman Serial
2. Fuse CKOPT Fuse tergantung pada pengaturan bit CKSEL, lihat “Sumber Jam”
di halaman 26 untuk detailnya
3. Nilai default dari BOOTSZ1..0 menghasilkan Ukuran Boot maksimum. Lihat Tabel 82 di halaman 213
4. Saat memprogram RSTDISBL Fuse Parallel Programming harus digunakan untuk berubah
sekering atau melakukan pemrograman lebih lanjut



low fuse
7.BODLEVEL brount out mendeteksi tegangan vcc
6. BODEN aktifkan brounout detektor
5.4.SUT1 SUT0 selek starup time
3.CKSEL3.2.1.0 clock select

Catatan: 1. Nilai default SUT1..0 menghasilkan waktu start-up maksimum. Lihat Tabel 10 di halaman 30 untukrincian
2. Pengaturan default CKSEL3..0 menghasilkan internal RC Oscillator @ 1MHz. Lihat Tabel 2 pada
halaman 26 untuk detailnya



XTAL1 dan XTAL2 adalah input dan output, masing-masing, dari penguat pembalik yang dapat dikonfigurasi untuk digunakan sebagai osilator On-chip, seperti yang ditunjukkan pada Gambar 11. Baik kristal kuarsa atau resonator keramik dapat digunakan. The CKOPT Fuse memilih antara dua Oscillator yang berbeda mode penguat. Ketika CKOPT diprogram, output Oscillator akan berosilasi full rail-torail ayunkan pada output. Mode ini cocok saat beroperasi di lingkungan yang sangat bising atau ketika output dari XTAL2 menggerakkan buffer jam kedua. Mode ini memiliki frekuensi yang luas jarak. Ketika CKOPT tidak terprogram, Oscillator memiliki ayunan keluaran yang lebih kecil. Ini mengurangi konsumsi daya jauh. Mode ini memiliki rentang frekuensi terbatas dan tidak bisa digunakan untuk menggerakkan buffer jam lainnya.
Untuk resonator, frekuensi maksimum 8MHz dengan CKOPT tidak terprogram dan 16MHz dengan CKOPT diprogram. C1 dan C2 harus selalu sama untuk kristal dan resonator. Itu nilai optimal dari kapasitor tergantung pada kristal atau resonator yang digunakan, jumlah nyasar kapasitansi, dan kebisingan elektromagnetik dari lingkungan. Beberapa pedoman awal untuk memilih kapasitor untuk digunakan dengan kristal diberikan pada Tabel 4. 
Untuk resonator keramik, yang nilai kapasitor yang diberikan oleh produsen harus digunakan.
Oscillator dapat beroperasi dalam tiga mode berbeda, masing-masing dioptimalkan untuk frekuensi tertentu jarak. Mode operasi dipilih oleh sekering CKSEL3..1 seperti yang ditunjukkan pada Tabel 4.

Table 4. Crystal Oscillator Operating Modes 
CKOPT    CKSEL3..1      Frequency Range (MHz)     Recommended Range for Capacitors C1 and                                                                                                          C2 for Use with Crystals (pF) 
 1                101(1)              0.4 - 0.9                                                   – 
 1                110                   0.9 - 3.0                            12 - 22 
 1                111                    3.0 - 8.0                           12 - 22 
 0          101, 110, 111          1.0                                12 - 22

Catatan: 1. Opsi ini tidak boleh digunakan dengan kristal, hanya dengan resonator keramik
CKSEL0 Fuse bersama dengan SUT1..0 Fuse memilih waktu start-up seperti yang ditunjukkan pada Tabel
5 di halaman 28.

Frekuensi rendah Osilator Kristal
Untuk menggunakan kristal jam 32.768kHz sebagai sumber jam untuk perangkat, Crystal frekuensi rendah Osilator harus dipilih dengan mengatur Sekering CKSEL ke "1001". Kristal harus terhubung
seperti yang ditunjukkan pada Gambar 11 di halaman 27. Dengan memprogram Fuse CKOPT, pengguna dapat aktifkan kapasitor internal pada XTAL1 dan XTAL2, sehingga menghilangkan kebutuhan untuk kapasitor eksternal. Kapasitor internal memiliki nilai nominal 36pF. Ketika Oscillator ini dipilih, waktu start-up ditentukan oleh SUT Sekering seperti yang ditunjukkan pada Tabel 6.

RC Eksternal
Osilator
Untuk aplikasi yang tidak peka terhadap waktu, konfigurasi RC eksternal ditunjukkan pada Gambar 12 di halaman 29dapat digunakan. Frekuensi kira-kira diperkirakan dengan persamaan f = 1 / (3RC). C harus di setidaknya 22pF. Dengan memprogram CKOPT Fuse, pengguna dapat mengaktifkan kapasitor 36pF internal
antara XTAL1 dan GND, sehingga menghilangkan kebutuhan akan kapasitor eksternal.



Dikalibrasi Internal Osilator RC
Internal RC Oscillator yang dikalibrasi menyediakan fixed 1.0MHz, 2.0MHz, 4.0MHz, atau 8.0MHz
jam. Semua frekuensi adalah nilai nominal pada 5V dan 25C. Jam ini dapat dipilih sebagai
jam sistem dengan memprogram Fuse CKSEL seperti yang ditunjukkan pada Tabel 9. Jika dipilih, ia akan beroperasi tanpa komponen eksternal. The CKOPT Fuse harus selalu tidak terprogram saat menggunakan opsi jam ini. Selama reset, perangkat keras memuat byte kalibrasi 1MHz ke dalam Daftar OSCCAL dan dengan demikian secara otomatis mengkalibrasi RC Oscillator. Pada 5V, 25C dan 1.0MHz Oscillator frekuensi yang dipilih, kalibrasi ini memberikan frekuensi dalam ± 3% dari frekuensi nominal. Menggunakan metode kalibrasi run-time seperti yang dijelaskan dalam catatan aplikasi yang tersedia di www.atmel.com/avr dimungkinkan untuk mencapai akurasi ± 1% pada VCC dan Temperatur tertentu. Ketika Oscillator ini digunakan sebagai jam chip, Watchdog Oscillator akan tetap digunakan untuk Watchdog Timer dan untuk Reset Time-out. Untuk informasi lebih lanjut tentang kalibrasi yang sudah diprogram nilai, lihat bagian "Kalibrasi Byte" pada halaman 218.


Oscillator Calibration Register – OSCCAL
• Bits 7..0 - CAL7..0: Nilai Kalibrasi Osilator
Menuliskan byte kalibrasi ke alamat ini akan memangkas Oscillator Internal untuk menghapus variasi proses dari frekuensi Osilator. Selama Reset, nilai kalibrasi 1MHz yang ditemukan di baris tanda tangan. Bita tinggi (alamat 0x00) secara otomatis dimuat ke dalam Daftar OSCCAL. Jika RC internal digunakan pada frekuensi lain, nilai kalibrasi harus dimuat secara manual. Ini dapat dilakukan dengan membaca baris tanda tangan terlebih dahulu oleh programmer, dan kemudian simpan nilai kalibrasi dalam Flash atau EEPROM. Maka nilainya bisa dibaca oleh perangkat lunak dan dimuat ke dalam Daftar OSCCAL. Ketika OSCCAL adalah nol, frekuensi terendah yang tersedia adalah terpilih. Menulis nilai non-nol ke daftar ini akan meningkatkan frekuensi dari Osilator Internal. Menulis 0xFF ke register memberikan frekuensi tertinggi yang tersedia. Osilator yang dikalibrasi digunakan untuk mengatur waktu EEPROM dan akses Flash. Jika EEPROM atau Flash ditulis, jangan dikalibrasi ke lebih dari 10% di atas frekuensi nominal. Jika tidak, EEPROM atau penulisan Flash mungkin gagal.
Perhatikan bahwa Osilator dimaksudkan untuk kalibrasi ke 1.0MHz, 2.0MHz, 4.0MHz, atau 8.0MHz. Tuning untuk nilai-nilai lain tidak dijamin, seperti yang ditunjukkan pada Tabel 11.

clock Eksternal
Untuk menggerakkan perangkat dari sumber jam eksternal, XTAL1 harus digerakkan seperti yang ditunjukkan pada Gambar 13. Untuk menjalankan perangkat pada jam eksternal, Sekering CKSEL harus diprogram ke "0000". Dengan memprogram CKOPT Fuse, pengguna dapat mengaktifkan kapasitor internal 36pF antara XTAL1 dan GND, dan XTAL2 dan GND



Selasa, 24 Juli 2018

Memory Programming n lockbit

Program And Data Memory Lock Bits

ATmega8 menyediakan enam Kunci Bits yang dapat dibiarkan tidak terprogram ("1") atau dapat diprogram ("0") untuk mendapatkan fitur tambahan yang tercantum pada Tabel 86. Bit Kunci hanya bisa terhapus menjadi "1" dengan perintah Chip Erase.

Table 85. Lock Bit Byte
 Lock Bit Byte      Bit No.                                           Description                           Default Value(1) 
                                  7                                                     –                                        1 (unprogrammed)                                    6                                                     –                                        1 (unprogrammed)      BLB12                  5                                                 Boot lock bit                          1 (unprogrammed)      BLB11                  4                                                 Boot lock bit                          1 (unprogrammed)      BLB02                  3                                                 Boot lock bit                          1 (unprogrammed)      BLB01                  2                                                 Boot lock bit                          1 (unprogrammed)      LB2                       1                                                 Lock bit                                 1 (unprogrammed)      LB1                       0                                                 Lock bit                                 1 (unprogrammed)

Note: 1. “1” means unprogrammed, “0” means programmed


Tabel 86. Mode Perlindungan Kunci Bit (2)
               Memori Bits                                                       Jenis Perlindungan Kunci     
LB Mode              LB2             LB1
      1                       1                   1                   Tidak ada fitur kunci memori yang diaktifkan
      2                       1                   0                   Pemrograman lebih lanjut dari Flash dan EEPROM                                                                                 adalah dinonaktifkan dalam mode Pemrograman                                                                                     Paralel  dan Serial. Fuse Bits terkunci dalam Serial                                                                                dan Paralel Mode pemrograman (1)
      3                       0                   0                  Pemrograman lebih lanjut dan verifikasi Flash dan
                                                                        EEPROM dinonaktifkan secara paralel dan                                                                                              Pemrograman Serialm mode. Fuse Bits terkunci di                                                                                  kedua Serial dan Paralel Mode pemrograman (1)
Mode BLB0      BLB02          BLB01
      1                      1                    1                 Tidak ada batasan untuk SPM atau LPM yang                                                                                          mengakses  Aplikasi bagian
      2                      1                    0                  SPM tidak diizinkan untuk menulis ke bagian Aplikasi
      3                      0                    0                  SPM tidak diizinkan untuk menulis ke bagian Aplikasi,                                                                          dan LPM mengeksekusi dari bagian Boot Loader tidak
                                                                        diizinkan untuk membaca dari bagian Aplikasi. Jika                                                                                 Interupsi Vektor ditempatkan di bagian Boot Loader,                                                                               interupsi dinonaktifkan saat mengeksekusi dari bagian                                                                             Aplikasi
      4                      0                    1                   LPM mengeksekusi dari bagian Boot Loader tidak
                                                                         diizinkan untuk membaca dari bagian Aplikasi. Jika                                                                                 Interupsi Vektor ditempatkan di bagian Boot Loader,                                                                               interupsi dinonaktifkan saat mengeksekusi dari bagian                                                                             Aplikasi

Table 86. Lock Bit Protection Modes(2) (Continued)

Memory Lock Bits                                               Protection Type
Mode BLB1      BLB12         BLB11
       1                     1                   1            Tidak ada batasan untuk SPM atau LPM yang mengakses                                                                       Boot Loader bagian
       2                     1                   0            SPM tidak diizinkan untuk menulis ke bagian Boot Loader
       3                     0                   0            SPM tidak diizinkan untuk menulis ke bagian Boot Loader,
                                                                 dan LPM yang mengeksekusi dari bagian Aplikasi tidak
                                                                 diizinkan untuk membaca dari bagian Boot Loader. Jika                                                                         Interupsi Vektor ditempatkan di bagian Aplikasi, interupsi
                                                                 dinonaktifkan saat mengeksekusi dari bagian Boot Loader
      4                     0                    1            LPM yang dieksekusi dari bagian Aplikasi tidak diizinkan
                                                                 untuk membaca dari bagian Boot Loader. Jika Interrupt                                                                           Vectors ditempatkan di bagian Aplikasi, interupsi
                                                                 dinonaktifkan saat mengeksekusi dari bagian Boot Loader

Catatan: 1. Program Bits Fuse sebelum memprogram Lock Bits
2. "1" berarti tidak terprogram, "0" berarti diprogram

Fuse Bits 
ATmega8 memiliki dua byte sekering. Tabel 87 dan Tabel 88 di halaman 217 menjelaskan secara singkat fungsionalitasnya dari semua sekering dan bagaimana mereka dipetakan ke dalam byte sekering. Perhatikan bahwa sekeringnya dibaca sebagai nol logis, "0", jika diprogram.

Table 87. Fuse High Byte 

Fuse high Byte   bit no                                 Deskripsi                                            Nilai Default
RSTDISBL (4)        7       Pilih jika PC6 adalah pin I / O atau pin RESET      1 (tidak terprogram,                                                                                                                                                                           PC6  adalah RESET-pin)     
WDTON                  6       WDT selalu aktif                                                             1 (tidak diprogram, WDT diaktifkan                                                                                                                                               oleh WDTCR) 
SPIEN (1)                5       Aktifkan Serial Program dan Data Mengunduh      0 (diprogram, SPI prog. diaktifkan)
CKOPT (2)              4       Pilihan Osilator                                                               1 (tidak terprogram)
EESAVE                  3       EEPROM memori dipertahankan melalui Penghapusan Chip         1 (tidak   terprogram,  EEPROM tidak   diawetkan)   
BOOTSZ1                2      Pilih Ukuran Booting (lihat Tabel 82 dihalaman 2   1 3 untuk detail) 0 (diprogram) (3)
BOOTSZ0                           1       Pilih Ukuran Booting (lihat Tabel 82 dihalaman 213 untuk detail)      0 (diprogram) (3)

BOOTRST               0     Pilih Reset Vector                                                                1 (unprogrammed)

Catatan: 1. SPIEN Fuse tidak dapat diakses dalam mode Pemrograman Serial
2. Fuse CKOPT Fuse tergantung pada pengaturan bit CKSEL, lihat “Sumber Jam”
di halaman 26 untuk detailnya
3. Nilai default dari BOOTSZ1..0 menghasilkan Ukuran Boot maksimum. Lihat Tabel 82 di halaman 213
4. Saat memprogram RSTDISBL Fuse Parallel Programming harus digunakan untuk berubah sekering atau melakukan pemrograman lebih lanjut


Table 88. Fuse Low Byte


Fuse Low Byte  Bit No           Description                                                                  Default Value
BODLEVEL                              7               Detektor pemindai berwarna coklat level                                                   1 (tidak terprogram)
BODEN                                     6               Detektor coklat keluar memungkinkan                                                       1 (tidak terprogram, BOD dinonaktifkan)
SUT1                                          5               Pilih waktu start-up                                                                                          1 (tidak terprogram) (1)
SUT0                                         4               Pilih waktu start-up                                                                                          0 (diprogram) (1)
CKSEL3                                    3               Pilih Sumber jam                                                                                               0 (diprogram) (2)
CKSEL2                                    2               Pilih Sumber jam                                                                                               0 (diprogram) (2)
CKSEL1                                     1               Pilih Sumber jam                                                                                               0 (diprogram) (2)

CKSEL0                                    0              Pilih Sumber jam                                                                                                1 (tidak terprogram) (2)

Catatan: 1. Nilai default SUT1..0 menghasilkan waktu start-up maksimum. Lihat Tabel 10 di halaman 30 untuk rincian

2. Pengaturan default CKSEL3..0 menghasilkan internal RC Oscillator @ 1MHz. Lihat Tabel 2 pada halaman 26 untuk detailnya

Sumber Jam Perangkat ini memiliki opsi sumber jam berikut, yang dapat dipilih oleh Flash Fuse Bits seperti yang ditunjukkan di bawah. Jam dari sumber yang dipilih adalah input ke generator jam AVR, dan dialihkan ke modul yang sesuai.


Table 2. Device Clocking Options Select(1)
Device Clocking Option                                                                              CKSEL3..0
 External Crystal/Ceramic Resonator                                                  1111 - 1010 
 External Low-frequency Crystal                                                                  1001 
 External RC Oscillator                                                                            1000 - 0101                   Calibrated Internal RC Oscillator                                                        0100 - 0001  
 External Clock                                                                                                 0000

Berbagai pilihan untuk setiap opsi clocking diberikan di bagian berikut. Saat CPU bangun dari Power-down atau Power-save, sumber clock yang dipilih digunakan untuk mengatur waktu startup, memastikan operasi Oscillator yang stabil sebelum pelaksanaan instruksi dimulai. Ketika CPU mulai dari reset, ada penundaan tambahan yang memungkinkan daya mencapai level stabil sebelum dimulai operasi normal. Watchdog Oscillator digunakan untuk mengatur waktu bagian real-time ini waktu start-up. Jumlah siklus Osilator WDT yang digunakan untuk setiap timeout ditunjukkan pada Tabel 3. Frekuensi dari Watchdog Oscillator bergantung pada tegangan seperti yang ditunjukkan pada “ATmega8 Typical
Karakteristik - TA = -40 ° C hingga 85 ° C ”. Perangkat dikirimkan dengan CKSEL = "0001" dan SUT =

"10" (1MHz RC Oscillator internal, perlahan naik kekuatan).

Table 3. Number of Watchdog Oscillator Cycles
Typical Time-out (VCC = 5.0V)          Typical Time-out (VCC = 3.0V)     Number of Cycles                  4.1ms                                                         4.3ms                                             4K (4,096)                           65ms                                                         69ms                                             64K (65,536)



Status dari Fuse Bits tidak terpengaruh oleh Chip Erase. Perhatikan bahwa Fuse Bits terkunci jika kunci bit1 (LB1) diprogram. Program Bits Fuse sebelum memprogram Lock Bits



Latching of Fuses

Nilai sekring terkunci ketika perangkat memasuki mode Pemrograman dan perubahan
nilai sekering tidak akan berpengaruh sampai bagian meninggalkan mode Pemrograman. Ini tidak berlaku untuk EESAVE Fuse yang akan berlaku setelah diprogram. Sekering juga terkunci
Power-up dalam mode Normal.


Signature Bytes
Semua mikrokontroler Atmel memiliki kode tanda tangan 3-byte yang mengidentifikasi perangkat. Kode ini dapat dibaca dalam mode Serial dan Paralel, juga saat perangkat terkunci. Tiga byte berada di ruang alamat yang terpisah.
Untuk ATmega8, byte tanda tangan adalah:
1. 0x000: 0x1E (menunjukkan diproduksi oleh Atmel)
2. 0x001: 0x93 (menunjukkan 8KB Flash memory)
3. 0x002: 0x07 (menunjukkan perangkat ATmega8)

Calibration Byte
ATmega8 menyimpan empat nilai kalibrasi yang berbeda untuk RC Oscillator internal. Byte ini
berada di baris tanda tangan. Tinggi byte alamat 0x0000, 0x0001, 0x0002, dan 0x0003
masing-masing untuk 1MHz, 2MHz, 4MHz, dan 8Mhz. Selama Reset, nilai 1MHz secara otomatis
dimuat ke dalam Daftar OSCCAL. Jika frekuensi lain digunakan, nilai kalibrasi harus
dimuat secara manual, lihat "Oscillator Calibration Register - OSCCAL" pada halaman 31 untuk detailnya.

Page Size
Table 89. No. of Words in a Page and no. of Pages in the Flash 
Flash Size                     Page Size     PCWORD    No. of Pages    PCPAGE    PCMSB
 4K words (8 Kbytes)   32 words      PC [4:0]              128            PC[11:5]         11


Table 90. No. of Words in a Page and no. of Pages in the EEPROM 
EEPROM Size             Page Size     PCWORD    No. of Pages    PCPAGE    EEAMSB
512 bytes                    4 bytes           EEA[1:0]          128               EEA[8:2]         8





bootlodere

Boot Loader Dukungan - ReadWhile-Write

SelfProgramming
Dukungan Boot Loader menyediakan mekanisme Read-While-Write Self-Programming yang nyata untuk mengunduh dan mengunggah kode program oleh MCU itu sendiri. Fitur ini memungkinkan aplikasi yang fleksibel,pembaruan perangkat lunak yang dikontrol oleh MCU menggunakan program Boot Loader Flash,Program Boot Loader dapat menggunakan antarmuka data yang tersedia dan protokol yang terkait untuk membaca kode dan tulis (program) kode itu ke dalam memori Flash, atau baca kode dari memori Program.
Kode program dalam bagian Boot Loader memiliki kemampuan untuk menulis ke keseluruhan Flash, termasuk Memori Boot Loader. Maka, Boot Loader dapat memodifikasi dirinya sendiri, dan itu juga dapat menghapus dirinya sendiri dari kode jika fitur tersebut tidak diperlukan lagi. Ukuran Boot Loader Memory dapat dikonfigurasi dengan sekering dan Boot Loader memiliki dua set Boot terpisah
Kunci Bits yang dapat diatur secara mandiri. Ini memberi pengguna fleksibilitas yang unik untuk memilih yang berbeda tingkat perlindungan.

Fitur Boot Loader

• Read-While-Write Self-Programming
• Ukuran Memori Boot Fleksibel
• Keamanan Tinggi (Booting Lock Bits Terpisah untuk Perlindungan Fleksibel)
• Fuse Terpisah untuk Memilih Atur Ulang Vektor
• Halaman Dioptimalkan (1) Ukuran
• Kode Algoritma Efisien
• Dukungan Baca-Ubah-Tulis yang Efisien

Catatan: 1. Halaman adalah bagian dalam Flash yang terdiri dari beberapa byte (lihat Tabel 89 di halaman 218) yang digunakan selama pemrograman. Organisasi halaman tidak mempengaruhi operasi normal.

Bagian Aplikasi dan Boot Loader Flash:
Memori Flash diatur dalam dua bagian utama, bagian Aplikasi dan Boot
bagian loader (lihat Gambar 102 di halaman 204). Ukuran bagian yang berbeda dikonfigurasikan oleh fuse BOOTSZ seperti yang ditunjukkan pada Tabel 82 di halaman 213 dan Gambar 102 di halaman 204. Keduanya bagian dapat memiliki tingkat perlindungan yang berbeda karena memiliki beberapa Kunci Bits yang berbeda.Bagian aplikasi adalah bagian dari Flash yang digunakan untuk menyimpan kode aplikasi.Tingkat perlindungan untuk bagian aplikasi dapat dipilih oleh aplikasi Boot Lock Bits(Boot Lock Bits 0), lihat Tabel 78 di halaman 205. Bagian aplikasi tidak dapat menyimpan Boot apa pun Kode pemuat karena instruksi SPM dinonaktifkan ketika dijalankan dari bagian aplikasi.
Bagian BLS - Boot Loader
Sementara bagian aplikasi digunakan untuk menyimpan kode aplikasi, perangkat lunak Boot Loader harus ditempatkan di BLS karena instruksi SPM dapat memulai pemrograman kapan mengeksekusi dari BLS saja. Instruksi SPM dapat mengakses seluruh Flash, termasuk BLS sendiri. Tingkat perlindungan untuk bagian Boot Loader dapat dipilih oleh Boot Loader Kunci Bits (Boot Lock Bits 1), lihat Tabel 79 di halaman 205.

Bagian Baca-Sementara-Tulis dan Tidak Ada ReadWhile-Write Flash
Apakah CPU mendukung Read-While-Write atau jika CPU dihentikan selama perangkat lunak Boot Loader pembaruan tergantung pada alamat mana yang sedang diprogram. Selain keduanya bagian yang dapat dikonfigurasi oleh BOOTSZ Fuses seperti yang dijelaskan di atas, Flash juga dibagi menjadi dua bagian tetap, bagian Read-While-Write (RWW) dan No Read-WhileWrite (NRWW). Batas antara bagian RWW dan NRWW diberikan pada Tabel 83 di halaman 214 dan Gambar 102 di halaman 204. Perbedaan utama antara dua bagian adalah:
• Saat menghapus atau menulis halaman yang terletak di dalam bagian RWW, bagian NRWW dapat
baca selama operasi
• Saat menghapus atau menulis halaman yang terletak di dalam bagian NRWW, CPU dihentikan selama seluruh operasi
Perhatikan bahwa perangkat lunak pengguna tidak dapat membaca kode apa pun yang terletak di dalam bagian RWW selama operasi perangkat lunak Boot Loader. Bagian "Baca-Sementara-Menulis" sintaks merujuk ke mana bagian yang sedang diprogram (dihapus atau ditulis), bukan bagian mana yang sebenarnya baca selama pembaruan perangkat lunak Boot Loader.

Bagian RWW - Baca-Sementara Tulis
Jika pembaruan perangkat lunak Boot Loader memprogram halaman di dalam bagian RWW, itu mungkin untuk membaca kode dari Flash, tetapi hanya kode yang terletak di bagian NRWW. Selama sedang berlangsung pemrograman, perangkat lunak harus memastikan bahwa bagian RWW tidak pernah dibaca. Jika itu perangkat lunak pengguna mencoba membaca kode yang terletak di dalam bagian RWW (yaitu, oleh panggilan / rjmp / lpm atau interupsi) selama pemrograman, perangkat lunak mungkin berakhir di tempat yang tidak dikenal negara. Untuk menghindari hal ini, interupsi harus dinonaktifkan atau dipindahkan ke Bagian Boot Loader. Bagian Boot Loader selalu berada di bagian NRWW. Bagian RWW Sibuk bit (RWWSB) dalam Register Kontrol memori Program Penyimpanan (SPMCR) akan dibaca sebagai logis satu selama bagian RWW diblokir untuk membaca. Setelah pemrograman selesai, RWWSB harus dibersihkan oleh perangkat lunak sebelum membaca kode yang terletak di bagian RWW. Lihat “Simpan Program Daftar Kontrol Memori SPMCR” di halaman 206. untuk detail tentang cara membersihkan RWWSB.

Bagian NRWW - Tidak Ada ReadWhile-Write
Kode yang terletak di bagian NRWW dapat dibaca saat perangkat lunak Boot Loader diperbarui halaman di bagian RWW. Ketika kode Boot Loader memperbarui bagian NRWW, CPU dihentikan selama seluruh halaman dihapus atau operasi penulisan halaman. Kunci Boot Loader Bits Jika tidak diperlukan kemampuan Boot Loader, seluruh Flash tersedia untuk kode aplikasi. Itu Boot Loader memiliki dua set terpisah Boot Bit Kunci yang dapat diatur secara mandiri. Ini memberi pengguna memiliki fleksibilitas yang unik untuk memilih tingkat perlindungan yang berbeda. Pengguna dapat memilih:
• Untuk melindungi seluruh Flash dari pembaruan perangkat lunak oleh MCU
• Untuk melindungi hanya bagian Boot Loader Flash dari pembaruan perangkat lunak oleh MCU
• Untuk melindungi hanya bagian Aplikasi Flash dari pembaruan perangkat lunak oleh MCU
• Perbolehkan pembaruan perangkat lunak di seluruh Flash
Lihat Tabel 78 di halaman 205 dan Tabel 79 di halaman 205 untuk rincian lebih lanjut. Booting Kunci Bits bisa diatur dalam perangkat lunak dan dalam mode Pemrograman Serial atau Paralel, tetapi mereka dapat dihapus oleh chip hapus hanya perintah. Kunci Tulis umum (Lock bit mode 2) tidak mengontrol pemrograman memori Flash dengan instruksi SPM. Demikian pula, Kunci Baca / Tulis umum (Kunci bit mode 3) tidak mengontrol pembacaan atau penulisan oleh LPM / SPM.

Kunci Boot Loader Bits
Jika tidak diperlukan kemampuan Boot Loader, seluruh Flash tersedia untuk kode aplikasi. Itu Boot Loader memiliki dua set terpisah Boot Bit Kunci yang dapat diatur secara mandiri. Ini memberi pengguna memiliki fleksibilitas yang unik untuk memilih tingkat perlindungan yang berbeda. Pengguna dapat memilih:
• Untuk melindungi seluruh Flash dari pembaruan perangkat lunak oleh MCU
• Untuk melindungi hanya bagian Boot Loader Flash dari pembaruan perangkat lunak oleh MCU
• Untuk melindungi hanya bagian Aplikasi Flash dari pembaruan perangkat lunak oleh MCU
• Perbolehkan pembaruan perangkat lunak di seluruh Flash
Lihat Tabel 78 di halaman 205 dan Tabel 79 di halaman 205 untuk rincian lebih lanjut. 

Table 78. Boot Lock Bit0 Protection Modes (Application Section)(1)
________________________________________________________________________________
  BLB0 Mode   BLB02 Mode   BLB01 Mode     Protection
------------------------------------------------------------------------------------------------------------------------
     1                         1                        1                  Tidak ada batasan untuk SPM atau LPM yang                                                                                          mengakses bagian Aplikasi 
     2                         1                        0                  SPM tidak diizinkan untuk menulis ke bagian                                                                                          Aplikasi 
     3                         0                        0                  SPM tidak diizinkan untuk menulis ke bagian                                                                                          Aplikasi, dan LPM yang mengeksekusi dari bagian                                                                                  Boot Loader tidak diperbolehkan untuk membaca                                                                                    dari bagian Aplikasi. Jika Interrupt Vectors                                                                                              ditempatkan di bagian Boot Loader, interupsi akan                                                                                  dinonaktifkan saat mengeksekusi dari bagian                                                                                            Aplikasi 
   4                          0                        1                   LPM yang dieksekusi dari bagian Boot Loader tidak                                                                                diperbolehkan untuk membaca dari bagian Aplikasi.                                                                                Jika Interrupt Vectors ditempatkan di bagian Boot                                                                                    Loader, interupsi akan dinonaktifkan saat                                                                                                  mengeksekusi dari bagian 
_________________________________________________________________________________
Booting Kunci Bits bisa diatur dalam perangkat lunak dan dalam mode Pemrograman Serial atau Paralel, tetapi mereka dapat dihapus oleh chip hapus hanya perintah. Kunci Tulis umum (Lock bit mode 2) tidak mengontrol pemrograman memori Flash dengan instruksi SPM. Demikian pula, Kunci Baca / Tulis umum (Kunci bit mode 3) tidak mengontrol pembacaan atau penulisan oleh LPM / SPM.


Watchdog Timer Control Register – WDTCR

• Bits 7..5 - Res: Reserved Bits
Bit-bit ini disediakan bit di ATmega8 dan akan selalu dibaca sebagai nol.
• Bit 4 - WDCE: Watchdog Change Enable
Bit ini harus diatur ketika bit WDE ditulis ke logika nol. Kalau tidak, Watchdog tidak akan
dinonaktifkan. Setelah ditulis ke satu, perangkat keras akan menghapus bit ini setelah empat siklus jam. Lihat “Bit

• Bit 3 - WDE: Watchdog Enable
Ketika WDE ditulis ke logika, Timer Watchdog diaktifkan, dan jika WDE ditulis
ke logika nol, fungsi Timer Pengawas Waktu dinonaktifkan. WDE hanya dapat dihapus jika bit WDCE
memiliki level logika satu. Untuk menonaktifkan Timer Watchdog yang diaktifkan, prosedur berikut harus
diikuti:
1. Dalam operasi yang sama, tuliskan logika ke WDCE dan WDE. Logika harus ditulis
ke WDE meskipun sudah diatur ke satu sebelum operasi menonaktifkan dimulai
2. Dalam empat siklus jam berikutnya, tuliskan logika 0 ke WDE. Ini menonaktifkan Watchdog
• Bits 2..0 - WDP2, WDP1, WDP0: Watchdog Timer Prescaler 2, 1, dan 0
Bit WDP2, WDP1, dan WDP0 menentukan Pengawas Waktu Pengingat yang melakukan prescaling ketika Watchdog
Timer diaktifkan. Nilai prescaling yang berbeda dan Periode Timeout yang sesuai
ditunjukkan pada Tabel 17.

c code
void WDT_off(void)
{
/* reset WDT */
_WDR();
/* Write logical one to WDCE and WDE */
WDTCR |= (1<<WDCE) | (1<<WDE);
/* Turn off WDT */
WDTCR = 0x00;
}

Tingkat Keamanan 1
(WDTON Fuse
Tidak terprogram)
Dalam mode ini, Timer Pengawas awalnya dinonaktifkan, tetapi dapat diaktifkan dengan menulis bit WDE
ke 1 tanpa batasan apa pun. Urutan berjangka waktu diperlukan saat mengubah Waktu Pengawas Waktu Watchdog
periode atau menonaktifkan Timer Pengawas Waktu yang diaktifkan. Untuk menonaktifkan Timer Pengawas aktif dan / atau
mengubah Watchdog Time-out, prosedur berikut harus diikuti:
1. Dalam operasi yang sama, tuliskan logika ke WDCE dan WDE. Logika harus ditulis
ke WDE terlepas dari nilai sebelumnya dari bit WDE
2. Dalam empat siklus jam berikutnya, dalam operasi yang sama, tulis bit WDE dan WDP sebagai
diinginkan, tetapi dengan sedikit WDCE dibersihkan
Tingkat Keamanan 2
(WDTON Fuse
Diprogram)
Dalam mode ini, Timer Watchdog selalu diaktifkan, dan bit WDE akan selalu dibaca sebagai satu. SEBUAH
urutan waktu diperlukan saat mengubah Jangka waktu Batas Waktu Pengawas. Untuk mengubah
Watchdog Time-out, prosedur berikut harus diikuti:
1. Dalam operasi yang sama, tulis yang logis ke WDCE dan WDE. Meskipun WDE
selalu diatur, WDE harus ditulis ke satu untuk memulai urutan waktunya
Dalam empat jam siklus berikutnya, dalam operasi yang sama, tulis bit WDP sesuai keinginan, tetapi dengan
bit WDCE dihapus. Nilai yang ditulis ke bit WDE tidak relevan.

Power Management and Sleep Modes

Mode tidur memungkinkan aplikasi untuk mematikan modul yang tidak digunakan di MCU, sehingga menghemat
kekuasaan. AVR menyediakan berbagai mode tidur yang memungkinkan pengguna untuk menyesuaikan konsumsi daya
untuk persyaratan aplikasi.
Untuk memasukkan salah satu dari lima mode tidur, bit SE di MCUCR harus ditulis ke logika satu dan a
Instruksi TIDUR harus dilaksanakan. Bit SM2, SM1, dan SM0 dalam Daftar MCUCR
pilih mode tidur mana (Idle, ADC Noise Reduction, Power-down, Power-save, atau Standby)
akan diaktifkan oleh instruksi TIDUR. Lihat Tabel 13 untuk ringkasan. Jika ada interupsi yang diaktifkan
terjadi saat MCU dalam mode tidur, MCU bangun. MCU kemudian dihentikan untuk empat
siklus di samping waktu start-up, menjalankan rutin interupsi, dan melanjutkan eksekusi
dari instruksi berikut SLEEP. Isi dari Register File dan SRAM tidak berubah
ketika perangkat bangun dari tidur. Jika reset terjadi selama mode tidur, MCU akan bangun
dan mengeksekusi dari Reset Vector.
Perhatikan bahwa mode Siaga Diperpanjang yang ada di banyak AVR MCU lainnya telah dihapus di
ATmega8, karena input TOSC dan XTAL berbagi pin fisik yang sama.
Gambar 10 di halaman 25 menyajikan sistem jam yang berbeda dalam ATmega8, dan distribusinya.
Angka ini membantu dalam memilih mode tidur yang tepat

Daftar Kontrol MCU
- MCUCR
MCU Control Register berisi bit kontrol untuk manajemen daya.
• Bit 7 - SE: Sleep Enable
Bit SE harus ditulis ke logika satu untuk membuat MCU masuk ke mode tidur ketika SLEEP
instruksi dijalankan. Untuk menghindari MCU memasuki mode tidur kecuali itu adalah programmer
tujuannya, disarankan untuk mengatur Sleep Enable (SE) bit sesaat sebelum eksekusi
Instruksi TIDUR.
• Bits 6..4 - SM2..0: Mode Tidur Pilih Bits 2, 1, dan 0
Bit-bit ini memilih antara lima mode tidur yang tersedia seperti yang ditunjukkan pada Tabel 13.
 Sleep Mode                                       SM2                SM1          SM0
Idle                                                       0                        0               0       
ADC Noise Reduction                         0                        0               1
Power-down                                         0                        1               0
Power-save                                           0                        1               1
Reserved                                               1                        0               0
Reserved                                               1                        0               1
Standby(1)                                            1                        1               0

Catatan: 1. Modus siaga hanya tersedia dengan kristal eksternal atau resonator

Modus menganggur Ketika bit SM2..0 ditulis ke 000, instruksi TIDUR membuat MCU masuk Menganggur
mode, menghentikan CPU tetapi memungkinkan SPI, USART, Analog Comparator, ADC, Two-wire Serial
Antarmuka, Timer / Penghitung, Watchdog, dan sistem interupsi untuk terus beroperasi. Tidur ini
mode pada dasarnya menghentikan clkCPU dan clkFLASH, sementara memungkinkan jam lain untuk berjalan.
Mode diam memungkinkan MCU untuk bangun dari interupsi terpicu eksternal maupun internal
yang seperti Overflow Pengatur Waktu dan Transmit USART Selesaikan interupsi. Jika bangun dari
Comparator Analog interrupt tidak diperlukan, Pembanding Analog dapat dimatikan oleh
pengaturan bit ACD di Kontrol Komparator Analog dan Daftar Status - ACSR. Ini akan
kurangi konsumsi daya dalam mode Idle. Jika ADC diaktifkan, konversi dimulai secara otomatis
ketika mode ini dimasukkan.
ADC Kebisingan
Mode Pengurangan
Ketika bit SM2..0 ditulis ke 001, instruksi SLEEP membuat MCU masuk ADC
Modus Noise Reduction, menghentikan CPU tetapi memungkinkan ADC, interupsi eksternal,
Two-wire Serial Interface address watch, Timer / Counter2 dan Watchdog untuk melanjutkan
operasi (jika diaktifkan). Mode tidur ini pada dasarnya menghentikan clkI / O, clkCPU, dan clkFLASH, sementara mengizinkan
jam lain untuk dijalankan.
Ini meningkatkan lingkungan kebisingan untuk ADC, memungkinkan pengukuran resolusi yang lebih tinggi. Jika
ADC diaktifkan, konversi dimulai secara otomatis ketika mode ini dimasukkan. Selain bentuk
Konversi ADC Menyelesaikan interupsi, hanya Reset Eksternal, Reset Watchdog, Brown-out
Setel ulang, antarmuka serial Serial Dua Antarmuka cocok mengganggu, Timer / Counter2 interrupt, an
SPM / EEPROM siap mengganggu, atau interupsi level eksternal pada INT0 atau INT1, dapat membangunkan
MCU dari mode ADC Noise Reduction.
Mode Power-down Ketika bit SM2..0 ditulis ke 010, instruksi SLEEP membuat MCU masuk ke Powerdown
mode. Dalam mode ini, Osilator Eksternal dihentikan, sementara interupsi eksternal,
Two-wire Serial Interface address watch, dan Watchdog terus beroperasi (jika diaktifkan).
Hanya Reset Eksternal, Reset Watchdog, Reset Brown-out, Antarmuka Seri Dua Kabel
alamat interupsi pertandingan, atau interupsi tingkat eksternal pada INT0 atau INT1, dapat membangunkan MCU.
Mode tidur ini pada dasarnya menghentikan semua jam yang dihasilkan, memungkinkan pengoperasian modul asynchronous
hanya.
Perhatikan bahwa jika tingkat memicu interupsi digunakan untuk bangun dari mode Power-down, yang diubah
tingkat harus diadakan untuk beberapa waktu untuk membangunkan MCU. Lihat “Interupsi Eksternal” di halaman 66
untuk detailnya.
Ketika bangun dari mode Power-down, ada penundaan dari kondisi bangun yang terjadi
sampai bangun menjadi efektif. Ini memungkinkan jam untuk memulai kembali dan menjadi stabil setelahnya
telah dihentikan. Periode bangun ditentukan oleh Sekering CKSEL yang sama yang mendefinisikan
Setel ulang periode Waktu habis, seperti yang dijelaskan di “Sumber Jam” di halaman 26.
Mode Hemat Daya Ketika bit SM2..0 ditulis ke 011, instruksi SLEEP membuat MCU masuk ke Powersave
mode. Mode ini identik dengan Power-down, dengan satu pengecualian:
Jika Timer / Counter2 adalah clock asynchronously, yaitu AS2 bit di ASSR diatur,
Timer / Counter2 akan berjalan selama tidur. Perangkat dapat bangun dari Overflow Timer atau
Output Bandingkan event dari Timer / Counter2 jika interupsi Timer / Counter2 yang sesuai
mengaktifkan bit-bit diatur dalam TIMSK, dan bit pengaktifan interrupt global di SREG diatur.
Jika timer asynchronous TIDAK clock asynchronously, mode Power-down dianjurkan
alih-alih mode Hemat daya karena isi register dalam pewaktu tidak sinkron
harus dianggap tidak terdefinisi setelah bangun dalam mode Power-save jika AS2 adalah 0.
Mode tidur ini pada dasarnya menghentikan semua jam kecuali clkASY, memungkinkan operasi hanya asinkron
modul, termasuk Timer / Counter 2 jika clock asynchronous
Modus Siaga Ketika bit SM2..0 adalah 110 dan opsi jam kristal / resonator eksternal dipilih,
Instruksi TIDUR membuat MCU masuk ke mode Standby. Mode ini identik dengan Power-down
dengan pengecualian bahwa Osilator terus berjalan. Dari mode Standby, perangkat akan aktif
dalam 6 siklus jam.


Meminimalkan Daya
Konsumsi
Ada beberapa masalah yang perlu dipertimbangkan ketika mencoba untuk meminimalkan konsumsi daya dalam AVR
sistem terkontrol. Secara umum, mode tidur sebaiknya digunakan semaksimal mungkin, dan tidur
mode harus dipilih sehingga sesedikit mungkin fungsi perangkat beroperasi. Semua
fungsi yang tidak diperlukan harus dinonaktifkan. Secara khusus, modul-modul berikut mungkin perlu khusus
pertimbangan ketika mencoba untuk mencapai konsumsi daya serendah mungkin.
Analog-ke-Digital
Konverter (ADC)
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 dinyalakan lagi, berikutnya
konversi akan menjadi konversi yang diperpanjang. Lihat "Konverter Analog-ke-Digital" pada halaman 189
untuk detail tentang operasi ADC.
Komparator Analog Saat memasuki mode diam, Pembanding Analog harus dinonaktifkan jika tidak digunakan. Saat masuk
Mode ADC Noise Reduction, Pembanding Analog harus dinonaktifkan. Di tempat tidur yang lain
mode, Pembanding Analog secara otomatis dinonaktifkan. Namun, jika Pembanding Analog
mengatur untuk menggunakan Referensi Tegangan Internal sebagai input, Pembanding Analog harus dinonaktifkan
dalam semua mode tidur. Jika tidak, Referensi Tegangan Internal akan diaktifkan,
tidak bergantung pada mode tidur. Lihat “Pembanding Analog” di halaman 186 untuk detail tentang caranya
mengkonfigurasi Pembanding Analog.

serial prog

Baik array memori Flash dan EEPROM dapat diprogram menggunakan bus SPI serial sementara
RESET ditarik ke GND. Antarmuka serial terdiri dari pin SCK, MOSI (input) dan MISO (output).
Setelah RESET disetel rendah, instruksi Pemrograman Aktifkan harus dieksekusi terlebih dahulu
sebelum operasi program / hapus dapat dijalankan. CATATAN, pada Tabel 96, pemetaan pin untuk SPI
pemrograman terdaftar. Tidak semua bagian menggunakan pin SPI yang didedikasikan untuk antarmuka SPI internal.

Saat memprogram EEPROM, siklus penghapusan otomatis dibangun ke dalam pemrograman self-timeed
operasi (dalam mode Serial HANYA) dan tidak perlu terlebih dahulu mengeksekusi Hapus Chip
petunjuk. Operasi Penghapusan Chip mengubah konten dari setiap lokasi memori di keduanya
Program dan EEPROM array ke 0xFF.
Bergantung pada CKSEL Fuses, jam yang valid harus ada. Minimum periode rendah dan tinggi
untuk input Serial Clock (SCK) didefinisikan sebagai berikut:
Rendah:> 2 siklus clock CPU untuk fck <12MHz, 3 siklus clock CPU untuk fck> = 12MHz
Tinggi:> 2 siklus jam CPU untuk fck <12MHz, 3 siklus clock CPU untuk fck> = 12MHz
Pemrograman Serial
Algoritma
Saat menulis data serial ke ATmega8, data di-clock di tepi SCK yang naik.
Saat membaca data dari ATmega8, data di-clock di tepi SCK yang jatuh. Lihat Gambar
113 di halaman 232 untuk detail waktu.
Untuk memprogram dan memverifikasi ATmega8 dalam mode Pemrograman Serial, urutan berikut adalah
direkomendasikan (lihat empat format instruksi byte pada Tabel 98 di halaman 233):
1. Urutan daya-up:
Terapkan daya antara VCC dan GND sementara RESET dan SCK diatur ke "0". Di beberapa sistem,
programmer tidak dapat menjamin bahwa SCK diadakan rendah selama Power-up. Di dalam
case, RESET harus diberi pulsa positif setidaknya dua siklus clock CPU
setelah SCK disetel ke “0”
2. Tunggu setidaknya 20ms dan aktifkan Pemrograman Serial dengan mengirimkan Pemrograman
Aktifkan instruksi serial untuk menyematkan MOSI
3. Instruksi Pemrograman Serial tidak akan berfungsi jika komunikasi tidak sinkron.
Kapan sinkron. byte kedua (0x53), akan bergema kembali ketika mengeluarkan yang ketiga
byte dari instruksi Pemrograman Aktifkan. Apakah gema itu benar atau salah, keempatnya
byte dari instruksi harus ditransmisikan. Jika 0x53 tidak bergema kembali, berikan RESET a
pulsa positif dan berikan perintah Pemrograman baru
4. Flash diprogram satu halaman setiap kali. Ukuran halaman ditemukan pada Tabel 89 pada
halaman 218. Halaman memori dimuat satu byte pada satu waktu dengan menyediakan 5 LSB dari
alamat dan data bersama dengan instruksi Halaman memori Program Pemuatan. Untuk memastikan
loading halaman yang benar, data Low byte harus dimuat sebelum data High byte adalah
diterapkan untuk alamat yang diberikan. Halaman memori Program disimpan dengan memuat Tulis
Program instruksi halaman memori dengan 7MSB dari alamat. Jika polling tidak digunakan,
pengguna harus menunggu setidaknya tWD_FLASH sebelum menerbitkan halaman berikutnya (lihat Tabel 97 di halaman
232).
Catatan: Jika perintah lain selain polling (baca) diterapkan sebelum operasi tulis (FLASH,
EEPROM, Lock Bits, Fuses) selesai, dapat menyebabkan pemrograman salah
5. Array EEPROM diprogram satu byte pada satu waktu dengan menyediakan alamat dan data
bersama dengan instruksi Menulis yang tepat. Lokasi memori EEPROM adalah yang pertama
otomatis dihapus sebelum data baru ditulis. Jika polling tidak digunakan, pengguna harus menunggu
setidaknya tWD_EEPROM sebelum mengeluarkan byte berikutnya (lihat Tabel 97 di halaman 232). Dalam sebuah chip
menghapus perangkat, tidak ada 0xFF di file data yang perlu diprogram
6. Setiap lokasi memori dapat diverifikasi dengan menggunakan instruksi Baca yang mengembalikan konten
di alamat yang dipilih pada output serial MISO
7. Di akhir sesi pemrograman, RESET dapat diatur tinggi untuk memulai normal
operasi
8. Urutan daya mati (jika diperlukan):
Setel RESET ke "1"
Matikan VCC mati

Flash Polling Data Saat halaman diprogram ke dalam Flash, membaca lokasi alamat di dalam halaman
diprogram akan memberikan nilai 0xFF. Pada saat perangkat siap untuk halaman baru, itu
nilai yang diprogram akan terbaca dengan benar. Ini digunakan untuk menentukan kapan halaman berikutnya dapat ditulis.
Perhatikan bahwa seluruh halaman ditulis secara bersamaan dan alamat apa pun di dalam halaman bisa
digunakan untuk polling. Polling data dari Flash tidak akan berfungsi untuk nilai 0xFF, jadi ketika pemrograman
nilai ini, pengguna harus menunggu setidaknya tWD_FLASH sebelum memprogram halaman berikutnya. Sebagai
perangkat yang dihapus oleh chip mengandung 0xFF di semua lokasi, pemrograman alamat yang dimaksudkan
mengandung 0xFF, dapat dilewati. Lihat Tabel 97 di halaman 232 untuk nilai tWD_FLASH.
232
2486AA – AVR – 02/2013
ATmega8 (L)
Polling Data EEPROM Ketika byte baru telah ditulis dan sedang diprogram ke dalam EEPROM, bacalah
alamat lokasi yang diprogram akan memberikan nilai 0xFF. Pada saat perangkat siap digunakan
byte baru, nilai yang diprogram akan terbaca dengan benar. Ini digunakan untuk menentukan kapan berikutnya
byte dapat ditulis. Ini tidak akan berfungsi untuk nilai 0xFF, tetapi pengguna harus memiliki yang berikut
dalam pikiran: Sebagai perangkat yang dihapus oleh chip mengandung 0xFF di semua lokasi, pemrograman alamat itu
dimaksudkan mengandung 0xFF, dapat dilewati. Ini tidak berlaku jika EEPROM Diprogram ulang
tanpa menghapus-chip perangkat. Dalam hal ini, pengumpulan data tidak dapat digunakan untuk nilai
0xFF, dan pengguna harus menunggu setidaknya tWD_EEPROM sebelum memprogram byte berikutnya. Lihat
Tabel 97 untuk nilai tWD_EEPROM.

Petunjuk
Format Instruksi
Byte 1 Byte 2 Byte 3 Byte 4 Operasi
Pemrograman Aktifkan 1010 1100 0101 0011 xxxx xxxx xxxx xxxx Aktifkan Pemrograman Serial setelah
RESET menjadi rendah
Chip Erase 1010 1100 100x xxxx xxxx xxxx xxxx xxxx Chip Hapus EEPROM dan Flash
Baca Program Memori 0010 H000 0000 aaaa bbbb bbbb oooo oooo Baca H (tinggi atau rendah) data o dari
Memori program pada alamat kata
a: b
Muat Memori Program
Halaman
0100 H000 0000 xxxx xxxb bbbb iiii iiii Tuliskan H (tinggi atau rendah) data i ke
Halaman memori program pada kata
alamat b. Data Low byte harus
dimuat sebelum byte Data Tinggi
diterapkan dalam alamat yang sama
Tulis Memori Program
Halaman
0100 1100 0000 aaaa bbbx xxxx xxxx xxxx Program Tulis halaman Memori di
alamat a: b
Baca EEPROM Memory 1010 0000 00xx xxxa bbbb bbbb oooo oooo Baca data dari EEPROM
memori di alamat: b
Tulis EEPROM Memori 1100 0000 00xx xxxa bbbb bbbb iiii iiii Tuliskan data saya ke memori EEPROM
di alamat: b
Baca Kunci Bits 0101 1000 0000 0000 xxxx xxxx xxoo oooo Baca Kunci Bits. "0" = diprogram,
"1" = tidak terprogram. Lihat Tabel
85 di halaman 215 untuk detailnya
Tulis Kunci Bits 1010 1100 111x xxxx xxxx xxxx 11ii iiii Tulis Kunci Bits. Setel bit = “0” menjadi
program Kunci Bits. Lihat Tabel 85
di halaman 215 untuk detailnya
Baca Tanda Tangan Byte 0011 0000 00xx xxxx xxxx xxbb oooo oooo Baca Tanda Tangan Byte o di alamat
b
Tulis Fuse Bits 1010 1100 1010 0000 xxxx xxxx iiii iiii Set bits = "0" untuk memprogram, "1" ke
tidak program. Lihat Tabel 88 di
halaman 217 untuk detailnya
Tulis Fuse High Bits 1010 1100 1010 1000 xxxx xxxx iiii iiii Set bits = "0" untuk memprogram, "1" ke
tidak program. Lihat Tabel 87 di
halaman 216 untuk detailnya
Baca Fuse Bits 0101 0000 0000 0000 xxxx xxxx oooo oooo Baca Fuse Bits. "0" = diprogram,
"1" = tidak terprogram. Lihat Tabel
88 di halaman 217 untuk detailnya
Baca Fuse High Bits 0101 1000 0000 1000 xxxx xxxx oooo oooo Baca Fuse high bit. "0" = diprogram,
"1" = tidak terprogram.
Lihat Tabel 87 di halaman 216 untuk
rincian
Baca Kalibrasi Byte 0011 1000 00xx xxxx 0000 00bb oooo oooo Baca Kalibrasi Byte

: a = address high bits 
b = address low bits 
H = 0 – Low byte, 1 – High byte
o = data out 
i = data in 
x = don’t care

Parallel Programming

Paralel
Pemrograman
Masuk ke Pemrograman
Mode
Algoritma berikut menempatkan perangkat dalam mode Pemrograman Paralel:
1. Terapkan 4.5V - 5.5V antara VCC dan GND, dan tunggu setidaknya 100μs
2. Atur RESET ke "0" dan alihkan XTAL1 setidaknya 6 kali
3. Atur pin Prog_enable yang tercantum pada Tabel 92 di halaman 220 hingga “0000” dan tunggu setidaknya
100ns
4. Terapkan 11.5V - 12.5V untuk RESET. Setiap aktivitas pada pin Prog_enable dalam 100ns setelah + 12V
telah diterapkan ke RESET, akan menyebabkan perangkat gagal memasuki mode Pemrograman
Catatan, jika pin RESET dinonaktifkan dengan memprogram RSTDISBL Fuse, itu mungkin tidak dapat dilakukan
untuk mengikuti algoritma yang diusulkan di atas. Hal yang sama mungkin berlaku ketika Kristal Eksternal atau Eksternal
Konfigurasi RC dipilih karena tidak mungkin untuk menerapkan pulsa XTAL1 yang berkualitas. Sedemikian
kasus, algoritma berikut harus diikuti:
1. Set pin Prog_enable yang tercantum pada Tabel 92 di halaman 220 hingga “0000”
2. Terapkan 4.5V - 5.5V antara VCC dan GND secara bersamaan saat 11.5V - 12.5V diterapkan
RESET
3. Tunggu 100ns
4. Memprogram ulang sekering untuk memastikan bahwa Jam Eksternal dipilih sebagai sumber jam
(CKSEL3: 0 = 0'b0000) dan pin RESET diaktifkan (RSTDISBL tidak terprogram). Jika Kunci
Bit diprogram, perintah penghapusan chip harus dijalankan sebelum mengubah
sekering
5. Keluar dari mode Pemrograman dengan daya perangkat mati atau dengan membawa PIN RESET ke 0'b0
6. Memasuki mode Pemrograman dengan algoritma asli, seperti yang dijelaskan di atas
Pertimbangan untuk
Pemrograman Efisien
Perintah dan alamat yang disampaikan dalam perangkat selama pemrograman. Untuk efisien
pemrograman, setelah ini harus komposit.
• Perintah hanya perlu untuk memanggil atau membaca banyak memori
lokasi
• Lewati menulis nilai data 0xFF, sebagai isi EEPROM (kecuali
EESAVE Fuse diprogram) dan Flash setelah Penghapusan Chip
• Address Kebutuhan byte tinggi hanya agar sebelum pemrograman atau membaca 256 kata baru
jendela dalam Flash atau 256 byte EEPROM. Pertimbangan ini juga berlaku untuk byte Tanda Tangan
bacaan

Menghapus Chip The Chip Erase akan menghapus Flash dan EEPROM (1) memori ditambah Lock Bits. The Lock Bits adalah
tidak diatur ulang sampai memori Program terhapus seluruhnya. The Fuse Bits tidak
berubah. Penghapusan Chip harus dilakukan sebelum Flash dan / atau EEPROM
diprogram kembali.
Catatan: 1. Memori EEPRPOM disimpan selama penghapusan chip jika Fuse EESAVE diprogram
Muat Perintah "Hapus Chip"
1. Setel XA1, XA0 ke "10". Ini memungkinkan pemuatan perintah
2. Setel BS1 ke “0”
3. Atur DATA ke "1000 0000". Ini adalah perintah untuk Chip Erase
4. Berikan XTAL1 pulsa positif. Ini memuat perintah
5. Berikan WR pulsa negatif. Ini memulai Penghapusan Chip. RDY / BSY menjadi rendah
6. Tunggu hingga RDY / BSY menjadi tinggi sebelum memuat perintah baru


Memprogram
Flash
Flash diatur dalam halaman, lihat Tabel 89 di halaman 218. Saat memprogram Flash,
data program dilekatkan ke buffer halaman. Ini memungkinkan satu halaman data program diprogram
serentak. Prosedur berikut menjelaskan cara memprogram seluruh Flash
ingatan:
A. Muat Perintah "Tulis Flash"
1. Setel XA1, XA0 ke "10". Ini memungkinkan pemuatan perintah
2. Setel BS1 ke "0"
3. Atur DATA menjadi "0001 0000". Ini adalah perintah untuk Write Flash
4. Berikan XTAL1 pulsa positif. Ini memuat perintah
B. Load Address Low byte
1. Setel XA1, XA0 ke “00”. Ini memungkinkan pemuatan alamat
2. Atur BS1 ke “0”. Ini memilih alamat rendah
3. Atur DATA = Alamat Bit rendah (0x00 - 0xFF)
4. Berikan XTAL1 pulsa positif. Ini memuat alamat Low byte
C. Load Data Low byte
1. Setel XA1, XA0 ke "01". Ini memungkinkan pemuatan data
2. Atur DATA = Data Byte rendah (0x00 - 0xFF)
3. Berikan XTAL1 pulsa positif. Ini memuat byte data
D. Muat Data Bita Tinggi
1. Atur BS1 ke “1”. Ini memilih byte data tinggi
2. Setel XA1, XA0 ke "01". Ini memungkinkan pemuatan data
3. Atur DATA = Data Tinggi byte (0x00 - 0xFF)
4. Berikan XTAL1 pulsa positif. Ini memuat byte data
E. Data Latch
1. Atur BS1 ke “1”. Ini memilih byte data tinggi
2. Berikan PAGEL pulsa positif. Ini mengaitkan byte data (lihat Gambar 106 di halaman 224
untuk bentuk gelombang sinyal)
F. Ulangi B hingga E sampai seluruh buffer terisi atau sampai semua data di dalam halaman dimuat
Sementara bit yang lebih rendah di alamat dipetakan ke kata-kata di dalam halaman, alamat bit lebih tinggi
halaman-halaman dalam FLASH. Ini diilustrasikan pada Gambar 105 di halaman 223. Perhatikan bahwa jika kurang dari
delapan bit diperlukan untuk mengatasi kata-kata di halaman (halaman <256), bit paling signifikan (s)
di alamat Low byte digunakan untuk alamat halaman saat melakukan penulisan halaman.
G. Muat Alamat Bita Tinggi
1. Setel XA1, XA0 ke “00”. Ini memungkinkan pemuatan alamat
2. Atur BS1 ke “1”. Ini memilih alamat yang tinggi
3. Atur DATA = Alamat Bita tinggi (0x00 - 0xFF)
4. Berikan XTAL1 pulsa positif. Ini memuat alamat byte Tinggi
H. Halaman Program
1. Set BS1 = “0”
2. Berikan WR pulsa negatif. Ini memulai pemrograman dari seluruh halaman data. RDY / BSY
menjadi rendah
3. Tunggu sampai RDY / BSY menjadi tinggi. (Lihat Gambar 106 di halaman 224 untuk bentuk gelombang sinyal)
223
2486AA – AVR – 02/2013
ATmega8 (L)
I. Ulangi B hingga H hingga seluruh Flash diprogram atau hingga semua data telah terprogram
diprogram.
J. Pemrograman Akhir Halaman
1. Setel XA1, XA0 ke "10". Ini memungkinkan pemuatan perintah
2. Setel DATA ke "0000 0000". Ini adalah perintah untuk No Operation
3. Berikan XTAL1 pulsa positif. Ini memuat perintah, dan sinyal tulis internal
ulang
Memprogram
EEPROM
EEPROM diatur dalam halaman, lihat Tabel 90 di halaman 218. Saat memprogram
EEPROM, data program dilekatkan ke buffer halaman. Ini memungkinkan satu halaman data
diprogram secara bersamaan. Algoritma pemrograman untuk memori EEPROM Data adalah sebagai
berikut (lihat "Memprogram Flash" di halaman 222 untuk detail tentang Perintah, Alamat, dan
Pemuatan data):
1. A: Muat Perintah "0001 0001"
2. G: Load Address High byte (0x00 - 0xFF)
3. B: Load Address Low byte (0x00 - 0xFF)
4. C: Muat Data (0x00 - 0xFF)
5. E: Latch data (berikan PAGEL pulsa positif)
K: Ulangi 3 hingga 5 hingga seluruh buffer terisi
L: Halaman Program EEPROM
1. Atur BS1 ke “0”
2. Berikan WR pulsa negatif. Ini memulai pemrograman halaman EEPROM. RDY / BSY
menjadi rendah
3. Tunggu hingga RDY / BSY berjalan tinggi sebelum memprogram halaman berikutnya (lihat Gambar 107 di
halaman 225 untuk bentuk gelombang sinyal)

Membaca Flash Algoritma untuk membaca memori Flash adalah sebagai berikut (lihat "Memprogram Flash"
halaman 222 untuk detail tentang Pemuatan Perintah dan Alamat):
1. A: Muat Command “0000 0010”
2. G: Load Address High byte (0x00 - 0xFF)
3. B: Load Address Low byte (0x00 - 0xFF)
4. Atur OE ke "0", dan BS1 ke "0". Kata Flash Byte rendah sekarang dapat dibaca di DATA
5. Set BS1 ke "1". Kata Flash, byte tinggi sekarang dapat dibaca di DATA
6. Tetapkan OE ke “1”
Membaca EEPROM Algoritma untuk membaca memori EEPROM adalah sebagai berikut (lihat "Memprogram Flash")
di halaman 222 untuk detail tentang Pemuatan Perintah dan Alamat):
1. A: Muat Command "0000 0011"
2. G: Load Address High byte (0x00 - 0xFF)
3. B: Load Address Low byte (0x00 - 0xFF)
4. Atur OE ke "0", dan BS1 ke "0". EEPROM Data byte sekarang dapat dibaca di DATA
5. Atur OE ke “1”
Memprogram
Fuse Bit Rendah
Algoritma untuk memprogram bit Fuse Low adalah sebagai berikut (lihat "Memprogram Flash")
di halaman 222 untuk detail tentang Pemuatan Perintah dan Data):
1. A: Muat Perintah "0100 0000"
2. C: Load Data Low byte. Bit n = "0" program dan bit n = "1" menghapus bit Fuse
3. Atur BS1 dan BS2 ke “0”
4. Berikan WR pulsa negatif dan tunggu RDY / BSY menjadi tinggi
RDY / BSY
WR
OE
RESET + 12V
PAGEL
BS2
0x11 ADDR. ADDR DATA TINGGI. ADDR DATA RENDAH. DATA RENDAH XX
XA1
XA0
BS1
XTAL1
XX
A G B CE B C E L
K
226
2486AA – AVR – 02/2013
ATmega8 (L)
Memprogram
Fuse High Bits
Algoritma untuk memprogram bit-bit tinggi Fuse adalah sebagai berikut (lihat "Memprogram Flash"
di halaman 222 untuk detail tentang Pemuatan Perintah dan Data):
1. A: Muat Perintah "0100 0000"
2. C: Load Data Low byte. Bit n = "0" program dan bit n = "1" menghapus bit Fuse
3. Atur BS1 ke "1" dan BS2 ke "0". Ini memilih byte data tinggi
4. Berikan WR pulsa negatif dan tunggu RDY / BSY menjadi tinggi
5. Atur BS1 ke “0”. Ini memilih byte data rendah
Memprogram Kunci
Bits
Algoritma untuk memprogram Lock Bits adalah sebagai berikut (lihat "Memprogram Flash"
halaman 222 untuk detail tentang Pemuatan Perintah dan Data):
1. A: Muat Command "0010 0000"
2. C: Load Data Low byte. Bit n = “0” memprogram Lock bit
3. Berikan WR pulsa negatif dan tunggu RDY / BSY menjadi tinggi
The Lock Bits hanya dapat dibersihkan dengan mengeksekusi Hapus Chip.
Membaca Fuse dan
Kunci Bits
Algoritma untuk membaca Fuse dan Lock Bits adalah sebagai berikut (lihat "Memprogram Flash"
di halaman 222 untuk detail tentang Pemuatan perintah):
1. A: Muat Command “0000 0100”
2. Atur OE ke "0", BS2 ke "0", dan BS1 ke "0". Status Fuse Low bit sekarang bisa
baca di DATA ("0" berarti diprogram)
3. Atur OE ke "0", BS2 ke "1", dan BS1 ke "1". Status High Fuse High sekarang bisa
baca di DATA ("0" berarti diprogram)
4. Atur OE ke "0", BS2 ke "0", dan BS1 ke "1". Status Lock Bits sekarang bisa dibaca
DATA ("0" berarti diprogram)
5. Atur OE ke “1”

Membaca Tanda Tangan
Byte
Algoritma untuk membaca byte Tanda Tangan adalah sebagai berikut (lihat "Memprogram Flash" di
halaman 222 untuk detail tentang Pemuatan Perintah dan Alamat):
1. A: Muat Command “0000 1000”
2. B: Load Address Low byte (0x00 - 0x02)
3. Atur OE ke "0", dan BS1 ke "0". Byte byte yang dipilih sekarang dapat dibaca di DATA.
4. Atur OE ke “1”
Membaca
Kalibrasi Byte
Algoritma untuk membaca byte Kalibrasi adalah sebagai berikut (lihat "Memprogram Flash" di
halaman 222 untuk detail tentang Pemuatan Perintah dan Alamat):
1. A: Muat Command “0000 1000”
2. B: Load Address Low byte, (0x00 - 0x03)
3. Atur OE ke "0", dan BS1 ke "1". Bit Kalibrasi sekarang dapat dibaca di DATA
4. Atur OE ke “1”