Begitu banyak mikroprosesor yang diproduksi oleh berbagai perusahaan, mulai dari merek yang berbeda-beda, hingga tiap tipenyapun berbeda-beda.
Sebelum anda mempelajari dan memahami mikrokontroler AVR ATMEGA8535 ada baiknya terlebih dahulu anda membaca artikel saya tentang Bagaimana Mudah Memahami Mikroprosesor dan Mikrokontroler.
Yang bisa anda dilihat di situs tutorialvalid.com ini.
Barulah anda membaca artikel ini sehingga anda lebih mudah untuk memahaminya.
Ada beberapa perusahaan yang memproduksi mikrokontroler seperti Intel, Motorola, Atmel, Haris, PIC dan mikrokontroler lainnya.
Jadi di antara beberapa perusahaan di atas, perusahaan mana yang memproduksi AVR?
AVR diproduksi oleh ATMEL, dan ATMEGA8535 merupakan mikrokontroler keluarga AVR.
Mikrokontroler AVR(Alf and Vegard's Risc Processor) ini yang diproduksi oleh ATMEL ini menggunakan teknologi arsitektur RISC(Reduced Instruction Set Computer).
RISC ini berarti mikrokontroler AVR ini memiliki set instruksi/perintah program yang lebih sedikit bila dibandingkan dengan mikrokontroler yang menggunakan teknologi arsitektur CISC (Complex Instruction Set Computer).
Jadi mikrokontroler AVR ini memiliki perintah yang lebih sedikit bila dibandingkan dengan mikrokontroler pendahulunya yaitu MCS-51.
Instruksi-instruksi yang terdapat pada arsitektur RISC ini umumnya memerlukan 1 siklus mesin untuk menjalankannya sedangkan instruksi percabangan memerlukan 2 siklus mesin untuk menjalankannya.
Apa yang dimaksud 1 siklus mesin?
Artinya instruksi tersebut dijalankan melalui satu clock (satu instruksi dijalankan dalam 1 clock).
Arsitektur RISC ini dibuat dengan arsitektur Harvard, arsitektur harvar ini membuat instruksi cepat dan handal untuk dijalankan, yaitu dalam 1 siklus mesin atau 2 siklus mesin (tergantung dari perintah yang dijalankannya).
Sedangkan proses downloading programnya ke ATMEGA8535 menjadi lebih mudah dilakukan.
Fitur-fitur atau kelengkapan apa saja yang terdapat pada mikrokontroler ATMEGA8535?
- CPU nya memiliki 32 buah register umum yaitu R0-R31
- Mempunyai watchdog timer dengan oscilator internal untuk menjaga mikrokontroler dari hang (akan mereset mikrokontroler jika hang).
- Memiliki 3 unit Timer/Counter dengan kemampuan perbandingan yaitu pada port D4, Port D5 dan port D7
- Mempunyai I/O sebanyak 32 buah yaitu 8 buah port A, 8 buah port B, 8 buah prot C dan 8 buah port D
- Mempunyai ADC dengan kemampuan 10-bit sebanyak 8 buah yaitu pada port A0-A8
- Memiliki SRAM sebesar 512-byte yang bisa anda lihat nantinya pada peta memory
- Memiliki memori Flash sebesar 8 kbyte
- Memiliki interupt internal dan eksternal yaitu pada port D2 dan port D3 sebagai interupt eksternal
- Memiliki Port interface SPI yaitu pada Port B4-B7
- Memiliki interface komparator analog yaitu pada port B2, B3
- Memiliki EEPROM sebesar 512 byte yang bisa diisi pada saat ia beroperasi
- Memiliki Port USART untuk komunikasi secara serial yaitu pada Pord D0, D1
- Mikrokontroler ini dapat dipasang pada frekuensi kerja maksimal 16 MHz sedangkan untuk ATMEGA8535L maksimal hanya 8 MHz
- Dapat dipasang sumber oscilator frekuensi dari luar (external) maupun oscilator yang terdapat di dalam (internal)
arsitektur-atmega8535 |
Konfigurasi PIN ATMEGA8535
ATMEGA8535 terdiri dari 40 pin dengan fungsi sebagai berikut:
ATMEGA8535 |
Pin
|
Nama Pin
|
Fungsi
|
1
|
Port B0
|
I/O dengan resistor pull-up internal / T0
(Timer/Counter0 External Counter Input)
|
2
|
Port B1
|
I/O dengan resistor pull-up internal / T1
(Timer/Counter1 External Counter Input)
|
3
|
Port B2
|
I/O dengan resistor pull-up internal / AIN0 (Analog
Comparator Positive Input)
|
4
|
Port B3
|
I/O dengan resistor pull-up internal / AIN1 (Analog
Comparator Positive Input)
|
5
|
Port B4
|
I/O dengan resistor pull-up internal
/ SS (Inverting SPI Slave Select Input)
|
6
|
Port B5
|
I/O dengan resistor pull-up internal / MOSI (SPI
Bus Master Output/Slave Input)
|
7
|
Port B6
|
I/O dengan resistor pull-up internal / MISO (SPI Bus
Master Input/Slave Output)
|
8
|
Port B7
|
I/O dengan resistor pull-up internal / SCK (SPI Bus
Serial Clock)
|
9
|
Pin reset berguna untuk mereset mikrokontroler
ATMEGA8535
|
|
10
|
VCC
|
Catu Daya 4.5-5.5 (ATMEGA8535), 2.7-5.5
(ATMEGA8535L)
|
11
|
GND
|
Sebagai Grounding
|
12
|
XTAL2
|
Keluaran dari inverting oscilator amplifier
|
13
|
XTAL1
|
Masukkan ke inverting Oscilator Amplifier dan
masukan ke rangkaian clock internal
|
14
|
Port D0
|
I/O dengan resistor pull-up internal / RXD (UART
Input Line)
|
15
|
Port D1
|
I/O dengan resistor pull-up internal / TXD (UART
Output Line)
|
16
|
Port D2
|
I/O dengan resistor pull-up internal / INT0
(External Interupt 0 Input)
|
17
|
Port D3
|
I/O dengan resistor pull-up internal / INT1
(External Interupt 1 Input)
|
18
|
Port D4
|
I/O dengan resistor pull-up internal / OC1B
(Timer/Counter1 Output Compare B Match Output)
|
19
|
Port D5
|
I/O dengan resistor pull-up internal / OC1A
(Timer/Counter1 Output Compare A Match Output)
|
20
|
Port D6
|
I/O dengan resistor pull-up internal / ICP
(Timer/Counter1 Input Capture Pin)
|
21
|
Port D7
|
I/O dengan resistor pull-up internal / OC2
(Timer/Counter2 Output Compare Match Output)
|
22
|
Port C0
|
I/O dengan resistor pull-up internal
|
23
|
Port C1
|
I/O dengan resistor pull-up internal
|
24
|
Port C2
|
I/O dengan resistor pull-up internal
|
25
|
Port C3
|
I/O dengan resistor pull-up internal
|
26
|
Port C4
|
I/O dengan resistor pull-up internal
|
27
|
Port C5
|
I/O dengan resistor pull-up internal
|
28
|
Port C6
|
I/O dengan resistor pull-up internal / Oscilator
luar untuk Timer/Counter2
|
29
|
Port C7
|
I/O dengan resistor pull-up internal / Oscilator
luar untuk Timer/Counter2
|
30
|
AVCC
|
Catu daya untuk port A dan ADC
|
31
|
GND
|
Grounding
|
32
|
AREF
|
Pin referensi analog untuk ADC
|
33
|
Port A7
|
I/O dengan resistor pull-up internal / ADC7
|
34
|
Port A6
|
I/O dengan resistor pull-up internal / ADC6
|
35
|
Port A5
|
I/O dengan resistor pull-up internal / ADC5
|
36
|
Port A4
|
I/O dengan resistor pull-up internal / ADC4
|
37
|
Port A3
|
I/O dengan resistor pull-up internal / ADC3
|
38
|
Port A2
|
I/O dengan resistor pull-up internal / ADC2
|
39
|
Port A1
|
I/O dengan resistor pull-up internal / ADC1
|
40
|
Port A0
|
I/O dengan resistor pull-up internal / ADC0
|
Peta Memori
Memori pada mikrokontroler ATMEGA8535 terbagi 2 bagian yaitu memori utama dan memori tambahan jumlah.
Memori utama terdiri dari data memori dan program memori sebesar FFFh (4095 byte) (lihat gambar di bawah).
Peta memori atmega8535 |
- Register mulai R0-R31 (sebanyak 32 buah) dengan alamat $0000-$001F
- Register I/O mulai dari alamat $0020-$005F sebanyak (64 buah)
- Internal SRAM sebesar 512 byte mulai dari alamat $0060-$025F
Sedangkan $0260-$FFF berisikan Program memori.
Selain terdapat memori utama, ATMEGA8535 juga memiliki memori tambahan yaitu berupa EEPROM yang besarnya 512 byte.
STACK POINTER
Stack pointer juga merupakan bagian memori dari AVR yang berguna untuk menyimpan data sementara, alamat kembali dari perintah interupsi maupun subrutin serta variabel lokal.
Stack pointer ini terdiri dari 2 buah register yaitu register SPH (Stack pointer High) dan register SPL (Stack Pointer Low).
Maksud dari stack pointer SPH adalah stack byte atas (MSB), sedangkan SPL adalah stack byte bawah (LSB).
Namun Stack ini hanya berlaku untuk AVR yang mempunyai kapasitas SRAM lebih dari 256 byte, jika tidak, maka SPH tidak didefenisikan dan tidak bisa dipakai
Mikrokontroler AVR ATMEGA ini memiliki beberapa register yang memiliki fungsi khusus antara lain:
Bit 7
|
Bit 6
|
Bit 5
|
Bit 4
|
Bit 3
|
Bit 2
|
Bit 1
|
Bit 0
|
Nama
|
Alamat
|
I
|
T
|
H
|
S
|
V
|
N
|
Z
|
C
|
SREG
|
0x3F(0x5F)
|
-
|
-
|
-
|
-
|
-
|
SP9
|
SP8
|
SPH
|
0x3E(0x5E)
|
|
SP7
|
SP6
|
SP5
|
SP4
|
SP3
|
SP2
|
SP1
|
SP0
|
SPL
|
0x3D(0x5D)
|
0CR07
|
0CR06
|
0CR05
|
0CR04
|
0CR03
|
0CR02
|
0CR01
|
0CR00
|
OCR0
|
0x3C(0x5C)
|
INT1
|
INT0
|
INT2
|
-
|
-
|
-
|
IVSEL
|
IVCE
|
GICR
|
0x3B(0x5B)
|
INTF1
|
INTF0
|
INTF2
|
-
|
-
|
-
|
-
|
-
|
GIFR
|
0x3A(0x5A)
|
OCIE2
|
TOIE2
|
TICIE1
|
OCIE1A
|
OCIE1B
|
TOIE1
|
OCIE0
|
TOIE0
|
TIMSK
|
0x39(0x59)
|
OCF2
|
TOV2
|
ICF1
|
OCF1A
|
OCF1B
|
TOV1
|
OCF0
|
TOV0
|
TIFR
|
0x38(0x58)
|
SPMIE
|
RWWSB
|
-
|
RWWSRE
|
BLBSET
|
PGWRT
|
PGERS
|
SPMEN
|
SPMCR
|
0x37(0x57)
|
TWINT
|
TWEA
|
TWSTA
|
TWSTO
|
TWWC
|
TWEN
|
-
|
TWIE
|
TWCR
|
0x36(0x56)
|
SM2
|
SE
|
SM1
|
SM0
|
ISC11
|
ISC10
|
1SC01
|
ISC00
|
MCUCR
|
0x35(0x55)
|
-
|
ICS2
|
-
|
-
|
WDRF
|
BORF
|
EXTRF
|
PORF
|
MCUCSR
|
0x34(0x54)
|
FOC0
|
WGM00
|
COM01
|
COM00
|
WGM01
|
CS02
|
CS01
|
CS00
|
TCCR0
|
0x33(0x53)
|
TCNT07
|
TCNT06
|
TCNT05
|
TCNT04
|
TCNT03
|
TCNT02
|
TCNT01
|
TCNT00
|
TCNT0
|
0x32(0x52)
|
CAL7
|
CAL6
|
CAL5
|
CAL4
|
CAL3
|
CAL2
|
CAL1
|
CAL0
|
OSCCAL
|
0x31(0x51)
|
ADTS2
|
ADTS1
|
ADTS0
|
-
|
ACME
|
PUD
|
PSR2
|
PSR10
|
SFIOR
|
0x30(0x50)
|
COM1A1
|
COM1A0
|
COM1B1
|
COM1B0
|
FOC1A
|
FOC1B
|
WGM11
|
WGM10
|
TCCR1A
|
0x2F(0x4F)
|
ICNC1
|
ICES1
|
-
|
WGM13
|
WGM12A
|
CS12
|
CS11
|
CS10
|
TCCR1B
|
0x2E(0x4E)
|
TCNT1H7
|
TCNT1H6
|
TCNT1H5
|
TCNT1H4
|
TCNT1H3
|
TCNT1H2
|
TCNT1H1
|
TCNT1H0
|
TCNT1H
|
0x2D(0x4D)
|
TCNT1L7
|
TCNT1L6
|
TCNT1L5
|
TCNT1L4
|
TCNT1L3
|
TCNT1L2
|
TCNT1L1
|
TCNT1L0
|
TCNT1L
|
0x2C(0x4C)
|
0CR1AH7
|
0CR1AH6
|
0CR1AH5
|
0CR1AH4
|
0CR1AH3
|
0CR1AH2
|
0CR1AH1
|
0CR1AH0
|
OCR1AH
|
0x2B(0x4B)
|
0CR1AL7
|
0CR1AL6
|
0CR1AL5
|
0CR1AL4
|
0CR1AL3
|
0CR1AL2
|
0CR1AL1
|
0CR1AL0
|
OCR1AL
|
0x2A(0x4A)
|
0CR1BH7
|
0CR1BH6
|
0CR1BH5
|
0CR1BH4
|
0CR1BH3
|
0CR1BH2
|
0CR1BH1
|
0CR1BH0
|
OCR1BH
|
0x29(0x49)
|
0CR1BL7
|
0CR1BL6
|
0CR1BL5
|
0CR1BL4
|
0CR1BL3
|
0CR1BL2
|
0CR1BL1
|
0CR1BL0
|
OCR1BL
|
0x28(0x48)
|
ICR1H7
|
ICR1H6
|
ICR1H5
|
ICR1H4
|
ICR1H3
|
ICR1H2
|
ICR1H1
|
ICR1H0
|
ICR1H
|
0x27(0x47)
|
ICR1L7
|
ICR1L6
|
ICR1L5
|
ICR1L4
|
ICR1L3
|
ICR1L2
|
ICR1L1
|
ICR1L0
|
ICR1L
|
0x26(0x46)
|
FOC2
|
WGM20
|
COM21
|
COM20
|
WGM21
|
CS22
|
CS21
|
CS20
|
TCCR2
|
0x25(0x45)
|
TCNT27
|
TCNT26
|
TCNT25
|
TCNT24
|
TCNT23
|
TCNT22
|
TCNT21
|
TCNT20
|
TCNT2
|
0x24(0x44)
|
OCR27
|
OCR26
|
OCR25
|
OCR24
|
OCR23
|
OCR22
|
OCR21
|
OCR20
|
OCR2
|
0x23(0x43)
|
-
|
-
|
-
|
-
|
AS2
|
TCN2UB
|
OCR2UB
|
TCR2UB
|
ASSR
|
0x22(0x42)
|
-
|
-
|
-
|
WDCE
|
WDE
|
WDP2
|
WDP1
|
WDP0
|
WDTCR
|
0x21(0x41)
|
URSEL
|
-
|
UBRR11
|
UBRR10
|
UBRR9
|
UBRR8
|
UBRRH
|
0x20(0x40)
|
||
URSEL
|
UMSEL
|
UPM1
|
UPM0
|
USBS
|
UCSZ1
|
UCSZ0
|
UCPOL
|
UCSRC
|
|
EEAR8
|
EEARH
|
0x1F(0x3F)
|
|||||||
EEAR7
|
EEAR6
|
EEAR5
|
EEAR4
|
EEAR3
|
EEAR2
|
EEAR1
|
EEAR0
|
EEARL
|
0x1E(0x3E)
|
EEDR7
|
EEDR6
|
EEDR5
|
EEDR4
|
EEDR3
|
EEDR2
|
EEDR1
|
EEDR0
|
EEDR
|
0x1D(0x3D)
|
EERIE
|
EEMWE
|
EEWE
|
EERE
|
EECR
|
0x1C(0x3C)
|
||||
PORTA7
|
PORTA6
|
PORTA5
|
PORTA4
|
PORTA3
|
PORTA2
|
PORTA1
|
PORTA0
|
PORTA
|
0x1B(0x3B)
|
DDRA7
|
DDRA6
|
DDRA5
|
DDRA4
|
DDRA3
|
DDRA2
|
DDRA1
|
DDRA0
|
DDRA
|
0x1A(0x3A)
|
PINA7
|
PINA6
|
PINA5
|
PINA4
|
PINA3
|
PINA2
|
PINA1
|
PINA0
|
PINA
|
0x19(0x39)
|
PORTB7
|
PORTB6
|
PORTB5
|
PORTB4
|
PORTB3
|
PORTB2
|
PORTB1
|
PORTB0
|
PORTB
|
0x18(0x38)
|
DDRB7
|
DDRB6
|
DDRB5
|
DDRB4
|
DDRB3
|
DDRB2
|
DDRB1
|
DDRB0
|
DDRB
|
0x17(0x37)
|
PINB7
|
PINB6
|
PINB5
|
PINB4
|
PINB3
|
PINB2
|
PINB1
|
PINB0
|
PINB
|
0x16(0x36)
|
PORTC7
|
PORTC6
|
PORTC5
|
PORTC4
|
PORTC3
|
PORTC2
|
PORTC1
|
PORTC0
|
PORTC
|
0x15(0x35)
|
DDRC7
|
DDRC6
|
DDRC5
|
DDRC4
|
DDRC3
|
DDRC2
|
DDRC1
|
DDRC0
|
DDRC
|
0x14(0x34)
|
PINC7
|
PINC6
|
PINC5
|
PINC4
|
PINC3
|
PINC2
|
PINC1
|
PINC0
|
PINC
|
0x13(0x33)
|
PORTD7
|
PORTD6
|
PORTD5
|
PORTD4
|
PORTD3
|
PORTD2
|
PORTD1
|
PORTD0
|
PORTD
|
0x12(0x32)
|
DDRD7
|
DDRD6
|
DDRD5
|
DDRD4
|
DDRD3
|
DDRD2
|
DDRD1
|
DDRD0
|
DDRD
|
0x11(0x31)
|
PIND7
|
PIND6
|
PIND5
|
PIND4
|
PIND3
|
PIND2
|
PIND1
|
PIND0
|
PIND
|
0x10(0x30)
|
SPDR7
|
SPDR6
|
SPDR5
|
SPDR4
|
SPDR3
|
SPDR2
|
SPDR1
|
SPDR0
|
SPDR
|
0x0F(0x2F)
|
SPIF
|
WCOL
|
-
|
-
|
-
|
-
|
-
|
SPI2X
|
SPSR
|
0x0E(0x2E)
|
SPIE
|
SPE
|
DORD
|
MSTR
|
CPOL
|
CPHA
|
SPR1
|
SPR0
|
SPCR
|
0x0D(0x2D)
|
UDR7
|
UDR6
|
UDR5
|
UDR4
|
UDR3
|
UDR2
|
UDR1
|
UDR0
|
UDR
|
0x0C(0x2C)
|
RxC
|
TxC
|
UDRE
|
FE
|
DOR
|
PE
|
U2X
|
MPCM
|
UCSRA
|
0x0B(0x2B)
|
RxCIE
|
TxCIE
|
UDRIE
|
RxEN
|
TxEN
|
UCSCZ2
|
RxB8
|
TxB8
|
UCSRB
|
0x0A(0x2A)
|
UBRR7
|
UBRR6
|
UBRR5
|
UBRR4
|
UBRR3
|
UBRR2
|
UBRR1
|
UBRR0
|
UBRRL
|
0x09(0x29)
|
ACD
|
ACBG
|
ACO
|
ACI
|
ACIE
|
ACIC
|
ACIS1
|
ACIS0
|
ACSR
|
0x08(0x28)
|
REFS1
|
REFS0
|
ADLAR
|
MUX4
|
MUX3
|
MUX2
|
MUX1
|
MUX0
|
ADMUX
|
0x07(0x27)
|
ADEN
|
ADSC
|
ADATE
|
ADIF
|
ADIE
|
ADPS2
|
ADPS1
|
ADPS0
|
ADCSRA
|
0x06(0x26)
|
ADC16
|
ADC15
|
ADC14
|
ADC13
|
ADC12
|
ADC10
|
ADC9
|
ADC8
|
ADCH
|
0x05(0x25)
|
ADC7
|
ADC6
|
ADC5
|
ADC4
|
ADC3
|
ADC2
|
ADC1
|
ADC0
|
ADCL
|
0x04(0x24)
|
TWD7
|
TWD6
|
TWD5
|
TWD4
|
TWD3
|
TWD2
|
TWD1
|
TWD0
|
TWDR
|
0x03(0x23)
|
TWA6
|
TWA5
|
TWA4
|
TWA3
|
TWA2
|
TWA1
|
TWA0
|
TWGCE
|
TWAR
|
0x02(0x22)
|
TWS7
|
TWS6
|
TWS5
|
TWS4
|
TWS3
|
TWS2
|
TWS1
|
TWS0
|
TWSR
|
0x01(0x21)
|
TWBR7
|
TWBR6
|
TWBR5
|
TWBR4
|
TWBR3
|
TWBR2
|
TWBR1
|
TWBR0
|
TWBR
|
0x00(0x20)
|
Berikut di bawah ini penjelasan penggunaan register di atas:
- Register SREG
- Komunikasi Serial dengan UART
- Penggunaan Timer
- Interupsi
- ADC
- PWM
Register SREG ini berisikan flag/status dari Register adapun kegunaan tiap bitnya antara lain:
Bit 7 - I: Global Interrupt Enable
Bit Global Interupt Enable (I) ini harus di set satu untuk mengaktifkan fungsi interupt.
Bit 6 - T: Bit Copy Storage
Bit T ini merupakan bit penanda bahwa telah melakukan perintah bit copy BLD (Bit LoadD) dan BST (Bit STore). BLD berguna untuk mengisi bit dari Register dengan nilai dari bit T sedangkan perintah BST berguna untuk mengisi bit T dengan bit dari register.
Bit 5 - H: Half Carry Flag
Bit ini akan bernilai 1 jika operasi arithmatic yang dilakukan pada 4 bit lebih besar dari Fh. misal Fh + 1 akan menghasilkan nilai 10h, maka bit H pada SREG akan bernilai 1
Bit 4 - S: Sign Bit
S-bit akan bernilai satu jika operasi aritmatik exclusive atau negatif flag dan komplemen kedua overflow flag terjadi.
Bit 3 - V: Two's Complement Overflow Flag
V bit akan bernilai 1 jika terjadi operasi aritmatik yang menghasilkan overflow.
Bit 2 - N: Negative Flag
Negative flag N bahwa telah terjadi pada operasi aritmatik menghasillkan bilangan negatif yang terjadi di CPU .
Bit 1 - Z: Zero Flag
Z flag memberikan tanda bahwa telah terjadi hasil 0 pada operasi aritmatik.
Bit 0 - C: Carry Flag
Nilai carry flag ini akan bernilai 1 jika hasil dari perhitungan arithmatic lebih dari FFh .
Semua register di atas memiliki fungsi untuk berkomunikasi dengan device luar. Dan kalau ada waktu akan saya bahas pada artikel saya berikutnya.
Semoga artikel ini bermanfaat bagi anda yang indin memahami mikrokontroler avr atmega8535.
0 komentar:
Post a Comment
Note: Only a member of this blog may post a comment.