Memori pada ATMega8535 terdiri dari:
– 8 Kb On Chip In System Programmable Flash Memory
– 608 byte SRAM
– 512 byte EEPROM
On Chip In System Programmable Flash Memory
Merupakan Memori Flash yang diprogram secara In System Programming (ISP) dan berfungsi untuk menyimpan program mikrokontroler. Pada ATMega8535 memori ini terpisah menjadi dua bagian yaitu Application Flash dan Boot Flash.

Application Flash adalah area memori untuk aplikasi yang dirancang oleh programmer sdangkan Boot Flash adalah area memori untuk program bootloader yaitu program kecil yang berfungsi untuk mengambil data dari port serial dan diisi ke application flash sehingga ATMega8535 dapat diisi melalui serial port seperti pada arduino.
Untuk penulisan data ke lokasi Flash Memory ini biasanya dilakukan melalui In System Programming (kecuali bila boot flash sudah terisi bootloader di mana pengisian juga bisa dilakukan melalui port serial).
Proses tersebut dilakukan dengan menggunakan DU ISP (Delta USB In System Programmer) yang terhubung pada SPI Port ATMega8535
DU ISP V5.0 Atmel USB Downloader
Dan saat ini downloader terbaru kami yang baru saja dirilis Agustus 2024 adalah:
Namun untuk Sistem Minimum ST-8535 USB, downloader tersebut tidak diperlukan lagi karena sudah terintegrasi dalam sistem minimum
Aplikasi yang digunakan adalah AVR Studio seperti yang dibahas pada bagian 1 Instalasi IDE

SRAM
Merupakan Static RAM yang terdiri dari 96 Register dan Memori I/O serta 512 byte internal SRAM untuk menyimpan variabel.

Bagaimanakah penggunaan SRAM dan kapankah SRAM digunakan? Pada Register File digunakan saat program yang kita rancang mengakses register bank mulai R0 hingga R31 dan biasanya digunakan pada bahasa assembler
Listing 3.1:
Ldi R16,Low($FF) ;isi R16 dengan nilai $FF
I/O Register digunakan saat program yang kita rancang mengakses I/O atau register-register fungsi khusus.
Listing 3.2:
Assembler Source Code:
LDI R16,Low($55);
Out PORTB,R16;
C Source Code:
PORTB=0x55;
Kedua listing di atas berfungsi memberikan nilai $55 ke Port B dengan mengisikan nilai tersebut pada lokasi memori Port B yaitu di alamat 0x38 (dapat dilihat di bagian kanan AVR Studio)

Pada internal SRAM di sini digunakan untuk variabel dari program. Contohnya adalah sebagai berikut:
Listing 3.3:
Assembler Source Code:
.DSEG
.org SRAM_Start
DataPort: .byte 1
.CSEG
.org 0
Start:
Ldi R16,Low($55);
Sts DataPort,R16;
C Source Code:
unsigned char data_port;
data_port=0x55;
EEPROM
Memori sebesar 512 byte yang digunakan untuk menyimpan data secara permanen sehingga tidak hilang walaupun listrik padam, namun dapat dihapus dan ditimpa kembali apabila diperlukan. Memori ini juga dapat digunakan untuk menyimpan variabel-variabel penting yang tidak boleh hilang walaupun listrik padam. Ada dua metode untuk mengakses memori ini yaitu:
- Menulis, membaca dan menghapus melalui ISP Port
Proses ini biasanya digunakan untuk:
- Memberi nilai awal pada EEPROM pada saat program mulai didownload ke mikrokontroler. Contohnya untuk data factory default
- Membaca nilai EEPROM untuk mengetahui apakah fungsi penulisan data ke EEPROM pada saat kita merancang program sudah benar
Dibutuhkan Downloader DU ISP dan Software AVR Studio untuk melakukan hal ini

AVRStudio mendownload data dari file eeprom_v19.hex ke ATMega8535
- Berikutnya adalah akses melalui software, yang dimaksud dalam hal ini adalah program yang berjalan pada ATMega8535 itu sendiri yang menuliskan atau membaca data dari EEPROMnya. Untuk menuliskan program yang dapat mengakses EEPROM, terlebih dahulu kita harus mempelajari register-register EEPROM pada ATMega8535
Register EEARH dan EEARL

Merupakan register penampung alamat dari EEPROM di mana EEARH adalah alamat byte tinggi dan EEARL adalah alamat byte rendah. Register ini harus diisi terlebih dahulu saat akan membaca atau menulis ke EEPROM
Register EEPROM Data – EEDR

Merupakan register penampung data dari EEPROM yang akan ditulis atau yang sedang dibaca.
EEPROM Control Register – EECR

Merupakan register yang berfungsi untuk mengatur penulisan dan pembacaan data ke dan dari EEPROM
Bit 3 – EERIE EEPROM Ready Interrupt Enable, logika 1 pada bit ini akan mengaktifkan EEPROM Ready Interrupt apabila bit SREG berlogika 1 dan logika 0 akan menon aktifkan EEPROM Ready Interrupt
Bit 2 – EEMWE EEPROM Master Write Enable, apabila bit ini berlogika 1 maka mengaktifkan bit EEWE (memberi logika 1) akan mengaktifkan proses penulisan EEPROM namun apabila bit ini berlogika 0 maka kondisi pada bit EEWE tidak akan menimbulkan efek apapun.
Bit 1 – EEWE EEPROM Write Enable, apabila bit ini berlogika 1 dan EEMWE juga berlogika 1 maka proses penulisan data ke EEPROM akan dilakukan.
Bit 0 – EERE EEPROM Read Enable, apabila bit ini berlogika 1 maka proses pembacaan data pada alamat yang ditunjuk oleh EEAR akan segera dilakukan dan data tersimpan pada EEDR.
Agar program yang kita rancang dapat melakukan penulisan atau pembacaan data di EEPROM maka berikut fungsi yang harus kita masukkan ke dalam program kita.
Listing 3.4
unsigned char EEPROM_read(unsigned int uiAddress){
while (EECR&(1<<EEWE)); //pastikan penulisan EEPROM sedang tidak berjalan
EEAR=uiAddress; //Isi Address Register
EECR|=(1<<EERE); //Mulai baca dengan SET EERE
return EEDR;
}
void EEPROM_write(unsigned int uiAddress,unsigned char ucData){
while(EECR&(1<<EEWE)); //pastikan penulisan EEPROM sedang tidak berjalan
EEAR=uiAddress; //Isi Address Register
EEDR=ucData; //Isi Data Register
EECR|=(1<<EEMWE); //Aktifkan EEMWE
EECR|=(1<<EEWE); //Mulai tulis dengan SET EEWE
}
Selanjutnya tuliskan listing berikut pada main program
Int main (void){
EEPROM_write(0,0×55); // Tulis data 0x55 ke alamat 0
EEPROM_read(0); //Baca alamat 0
PORTB=EEDR; //Tampilkan EEDR ke PORTB
while(1);
}
Data 0x55 yang ditulis di alamat 0 EEPROM akan terbaca dan ditampilkan di PORTB
Contoh di atas adalah proses penulisan dan pembacaan data ke EEPROM secara single byte. Pada aplikasinya seringkali dibutuhkan penulisan dan pembacaan data secara berulang-ulang. Untuk itu dapat digunakan listing program berikut pada bagian main program.
int main(void)
{
unsigned char data_port;
DDRB=0xFF;
DDRC=0x00;
int tabel_memory [5]={0,1,2,3,4};
for (int i=0;i<5;i++){
EEPROM_write(i,tabel_memory[i]);
}
for (int i=0;i<5;i++){
EEPROM_read(i);
PORTB=EEDR;
_delay_ms(1000);
}
while(1);
Di sini data yang dituliskan ke EEPROM diambil dari sebuah array berisi 5 byte dan diisikan ke EERPOM pada alamat 0 hingga 0x4. Kemudian data tersebut dibaca kembali dan ditampilkan di PortB setiap detik sehingga kita dapat melihat pembacaan data tersebut melalui LED Logic Tester yang terhubung di Port B.
Modul Pendukung
- DU ISP V5.0 Atmel USB Downloader downloader versi lama
- DST Universal Downloader yang merupakan downloader terbaru yang juga dapat digunakan sebagai downloader ESP8266 dan arduino
- ST-8535 Sistem Minimum ATMega8535
Software Pendukung
Software Flowchart IDE Delta Robotic Studio
DELTA ELECTRONIC
Paulus Andi Nalwan, ST
DST Universal Downloader