|
Mengenal dan memahami
prinsip dasar Mikrokontroler AVR ATMEGA8535 untuk simulasi dan pemodelan system
aplikasi.
10.2 Dasar Teori
ATmega8535
Mikrokontroller AVR memiliki
arsitektur RISC 8 Bit, sehingga semua instruksi dikemas dalam kode 16-bit
(16-bits word) dan sebagian besar instruksi dieksekusi dalam satu siklus
instruksi clock. Dan ini sangat membedakan sekali dengan instruksi MCS-51
(Berarsitektur CISC) yang membutuhkan siklus 12 clock. RISC adalah Reduced
Instruction Set Computing sedangkan CISC adalah Complex Instruction Set
Computing.
AVR dikelompokkan kedalam 4 kelas,
yaitu ATtiny, keluarga AT90Sxx, keluarga ATMega, dan keluarga AT86RFxx.
Dari kesemua kelas yang membedakan satu sama lain adalah ukuran onboard
memori, on-board peripheral dan fungsinya. Dari segi arsitektur dan
instruksi yang digunakan mereka bisa dikatakan hampir sama.
Fitur ATMega8535
·
Sistem processor 8 bit
berbasis RISC dengan kecepatan maksimal 16 MHz.
·
Ukuran memory flash
8KB, SRAM sebesar 512 byte, EEPROM sebesar 512 byte.
·
ADC internal
dengan resolusi 10 bit sebanyak 8 channel
·
Port komunikasi serial
USART dengan kecepatan maksimal 2.5 Mbps
·
Mode Sleep untuk
penghematan penggunaan daya listrik
·
VCC merupakan Pin yang
berfungsi sebagai pin masukan catudaya
·
GND merupakan Pin Ground
·
Port A (PA0...PA7)
merupakan pin I/O dan pin masukan ADC
·
Port B (PB0...PB7)
merupakan pin I/O dan pin yang mempunyai fungsi khusus yaitu Timer/Counter,
komparator Analog dan SPI
·
Port C (PC0...PC7)
merupakan port I/O dan pin yang mempunyai fungsi khusus, yaitu komparator
analog dan Timer Oscillator
·
Port D (PD0...PD1)
merupakan port I/O dan pin fungsi khusus yaitu komparator analog dan interrupt
eksternal serta komunikasi serial
·
RESET merupakan pin
yang digunakan untuk mereset mikrokontroler
·
XTAL1 dan XTAL2
merupakan pin masukan clock eksternal
·
AVCC merupakan pin
masukan untuk tegangan ADC
·
AREF merupakan pin
masukan tegangan referensi untuk ADC
Arsitektur ATMega8535
·
Saluran IO sebanyak 32
buah, yaitu Port A, Port B, Port C dan Port D
·
ADC 10 bit sebanyak 8
Channel
·
Tiga buah timer /
counter
·
32 register
·
Watchdog Timer dengan oscilator internal
·
SRAM sebanyak 512 byte
·
Memori Flash sebesar 8
kb
·
Sumber Interrupt
internal dan eksternal
·
Port SPI (Serial
Pheriperal Interface)
·
EEPROM on board
sebanyak 512 byte
·
Komparator analog
·
Port USART (Universal
Shynchronous Ashynchronous Receiver Transmitter)
AVR menjalankan sebuah instruksi
tunggal dalam satu siklus dan memiliki struktur I/O yang cukup lengkap sehingga
penggunaan komponen eksternal dapat dikurangi. Mikrokontroler AVR didesain
menggunakan arsitektur Harvard, di mana ruang dan jalur bus bagi memori
program dipisahkan dengan memori data. Memori program diakses dengan single-level
pipelining, di mana ketika sebuah instruksi dijalankan, instruksi lain
berikutnya akan di-prefetch dari memori program.
Gambar 10-2 Blok Diagram Internal ATMega8535 |
Deskripsi masing-masing
port
·
Port A (PA7.. PA0) merupakan port yang digunakan sebagai
input ADC (Analog to Digital Converter). jika ADC tidak digunakan maka port A
merupakan 8-bit port I/O dua arah. Pada PortA terdapat internal Pull-up
resistor. Ketika pin di portA disetting low “0” maka arus akan mengalir jika
resistor pull-up internal diaktifkan.
·
Port B (PB7..PB0) merupakan 8-bit port I/O dua arah. Pada
PortB terdapat internal Pull-up resistor. Ketika pin di portB disetting low “0”
maka arus akan mengalir jika resistor pull-up internal diaktifkan.
·
Port C (PC7..PC0) merupakan 8-bit port I/O dua arah. Pada
PortC terdapat internal Pull-up resistor. Ketika pin di portC disetting low “0”
maka arus akan mengalir jika resistor pull-up internal diaktifkan.
·
Port D (PD7..PD0) merupakan 8-bit port I/O dua arah. Pada
PortD terdapat internal Pull-up resistor. Ketika pin di portD disetting low “0”
maka arus akan mengalir jika resistor pull-up internal diaktifkan.
RESET merupakan pin jika
diberikan inputan low “0” maka program yang telah dibuat akan kembali dari
awal.
a.
PORTA
Sebagai fungsi
tambahan:
PA.0 ADC0 ( input ADC channel 0 )
PA.1 ADC1 ( input ADC channel 1 )
PA.2 ADC2 ( input ADC channel 2 )
PA.3 ADC3 ( input ADC channel 3 )
PA.4 ADC4 ( input ADC channel 4 )
PA.5 ADC5 ( input ADC channel 5 )
PA.6 ADC6 ( input ADC channel 6 )
PA.7 ADC7 ( input ADC channel 7 )
PA.1 ADC1 ( input ADC channel 1 )
PA.2 ADC2 ( input ADC channel 2 )
PA.3 ADC3 ( input ADC channel 3 )
PA.4 ADC4 ( input ADC channel 4 )
PA.5 ADC5 ( input ADC channel 5 )
PA.6 ADC6 ( input ADC channel 6 )
PA.7 ADC7 ( input ADC channel 7 )
Fungsi khusus PORTA
Pada seri AVR
ATMEGA8535 telah dilengkapi 8 saluran ADC internal dengan fidelitas 10 bit.
Dalam mode operasinya, ADC dapat dikonfigurasi baik secara single ended input maupun
differrential input. Selain itu, ADC
ATMEGA 8535 memiliki konfigurasi pewaktuan, tegangan referensi, mode operasi,
dan kemampuan filter derau yang sangat dleksibel, sehingga mudah disesuaikan
dengan kebutuhan ADC itu sendiri.
b. PORTB
Sebagai fungsi tambahan:
Sebagai fungsi tambahan:
PB.0 T0 (Timer/Counter0 External Counter Input)
XCK (USART
External Clock Input/Output)
PB.1 T1 (Timer/Counter1 External Counter Input)
PB.1 T1 (Timer/Counter1 External Counter Input)
PB.2 AIN0 (Analog Comparator Positive Input)
INT2 (External
Interrupt 2 Input)
PB.3 AIN1 (Analog Comparator Negative Input)
PB.3 AIN1 (Analog Comparator Negative Input)
OC0
(Timer/Counter0 Output Compare Match Output)
PB.4 SS (SPI Slave Select Input)
PB.5 MOSI (SPI Bus Master Output/Slave Input)
PB.6 MISO (SPI Bus Master Input/Slave Output)
PB.7 SCK (SPI Bus Serial Clock)
PB.4 SS (SPI Slave Select Input)
PB.5 MOSI (SPI Bus Master Output/Slave Input)
PB.6 MISO (SPI Bus Master Input/Slave Output)
PB.7 SCK (SPI Bus Serial Clock)
Fungsi
khusus PORT B
1. MOSI, MISO, SCK berguna sebagai inputan
downloader ISP.
2. T0/T1 sebagai inputan timer atau counter
external.
3. AIN0 dan AIN1 sebagai inputan komparator,
AIN0 sebagai inputan positif (+) sedangkan
AIN1 sebagai inputan (-).
c. PORTC
Sebagai fungsi tambahan:
Sebagai fungsi tambahan:
PC.0 SCL (Two-wire Serial Bus Clock Line)
PC.1 SDA (Two-wire Serial Bus Data Input/Output Line)
PC.2 TCK (JTAG Test Clock)
PC.3 TMS (JTAG Test Mode Select)
PC.4 TDO (JTAG Test Data Out)
PC.5 TDI (JTAG Test Data In)
PC.6 TOSC1 (Timer Oscillator Pin 1)
PC.7 TOSC2 (Timer Oscillator Pin 2)
PC.1 SDA (Two-wire Serial Bus Data Input/Output Line)
PC.2 TCK (JTAG Test Clock)
PC.3 TMS (JTAG Test Mode Select)
PC.4 TDO (JTAG Test Data Out)
PC.5 TDI (JTAG Test Data In)
PC.6 TOSC1 (Timer Oscillator Pin 1)
PC.7 TOSC2 (Timer Oscillator Pin 2)
Fungsi Khusus PORTC
1. SCL dan SDA merupakan pin yang
dapat berfungsi sebagai mengatur interface serial 2 jalur.
2. TCK
merupakan pin yang dapat berfungsi sebagai operasi sinkronisasi dari JTAG ke
TCK. Jika pin ini digunakan seperti
fungsi periferal tersebut maka pin ini tidak dapat berfungsi sebagai I/O.
3. TMS
merupakan pin yang dapat berfungsi sebagai pengontrol navigasi mesin TAP. Jika
pin ini digunakan seperti fungsi periferal tersebut maka pin ini tidak dapat
berfungsi sebagai I/O.
4. TD0
merupakan pin yang dapat berfungsi sebagai output data serial dari data
register. Jika pin ini digunakan seperti fungsi periferal tersebut maka pin ini
tidak dapat berfungsi sebagai I/O.
5. TD1
merupakan pin yang dapat berfungsi sebagai input data serial ke register atau
data register. Jika pin ini digunakan seperti fungsi periferal tersebut maka
pin ini tidak dapat berfungsi sebagai I/O.
6. TOSC1 dan
TOSC2 jika disambungkan dengan kristal dan bit ASR serta bit ASSR diset “1”
(high) untuk mengaktifkan asyncronous clocking dari Timer/Counter2 maka pin ini
dapat digunakan sebagai inputan penguat amplifier osilator. Dalam keadaan ini
pin tidak dapat berfungsi sebagai I/O.
d. PORTD
Sebagai fungsi tambahan:
PD.0 RXD (USART Input Pin)
PD.1 TXD (USART Output Pin)
PD.2 INT0 (External Interrupt 0 Input)
PD.3 INT1 (External Interrupt 1 Input)
PD.4 OC1B (Timer/Counter1 Output Compare B Match Output)
PD.5 OC1A (Timer/Counter1 Output Compare A Match Output)
PD.6 ICP1 (Timer/Counter1 Input Capture Pin)
PD.7 OC2 (Timer/Counter2 Output Compare Match Output)
PD.1 TXD (USART Output Pin)
PD.2 INT0 (External Interrupt 0 Input)
PD.3 INT1 (External Interrupt 1 Input)
PD.4 OC1B (Timer/Counter1 Output Compare B Match Output)
PD.5 OC1A (Timer/Counter1 Output Compare A Match Output)
PD.6 ICP1 (Timer/Counter1 Input Capture Pin)
PD.7 OC2 (Timer/Counter2 Output Compare Match Output)
Fungsi Khusus PORTD
1.
RXD dan TXD merupakan pin yang digunakan untuk komnikasi
serial.
2.
INT0 dan INT1 merupakan pin yang digunakan sebagai inputan
interupsi eksternal 0 dan inputan interupsi eksternal 1.
3. OC1A dan
OC1B merupakan output untuk PWM mode fungsi timer dan OC1A juga berfungsi
sebagai output eksternal dari pembanding timer/counter A serta OC1B juga
berfungsi sebagai output eksternal dari pembanding timer/counter B.
4. ICP1
merupakan pin yang dapat berfungsi sebagai penampung input timer/ counter 1.
5. OC2
merupakan pin yang dapat berfungsi sebagai output untuk PWM mode fungsi timer
dan OC2 juga berfungsi sebagai output eksternal dari pembanding timer/counter.
Peta Memory ATMega8535
ATMega8535 memiliki ruang pengalamatan memori data dan memori program
yang terpisah. Memori data terbagi menjadi 3 bagian yaitu : 32 buah
register umum, 64 buah register I/O, dan 512 byte SRAM internal.
Register untuk keperluan umum menempati space data pada alamat terbawah,
yaitu $00 sampai $1F. Register khusus untuk menangani I/O dan kontrol
mikrokontroler menempati 64 alamat berikutnya, yaitu mulai dari $20 sampai
$5F. Register tersebut merupakan register yang khusus digunakan untuk
mengatur fungsi terhadap berbagai peripheral mikrokontroler, seperti kontrol
register, timer/counter, fungsi fungsi I/O, dan sebagainya. Alamat memori
berikutnya digunakan untuk SRAM 512 byte, yaitu pada lokasi $60 sampai dengan
$25F
Register khusus alamat
memori secara lengkap dapat dilihat pada tabel dibawah .
Gambar 10-3 Memori Data ATMega8535
Memori program yang
terletak pada Flash Perom tersusun dalam word atau 2 byte karena setiap
instruksi memiliki lebar 16-bit atau 32bit. AVR ATMega8535 memiliki 4KByte x 16
Bit Flash Perom dengan alamat mulai dari $000 sampai $FFF. AVR tersebut
memiliki 12 bit Program Counter (PC) sehingga mampu mengalamati isi Flash
Gambar 10-4 Memori Program ATMega8535
Selain
itu AVR ATmega8535 juga memilki memori data berupa EEPROM 8-bit sebanyak 512
byte. Alamat EEPROM dimulai dari $000 sampai $1FF.
Status Register
Status
register adalah register berisi status yang dihasilkan pada setiap operasi yang
dilakukan ketika suatu instruksi dieksekusi. SREG merupakan bagian dari inti
CPU mikrokontroler.
|
Gambar 10-5 Status Register
ATMega8535
·
Bit7 --> I (Global Interrupt
Enable), Bit harus di Set untuk mengenable semua jenis interupsi.
·
Bit6 --> T (Bit Copy Storage),
Instruksi BLD dan BST menggunakan bit T sebagai sumber atau tujuan dalam
operasi bit. Suatu bit dalam sebuah register GPR dapat disalin ke bit T menggunakan
instruksi BST, dan sebaliknya bit T dapat disalin kembali kesuatu bit dalam
register GPR dengan menggunakan instruksi BLD.
·
Bi5 --> H (Half Cary Flag)
·
Bit4 --> S (Sign Bit) merupakan
hasil operasi EOR antara flag -N (negatif) dan flag V (komplemen dua overflow).
·
Bit3 --> V (Two's Component
Overflow Flag) Bit ini berfungsi untuk mendukung operasi matematis.
·
Bit2 --> N (Negative Flag) Flag N
akan menjadi Set, jika suatu operasi matematis menghasilkan bilangan negatif.
·
Bit1 --> Z (Zero Flag) Bit ini
akan menjadi Set apabila hasil operasi matematis menghasilkan bilangan 0.
·
Bit0 --> C (Cary Flag) Bit ini
akan menjadi set apabila suatu operasi menghasilkan carry.
Pemrograman
AVR
Mikrokontroler jenis AVR
dapat diprogram menggunakan bahasa pemrograman C, visual basic, Assembler,dll.
Untuk setiap bahasa pemrograman tersebut digunakan beberapa software yang
berbeda. Seperti mikrokontroler jenis MCS dimana bahasa pemrograman assembler
digunakan software Topview Simulator, untuk mikrokontroler jenis AVR bahasa
pemrograman assembler digunakan software AVR Studio 4 sedangkan jika
menggunakan bahasa pemrograman C digunakan CVAVR
Pengarah
Assembler
Pengarah
assembler berguna untuk mengubah penunjuk kode assembly. Berikut adalah daftar
beberapa sintaks pengarah assembler yang terdapat pada ATMega8535.
·
.cseg (code
segment) pengarah ini berguna sebagai penunjuk bahwa kode atau ekspresi
dibawahnya diletakkan pada memori program pengarah ini biasanya diletakkan
setelah pengarah .deseg
·
.db (data byte)
pengarah ini memungkinkan kita dapat meletakkan konstanta seperti serial
number, dan lookup table di memory program pada alamat tertentu.
·
.dw (data
word) pengarah ini seperti data byte, tetapi dalam ukuran word.
·
.org digunakan
untuk mengeset program counter pada alamat tertentu
·
.byte digunakan
untuk inisialisasi besar byte yang digunakan pada SRAM untuk label tertentu
·
.dseg (data segment) pengarah
ini berguna sebagai penunjuk bahwa kode dibawahnya berfungsi untuk melakukan
seting SRAM
·
.def (define) pengarah
ini memungkinkan suatu register dapat didefinisikan.
·
.equ berguna untuk
memberi nama suatu konstanta yang tidak dapat berubah.
·
.set sama seperti .equ
tetapi konstantanya dapat diubah.
·
.endm (end macro)
untuk mengakhiri macro.
·
.include untuk
mengincludekan sebuah file kedalam program agar program lebih cepat dimengerti
atau memisahkan kedo dalam dua file terpisah.
·
.device sebagai
penunjuk jenis AVR yang digunakan.
·
.exit sebagai
penunjuk agar berhenti melakukan assembly pada file saat ini.
·
.list berguna
membangkitkan file list.
·
.listmac berguna agar
penambahan macro ditampilkan pada file list yang dibangkitkan.
·
.nolist berguna agar
suatu runtun instruksi tidak dimasukkan dalam file list yang dibangkitkan.
Wiring Downloader
Untuk
melakukan penyimpanan program Hex atau Cof yang merupakan hasil build project CVAVR, pin yang digunakan
pada modul AVR_8535 adalah J10 atau ISP.
Gambar 7-8 Jalur DB25 dengan
pin ISP/J10
Gambar 7-9 Penggunaan Kabel
Pelangi / Line 10