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”
Tidak ada komentar:
Posting Komentar