Selasa, 24 Juli 2018

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

Tidak ada komentar:

Posting Komentar