KONFIGURASI PIN AT MEGA 8535
Gambar Deskripsi Pin AT Mega 8535
Deskripsi Mikrokontroller ATmega8535
Ø VCC (power supply)
Ø GND (ground)
Ø
Port A
(PA7..PA0)
Port A berfungsi sebagai input
analog pada A/D Konverter. Port A juga berfungsi sebagai suatu Port I/O
8-bit dua arah, jika A/DKonverter tidak digunakan. Pin - pin Port dapat
menyediakanresistor internal pull-up (yang dipilih untuk masing-masing
bit).Port A output buffer mempunyai karakteristik gerakan simetrisdengan
keduanya sink tinggi dan kemampuan sumber. Ketika pinPA0 ke PA7
digunakan sebagai input dan secara eksternal ditarikrendah, pin –
pin akan memungkinkan arus sumber jika resistor internal pull-up diaktifkan.
Pin Port A adalah tri-stated manakalasuatu kondisi reset menjadi aktif,
sekalipun waktu habis.
Ø Port B (PB7..PB0)
Port B adalah suatu Port
I/O 8-bit dua arah dengan resistor internalpull-up (yang dipilih untuk beberapa
bit). Port B output buffermempunyai karakteristik gerakan simetris
dengan keduanya sinktinggi dan kemampuan sumber. Sebagai input, pin port
B yangsecara eksternal ditarik rendah akan arus sumber jika resistor pullupdiaktifkan.
Pin Port B adalah tri-stated manakala suatu kondisi
reset menjadi aktif, sekalipun waktu habis.
Ø Port C (PC7..PC0)
Port C adalah suatu Port
I/O 8-bit dua arah dengan resistor internalpull-up (yang dipilih untuk beberapa
bit). Port C output buffermempunyai karakteristik gerakan simetris
dengan keduanya sinktinggi dan kemampuan sumber. Sebagai input, pin port
C yangsecara eksternal ditarik rendah akan arus sumber jika resistor pullupdiaktifkan.
Pin Port C adalah tri-stated manakala suatu kondisi
reset menjadi aktif, sekalipun waktu habis.
Ø Port D (PD7..PD0)
Port D adalah suatu Port
I/O 8-bit dua arah dengan resistor internalpull-up (yang dipilih untuk beberapa
bit). Port D output buffermempunyai karakteristik gerakan simetris
dengan keduanya sinktinggi dan kemampuan sumber. Sebagai input, pin port
D yangsecara eksternal ditarik rendah akan arus sumber jika resistor pullupdiaktifkan.
Pin Port D adalah tri-stated manakala suatu kondisi
reset menjadi aktif, sekalipun waktu habis.
Ø
RESET (Reset
input)
Ø
XTAL1 (Input
Oscillator)
Ø XTAL2
(Output Oscillator) AVCC adalah pin penyedia tegangan untuk port A dan
A/D Konverter
Ø AREF adalah pin referensi analog untuk A/D
konverter.
ARSITEKTUR MIKROKONTROLLER AT
MEGA 8535
SISTEM MINIMUM AT MEGA 8535
Gambar : Sistem Minimum
AT Mega 8535
Sistem diatas bekerja sebagai
berikut:
Kapasitor C1 dan Resistor R1
digunakan untuk sistem Reset, saat pertama suplay diberikan ke mikrokontroler
maka kaki 9 akan berlogika 1, selama 2 siklus mesin. Setelah itu pin 9 akan
berlogika 0 kembali. Proses seperti ini bisa terjadi berdasarkan proses
pengisian dan pengosongan kapasitor.
Kapasitor C2 dan C3, dipasang
bersamaan dengan keramik resonator (x-tal) untuk menghasilkan Clock internal.
Nilai dari clok ini tergantung dari keramik resonator (x-tal) yang diberikan
SISTEM CLOCK
Mikrokontroler, mempunyai sistem
pewaktuan CPU, 12 siklus clock. Artinya setiap 12 siklus yang dihasilkan oleh
ceramic resonator maka akan menghasilkan satu siklus mesin. Nilai ini yang akan
menjadi acuan waktu operasi CPU. Untuk mendesain sistem mikrokontroler kita
memerlukan sistem clock, sistem ini bisa di bangun dari clock eksternal maupun
clock internal. Untuk clock internal, kita tinggal memasang komponen seperti di
bawah ini:
Gambar :
Sistem Clock
Organisasi
memori AVR ATMega8535
AVR ATMega8535 memiliki ruang
pengalamatan memori data dan memori program yang terpisah. Sebagai tambahan,
ATmega8535memiliki fitur suatu EEPROM Memori untuk penyimpanan data. Semuatiga
ruang memori adalah reguler dan linier.
Memori Data
Memori data terbagi menjadi 3
bagian, yaitu 32 register umum,64 buah register I/O,dan 512 byte SRAM
Internal.Register keperluan umum menempati space data pada alamatterbawah,
yaitu $00 sampai $1F. Sementara itu, register khusus unutk
menangani I/O dan kontrol terhadap mikrokontroler
menempati 64alamat berikutnya, yaitu mulai dari $20 hingga $5F. Register
tersebutmerupakan register yang khusus digunakan untuk mengatur fungsiterhadap
berbagai peripheral mikrokontroler, seperti kontrol register,timer/counter,
fungsi – fungsi I/O, dan sebagainya. Register khususalamat memori secara
lengkap dapat dilihat pada Tabel 2.2. Alamatmemori berikurnya digunakan untuk
SRAM 512 byte, yaitu pada lokasi$60 sampai dengan $25F. Konfigurasi memori data
ditunjukkan pada
gambar di bawah ini.
Gambar : Konfigurasi Data AVR
AT Mega 8535
Memori
Program
ATmega8535 berisi 8K bytes
On-Chip di dalam sistem Memoriflash Reprogrammable untuk penyimpanan program.
Karena semuaAVR instruksi adalah 16 atau 32 bits lebar, Flash adalah berbentuk
4K x16. Untuk keamanan perangkat lunak, Flash Ruang program memori adalah
dibagi menjadi dua bagian, bagian boot program dan bagian aplikasi program
dengan alamat mulai dari $000 sampai $FFF.Flash Memori mempunyai suatu daya
tahan sedikitnya 10,000write/erase Cycles. ATmega8535 Program Counter (PC)
adalah 12 bitlebar, alamat ini 4K lokasi program memori.
Gambar :
Memori Program AT Mega 8535
Port
Sebagai Input / Output Digital
ATmega8535 mempunyai empat buah port yang bernama PortA,
PortB, PortC, dan PortD. Keempat port tersebut merupakan jalur bi-directional
dengan pilihan internal pull-up. Tiap port mempunyai tiga buah register bit,
yaitu DDxn, PORTxn, dan PINxn. Huruf ‘x’ mewakili nama huruf dari port sedangkan
huruf ‘n’ mewakili nomor bit. Bit DDxn terdapat pada I/O address DDRx, bit
PORTxn terdapat pada I/O address PORTx, dan bit PINxn terdapat pada I/O address
PINx. Bit DDxn dalam regiter DDRx (Data Direction Register) menentukan arah
pin. Bila DDxn diset 1 maka Px berfungsi sebagai pin output. Bila DDxn diset 0
maka Px berfungsi sebagai pin input. Bila PORTxn diset 1 pada saat pin
terkonfigurasi
sebagai pin input, maka resistor pull-up akan
diaktifkan. Untuk mematikan resistor pull-up, PORTxn harus diset 0 atau pin
dikonfigurasi sebagai pin output. Pin port adalah tri-state setelah kondisi
reset. Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin output maka
pin port akan berlogika 1. Dan bila PORTxn diset 0 pada saat pin terkonfigurasi
sebagai pin output maka pin port akan berlogika 0. Saat mengubah kondisi port
dari kondisi tri-state (DDxn=0, PORTxn=0) ke kondisi output high (DDxn=1,
PORTxn=1) maka harus ada kondisi peralihan apakah itu kondisi pull-up
enabled (DDxn=0, PORTxn=1)atau kondisi output low (DDxn=1,
PORTxn=0). Biasanya, kondisi pull-up enabled dapat diterima sepenuhnya, selama
lingkungan impedansi tinggi tidak memperhatikan perbedaan antara sebuah strong
high driver dengan sebuah pull-up. Jika ini bukan suatu masalah, maka bit
PUD pada register SFIOR dapat diset 1 untuk mematikan semua pull-up dalam
semua port. Peralihan dari kondisi input dengan pull-up ke kondisi output
low juga menimbulkan masalah yang sama. Maka harus menggunakan kondisi
tri-state (DDxn=0, PORTxn=0) atau kondisi output high (DDxn=1, PORTxn=0)
sebagai kondisi transisi. Lebih detil mengenai port ini dapat dilihat pada
manual datasheet dari IC ATmega8535.
Konfigurasi Pin Port
Bit 2 – PUD :
Pull-up Disable
Bila bit diset bernilai 1 maka pull-up pada port I/O akan
dimatikan walaupun register DDxn dan PORTxn dikonfigurasikan untuk menyalakan
pull-up (DDxn=0, PORTxn=1).
AKSES PORT
Gambar : Menyalakan Lampu di PORT C
Prinsip kerja Hardware, yaitu
saat kita memberikan logika 0 pada port C maka kita akan mendapatkan led
menyala. Hal ini dikarenakan terjadi perbedaan tegangan pada kaki anoda dan
katoda, saat kita memberikan logika 1, maka Led akan padam karena disana kita
menggunakan conmmon anoda yang terhubung dengan VCC.
Contoh Programnya:
1.
Program Menghidupkan LED di PORTC
//Prog1: Menghidupkan LED di
PortC
#include
void main()
{
DDRC=0xff; // inisialisasi PORTC
sebagi keluaran
PORTC=0xF0; // keluarkan data F0
di PORT C (cat:F0=11110000)
}
2.
Program Menghidupkan LED
//Prog2: Menghidupkan LED1,3,5,7
#include
void main()
{
DDRC=0xff; // inisialisasi PORTC
sebagi keluaran
PORTC=0xAA; // keluarkan data
AA(hex) ke PORTC cat: AA=10101010
}
3. Program LED Berkedip (memakai
delay)
//Prog3:
LED berkedip pada Port C
#include
#include
void
main()
{
DDRC=0xff; // inisialisasi PORTC sebagi keluaran
while(1) // perulangan
yang tidak pernah terpenuhi
{
PORTC=0x00;
delay_ms(1000);
PORTC=0xff;
delay_ms(1000);
}
}
4. Program LED Berjalan
//prog4:
LED berjalan
#include
#include
void
main()
{
char
urutan[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
char i;
DDRC=0xff;
PORTC=0Xff;
while(1)
{
for(i=0;i<8;i++)
{
PORTC=urutan[i];
delay_ms(500);
}
}
}
Penjelasan :
ü
#include
: Inisialisasi Mikrokontroller yang dipakai
ü
DDRn
: Menyiapkan PORTn sebagai Keluaran (0xff) jika masukan (0x00)
ü
PORTn
: Keluarkan data di PORTn
ü
n : mewakili A,B,C,dan D (PORT)
Karena common Annoda maka pada
saat logika “0”, lampu LED akan menyala.
Untuk penggunaan biner, maka penulisannya adalah 0b10101010. Untuk penggunaan
Hexa, maka penulisannya adalah 0Xaa
PENEKANAN TOMBOL
Gambar : Penekanan Tombol
Port-port
mikrokontroler dilengkapi pull up internal, sehingga kondisi default-nya adalah
high. Untuk menjadikan Port ini sebagai input, kita tinggal memberikan logika
high atau membiarkannya dalam kondisi default. Jika kita menginginkan sebuah
masukan terbaca kita sebaiknya menggunakan masukan berupa sinyal Low. Prinsip kerja Hardware ,saat kita
menekan tombol SW maka signal reendah akan dikrim ke PORTB pada mikrokontroler,
Dengan demikian port ini akan mempunyai logika sesuai dengan penekanan tombol .
Kemudian akan memicu PORTC unruk mengeluarkan data.( Tergantung Programnya
bagaimana)
Contoh Programnya:
1. Penekanan Tombol di PORTB
#include
void
main(void)
{
DDRB=0x00; // PORTB
diinisialisasikan sebagai masukan
DDRC=PORTB=PORTC=0xff;
while(1)
{
if (PINB.0==0)
{PORTC=0x5f;}
else if
(PINB.1==0) {PORTC=0xAf;}
else if
(PINB.2==0) {PORTC=0x9f;}
else if
(PINB.3==0) {PORTC=0x6f;}
else
(PORTC=0x0f);
}
}
Penjelasan:
ü
DDRC=PORTB=PORTC=0xff; : PORTC sebagai keluaran. Data di PORTC dan
PORTB adalah tinggi semua ( 0xff ). Biner: (11111111).
ü
PINB.0 :
Kita bisa mengakses langsung ke PIN PORTB nomor 0 ( catatan: PIN dan PORT berbeda. PIN untuk
satu saja kalau PORT untuk keseluruhan PIN. Satu PORT ada 8 PIN )
ü
While (1) :
Dipakai karena agar program mengulang kembali instruksi yang berada di
bawahnya. Ciri perulangan while adalah dia akan terus melakukan perulangan karena
tidaka akan terpenuhi.
ü
Inti
penekanan Tombol adalah Membuat sebuah
PORT menjadi masukan. Dan aksinya tentunya akan dilakukan di PORT yang diset
sebagai keluaran.
INTERUPSI
Interrupt
adalah suatu kejadian atau peristiwa yang menyebabkan mikrokontroler berhenti
sejenak untuk melayani interrupt tersebut.
Yang harus diperhatikan
untuk menguanakan interupsi adalah, kita harus tau sumber-sumber interupsi,
vektor layanan interupsi dan yang terpenting rutin lyanan interupsi, yaitu
subrutin yang akan dikerjakan bila terjadi interupsi .
Interrupt Service
Routine.
Analoginya
adalah sebagai berikut, seseorang sedang mengetik laporan, mendadak telephone
berdering dan menginterrupsi orang tersebut sehingga menghentikan pekerjaan
mengetik dan mengangkat telephone. Setelah pembicaraan telephone yang dalam hal
ini adalah merupakan analogi dari Interrupt Service Routine selesai maka orang
tersebut kembali meneruskan pekerjaanya mengetik. Demikian pula pada sistem
mikrokontroler yang sedang menjalankan programnya, saat terjadi interrupt,
program akan berhenti sesaat, melayani interrupt tersebut dengan menjalankan
program yang berada pada alamat yang ditunjuk oleh vektor dari interrupt yang
terjadi hingga selesai dan kembali meneruskan program yang terhenti oleh interrupt
tadi. Seperti yang terlihat Gambar di bawah, sebuah program yang seharusnya
berjalan terus lurus, tiba-tiba terjadi interrupt dan harus melayani interrupt
tersebut terlebih dahulu hingga selesai sebelum ia kembali meneruskan
pekerjaannya.
Pada AVR terdapat 3 pin
interupsi eksternal, yaitu INT0,INT1,dan INT2. Interupsi eksternal dapat
dibangkitkan apabila ada perubahan logika atau logika 0 pada pin interupsi
Pengaturan kondisi keadaan yang menyebabkan terjadinya interupsi eksternal
diatur oleh register MCUCR ( MCU Control Register), yang terlihat seperti
gambar ini:
Bit penyusunnya:
·
Bit ISC11 dan ISC10
bersama-sama menentukan kodisi yang dapat menyebakan interupsi eksternal pada
pin INT1. keadaan selengkapnya terlihat pada table berikut :
·
Bit ISC01 dan ISC00
bersama-sama menentukan kodisi yang dapat menyebakan interupsi eksternal pada
pin INT0. keadaan selengkapnya terlihat pada table berikut :
Pemilihan pengaktifan interupsi
eksternal diatur oleh register GICR ( General Interrupt Control Register ) yang
terlihat pada gambar berikut :
Bit penyusunnya dapat dijelaskan
sebagai berikut:
v Bit INT1 adalah bit untuk mengaktifkan interupsi eksternal
1. Apabila bit tersebut diberi logika 1 dan bit I pada SREG (status register)
juga satu , maka interupsi eksternal 1 akan aktif.
v Bit INT0 adalah bit untuk mengaktifkan interupsi eksternal
0. Apabila bit tersebut diberi logika 1 dan bit I pada SREG (status register)
juga satu , maka interupsi eksternal 0 akan aktif.
v Bit INT2 adalah bit untuk mengaktifkan interupsi eksternal
2. Apabila bit tersebut diberi logika 1 dan bit I pada SREG (status register)
juga satu , maka interupsi eksternal 2 akan aktif.
Contoh Programnya:
//INTERUPSI EKSTERNAL
0 DAN EKSTERNAL 1
#include
void main()
{
DDRC=0xff;
PORTC=0xff;
DDRD=0xff;
PORTD=0xff;
GICR=0b11000000;
#asm("sei")
while(1)
{;}
}
interrupt [2] void interupsi_ext0(void)
{
PORTC=0xF0;
}
interrupt [3] void interupsi_ext1(void)
{
PORTC=0x0F;
}
Penjelasan :
ü Angka 2 dan 3 adalah nomor vector intrupsi dapat dilihat
pada table di atas.
TIMER/COUNTER
Timer/Counter
pada AT Mega 8535 terdiri dari 3 buah. Yaitu Timer/Counter0 ( 8bit ),
Timer/Counter1 ( 16 bit ), dan Timer/Counter2 ( 8 Bit ).
Ø Timer/Counter0
Pengaturan Timer/Counter0
diatur oleh register TCCR0 yang dapat dilihat pada gambar di bawah ini:
Bit 7 – FOC0: Force Output
Compare
Bit 6,3-WGM01:WGM00 : Waveform
generation Unit
Bit
mengontrol kenaikan dari konter, sumber nilai maksimum counter, dan tipe dari
jenis timer/counter yang dihasilkan, yaitu mode normal,clear timer,mode compare
match, dan dua tipe dari PWM. Berikut table setingnya:
Bit 5,4 – COM1:COM00 : Compare
Match Output Mode
Bit
tersebut mengontrol pin OC0 (Output Compare pin). Apabila kedua bit itu 0 atau
clear, maka pin OC0 berfungsi sebagi pin biasa. Namun, bil;a salah satu bit
set, maka fungsi pin tergantung pada setting bit pada WGM00 dan WGM01. Berikut daftar table seting bit pada WGM00
dan WGM01.
Bit 2,1,0 – CS02,CS01,CS00 :
Clock seleck
Ketiga bit tersebut memilih
sumber clok yang akan digunakan oleh Timer/Counter . Berikut Tabelnya:
Ø Timer/Counter1
Timer/Counter1 adalah 16
Bit Timer/Counter yang memungkinkan program pewaktuan lebih akurat .
Pengaturan pada
Timer/Counter1 diatur melalui Resgister TCCR1A
Register COM1A1: 0 dan
COM1B:0 mengontrol kondisi Pin Output Compare (OC1A dan OC1B ). Jika salah satu
atauy kedua bit pada register COM1A:0 ditulis menjadi 1 , maka kaki pin OC1A
tidak berfungsi normal sebagai I/O. begitu juga pada rekaki OC1B. Fungsi pada
pin OC1A dan OC1B tergantung dari seting bit pada register WGM13:0 diset
sebagai mode PWM atau mode non PWM.
Bit 3 FOC1A : Force Output
Compare untuk chanel A
Bit 2 FOC1B : Force Output
Compare untuk chanel B
Bit 1 WGM11:0 : Waveform
generation Mode
Dikombinasikan denagn bit
WGM13:2 yang terdapat pada register TCCR1B, bit tersebut mengontrol urutan pencacah
dari counter, sumber maksimum (TOP) nilai counter, dan tipe gelombang yang
dibangkitkan. Mode yang dapat dilakukan antara lain mode normal, mode clear
timer on compare Match (CTC) dan tiga tipe mode PWM. Setingan mode dapat
dilihat pada table berikut:
Register
TCCR1B digunakan juga untuk mengkonfigurasi/seting Timer/Counter1. Khusunya bit
WGM13,WGM12.
Untuk
penentuan clock bit CS12,CS11,Cs10
Ø Timer/Counter2
Pengaturan
Timer/Counter2 diatur oleh register TCCR2 yang dapat dilihat pada gambar di
bawah ini:
Bit 7 – FOC2: Force Output
Compare
Bit 6,3-WGM021:WGM20 : Waveform
generation Unit
Bit
mengontrol kenaikan dari konter, sumber nilai maksimum counter, dan tipe dari
jenis timer/counter yang dihasilkan, yaitu mode normal,clear timer,mode compare
match, dan dua tipe dari PWM. Berikut table setingnya:
Bit 5,4 – COM1:COM00 : Compare
Match Output Mode
Bit
tersebut mengontrol pin OC0 (Output Compare pin). Apabila kedua bit itu 0 atau
clear, maka pin OC0 berfungsi sebagi pin biasa. Namun, bil;a salah satu bit
set, maka fungsi pin tergantung pada setting bit pada WGM00 dan WGM01. Berikut daftar table seting bit pada WGM00
dan WGM01.
Bit 2,1,0 – CS22,CS21,CS20 :
Clock seleck
Ketiga
bit tersebut memilih sumber clok yang akan digunakan oleh Timer/Counter .
Berikut Tabelnya:
Register TIMSK dan TIFR
Bit0 – Timer/Counter0
Overflow Interrupt Enable
jika bit tersebut diberi logika
satu dan I SREG juga set, maka bisa dilakukan enable interupsi overflow
Timer/Counter0
Bit1- Timer/Counter0 Output
Compere Match Interrupt Enable
jika bit tersebut diberi
logika satu dan I SREG juga set, maka bisa dilakukan enable Interupsi Output
Compere Match
Bit2- Timer/Counter1
Overflow Interrupt Enable
jika bit tersebut diberi logika satu dan I SREG juga set, maka
bisa dilakukan enable interupsi overflow Timer/Counter1
Bit3-
Bit0 – Timer/Counter0
Overflow Flag
Bit akan bernilai satu jika
Timer/Counter0 Overflow. Bit dapat dinolkan lagi dengan memberikan logika satu
ke bit Flag ini.
Bit1- Output Comapre Flag 0
Bit
akan berniali satu jika nilai pada Timer/Counter0 sama dengan nilai pada OCR0
–Output Comapre
Contoh program COUNTER:
//COUNTER 0 DITAMPILKAN KE PORTC
#include
void main()
{
PORTC=0xFF;
DDRC=0xFF;
PORTB=0XFF;
DDRB=0;
TCCR0=0b00000110;
TCNT0=0;
while(1)
{PORTC=~TCNT0;}
}
TIMER0
#include
unsigned char led=0xfe;
void main (void)
{
DDRC=0xff; // port C sebagai output
PORTC=led;
TCNT0=0x00; // setting inisial counter0
TCCR0=0x05; // setting skala clock
TIMSK=0x01; // aktifkan interrupt timer0
TIFR=0x00; // hapus bendera interrupt timer0
#asm
("sei");
while(1)
{PORTC=led;}
}
interrupt [TIM0_OVF] void
timer0_overflow(void)
{
TCNT0=0x00; // setting inisial counter0
led<<=1; // geser data led ke kiri 1 kali
led|=1; // led di-OR-kan dengan data 1
if
(led==0xff) {led=0xfe;}
// else {led=0xff;}
PORTC=led;
// keluarkan data led ke port C
}
Tidak ada komentar:
Posting Komentar