Sunday, March 6, 2016

Mudah Memahami Mikrokontroler AVR ATMEGA8535

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?
  1. CPU nya memiliki 32 buah register umum yaitu R0-R31
  2. Mempunyai watchdog timer dengan oscilator internal untuk menjaga mikrokontroler dari hang (akan mereset mikrokontroler jika hang).
  3. Memiliki 3  unit Timer/Counter dengan kemampuan perbandingan yaitu pada port D4, Port D5 dan port D7
  4. Mempunyai I/O sebanyak 32 buah yaitu 8 buah port A, 8 buah port B, 8 buah prot C dan 8 buah port D
  5. Mempunyai ADC dengan kemampuan 10-bit sebanyak 8 buah yaitu pada port A0-A8
  6. Memiliki SRAM sebesar 512-byte yang bisa anda lihat nantinya pada peta memory
  7. Memiliki memori Flash sebesar 8 kbyte 
  8. Memiliki interupt internal dan eksternal yaitu pada port D2 dan port D3 sebagai interupt eksternal
  9. Memiliki Port interface SPI yaitu pada Port B4-B7
  10. Memiliki interface komparator analog yaitu pada port B2, B3
  11. Memiliki EEPROM sebesar 512 byte yang bisa diisi pada saat ia beroperasi
  12. Memiliki Port USART untuk komunikasi secara serial yaitu pada Pord D0, D1
  13. Mikrokontroler ini dapat dipasang pada frekuensi kerja maksimal 16 MHz sedangkan untuk ATMEGA8535L maksimal hanya 8 MHz
  14. Dapat dipasang sumber oscilator frekuensi dari luar (external) maupun oscilator yang terdapat di dalam (internal)
arsitektur-atmega8535
arsitektur-atmega8535

Konfigurasi PIN ATMEGA8535

ATMEGA8535 terdiri dari 40 pin dengan fungsi sebagai berikut:
ATMEGA8535
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

Inverting RESET
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
 Adapun  konfigurasi memori data ditunjukkan seperti gambar di bawah:
  1.  Register mulai R0-R31 (sebanyak 32 buah) dengan alamat $0000-$001F
  2. Register I/O mulai dari alamat $0020-$005F sebanyak (64 buah)
  3. 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:
  1. Register SREG
  2. 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 .
  3. Komunikasi Serial dengan UART
  4. Penggunaan Timer
  5. Interupsi
  6. ADC
  7. PWM 
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.
Mudah Memahami Mikrokontroler AVR ATMEGA8535 Rating: 4.5 Diposkan Oleh: Dedy Fermana

0 komentar:

Post a Comment

Note: Only a member of this blog may post a comment.