serial atmega8535

Upload: cahyo-sn

Post on 30-Oct-2015

297 views

Category:

Documents


5 download

DESCRIPTION

ATmega 8535

TRANSCRIPT

  • 7/15/2019 Serial ATMega8535

    1/48

    Komunikasi Serial dan

    USART ATMega8535

    Mikroprosesor

  • 7/15/2019 Serial ATMega8535

    2/48

    Sasaran

    Komunikasi Serial

    Antarmuka Serial dan USART

    Arsitektur Internal USART ATMega8535

    Register Kontrol ATMega8535

    Prosedur Penggunaan USARTATMega8535

  • 7/15/2019 Serial ATMega8535

    3/48

    Pendahuluan

    Komunikasi serial merupakan salah satu alternatifyang relatif murah untuk menggantikan komunikasiparalel, karena transfer data paralel menggunakan8 jalur konduktor/kawat untuk mentransfer data

    sekaligus. Komunikasi serial hanya menggunakan satu kawat

    penghantar, tetapi data ditransfer bit per bit.

    J angkauan komunikasi serial lebih jauhdibandingkan komunikasi paralel.

    Perangkat untuk mengubah serial ke paralel atausebaliknya adalah USART atau UART.

  • 7/15/2019 Serial ATMega8535

    4/48

    Antarmuka Serial dan USART

    Data di dalam CPU di proses secara paralel.

    Transfer data input/output serial harus dimulai dandiakhiri dengan data paralel.

    Konversi data serial ke paralel atau paralel ke serial

    menggunakan register geser (shift register). Transmisi data Paralel ke Serial (PISO)

  • 7/15/2019 Serial ATMega8535

    5/48

    Pengiriman Data Serial

  • 7/15/2019 Serial ATMega8535

    6/48

    Arsitektur Internal USART ATMega8535

    AVR ATMega8535

    memiliki 4 buah

    registerI/O yaitu :1) UART Data

    Register(UDR),2) UART Baud RateRegister(UBRR),

    3) UART StatusRegister(USR)

    4) UART ControlRegister(UCR).

  • 7/15/2019 Serial ATMega8535

    7/48

    Perangkat Keras USART terdiri :

    Transmitter

    Melakukan pengiriman data melalui pinTX.

    Register UDR digunakan sebagai tempatmenampung (buffer) data yang akanditransmisikan.

    Indikator keberhasilan data yangditransmisikan diberikan oleh flag TXC.

    Flag UDRE adalah sebagai indikator jikaUDR kosong dan siap untuk diisi datayang akan ditransmisikan lagi.

    Receiver

    Melakukan penerimaan datamelalui pin RX.

    Register yang digunakanuntuk menampung data

    yang telah diterima adalahUDR.

    Indikator keberhasilanbahwa data telah diterimaditangani oleh flag RXC.

    Clock Generator

    Berhubungan dengan kecepatan transfer data.

    Baud rate ditentukan oleh register pasangan UBRR

  • 7/15/2019 Serial ATMega8535

    8/48

    Clock Generation Logic, Block Diagram

  • 7/15/2019 Serial ATMega8535

    9/48

    Persamaan untuk Menghitung Baud Rate

    dan Seting Register

  • 7/15/2019 Serial ATMega8535

    10/48

    Synchronous Mode XCK Timing

  • 7/15/2019 Serial ATMega8535

    11/48

    Frame Formats Asinkron

    Format data terdiri dari : IDLE St 0...4 [5] ...[8] P Sp1 [Sp2]

  • 7/15/2019 Serial ATMega8535

    12/48

    USART I/O Data Register UDR

    Sebagai penyangga (buffer) data yang akan dikirimkan danpenyangga data yang diterima.

    Transmit Data Buffer Register(TXB) berfungsi sebagaipenyangga data yang akan ditulis ke dalam register UDR.

    Receive Data Buffer Register(RXB) berfungsi sebagaipenyangga data yang diterima oleh register UDR.

    Register UDR untuk penyangga hanya dapat ditulis ketika bitflag UDRE dalam register UCSRA (bit 5) dalam keadaan set.

  • 7/15/2019 Serial ATMega8535

    13/48

    USART Control and Status Register A UCSRA

    Register UCSRA digunakan sebagairegister kontrol dan status USART A.

  • 7/15/2019 Serial ATMega8535

    14/48

    Bit 7 RXC: USART Receive Complete

    Flag ini akan di-set jika data yang masuk (lengkap) ke dalam

    UDR belum dibaca. Akan clearjika receiver bufferkosong (yakni tidak berisi data

    yang belum dibaca).

    J ika penerima disable, maka penyangga penerima akandikosongkan dan sebagai akibatnya bit RCX akan menjadi

    nol. Flag RCX dapat digunakan untuk membangkitkan interupsi

    RX complete (lihat penjelasan RXCIE)

  • 7/15/2019 Serial ATMega8535

    15/48

    Bit 6 TXC: USART Transmit Complete

    Flag ini akan di-set jika data yang akan dikirim telah

    digeser keluar semuanya dan tidak ada data baru yangberada dalam transmit buffer(UDR).

    Flag TXC akan clearsecara otomatis jika TransmitComplete Interrupt telah dieksekusi, atau flag ini dapatdi-cleardengan menuliskan satu pada lokasi bit-nya.

    Flag TCX dapat membangkitkan Transmit CompleteInterrupt (lihat penjelasan bit TXCIE).

  • 7/15/2019 Serial ATMega8535

    16/48

    Bit 5 UDRE: USART Data Register Empty

    Berfungsi untuk menyatakan kesiapan transmit

    buffer (UDR) menerima data baru. J ika UDRE satu, maka buffer kosong, karena itu siap

    untuk ditulisi.

    Flag UDRE dapat membangkitkan Data Register

    Empty Interrupt (lihat penjelasan bit UDRIE). UDRE set setelah suatu reset yang menunjukkan

    bahwa Transmitter siap.

  • 7/15/2019 Serial ATMega8535

    17/48

    Bit 4 FE: Frame Error

    Bit ini set jika karakter berikutnya pada receive buffer

    mempunyai Frame Errorsaat diterima. Misalnya, jika bit stop pertama karakter berikutnya pada

    receiver bufferadalah nol.

    Bit in valid hingga receive buffer(UDR) di baca.

    Bit FE nol jika bit stop data yang diterima adalah satu.

    Bit ini selalu set ke nol jika dilakukan penulisan keUCSRA.

  • 7/15/2019 Serial ATMega8535

    18/48

    Bit 3 DOR : Data OverRun

    Bit ini set jika kondisi Data OverRun (tumpang tindih

    data) terdeteksi. Data OverRun terjadi jika receiver bufferpenuh (dua

    karakter) yang merupakan suatu karakter baru yangmenunggu pada Receiver Shift Register, dan sebuah bitstart baru terdeteksi.

    Bit ini valid hingga receiver buffer(UDR) di baca.

    Bit in selalu set ke nol jika terjadi penulisan ke UCSRA.

  • 7/15/2019 Serial ATMega8535

    19/48

    Bit 2 PE: Parity Error

    Bit ini set jika karakter berikutnya pada receiver

    buffermempunyai Parity Errorketika diterima, danpengecekan parity adalah enable pada saattersebut (UPM1 = 1).

    Bit ini valid hingga receiver buffer(UDR) di baca.

    Bit ini selalu set ke nol saat terjadi penulisan keUCSRA.

  • 7/15/2019 Serial ATMega8535

    20/48

    Bit 1 U2X: Double the USART Transmission Speed

    Bit ini hanya mempunyai efek pada operasiasinkron.

    Bit ini ditulis ke nol jka menggunakan operasisinkron.

    Penulisan bit ini ke satu akan mengurangi pembagi

    (divisor) baud rate dividerdari 16 ke 8 secara efektifdobel transfer rate pada komunikasi asinkron.

  • 7/15/2019 Serial ATMega8535

    21/48

    Bit 0 MPCM : Multi Processor Communication Mode

    Bit ini berfungsi untuk meng-enable atau

    mengaktifkan mode Multi-ProcessorCommunication.

    Bila bit MPCM ditulis ke satu, semua frame yangditerima oleh penerima USART yang tidak berisi

    informasi alamat akan diabaikan. Transmitter tidak dipengaruhi oleh setting MPCM.

  • 7/15/2019 Serial ATMega8535

    22/48

    USART Control and Status Register B UCSRB

    Bit 7 RXCIE : RX Complete Interrupt Enable

    Berfungsi mengaktifkan interupsi RXComplete (1=enable, 0=disable).

    J ika satu data diterima dalam register UDRsudah lengkap (tanpa error), maka

    otomatis akan men-set flag RXC dalamregister UCSRA dan kemudianmembangkitkan interupsi RX Complete.

  • 7/15/2019 Serial ATMega8535

    23/48

    Bit 6 TXCIE : TX Complete Interrupt Enable

    Berfungsi mengaktifkan interupsi RX Complete(1=enable, 0=disable).

    J ika satu data diterima dalam register UDR sudahlengkap (tanpa error), maka otomatis akan men-set flag RXC dalam register UCSRA dan

    kemudian membangkitkan interupsi RX Complete.

  • 7/15/2019 Serial ATMega8535

    24/48

    Bit 5 UDRIE : USART Data Register EmptyInterrupt Enable

    Berfungsi mengaktifkan interupsi Data RegisterEmpty (UDR kosong, 1=enable, 0=disable).

    J ika data yang dituliske UDR telah dikirimkankemudian UDR akan kosong, hal ini yangdimanfatkan untuk membangkitkan interupsi data

    register empty.

  • 7/15/2019 Serial ATMega8535

    25/48

    Bit 4 RXEN : Receiver Enable

    Berfungsi mengaktifkan pin RX saluran USART(1=enable, 0=disable).

    Ketika diaktifkan maka pin tersebut tidak dapatdigunakan untuk fungsi pin I/O karena sudahdigunakan sebagai saluran penerima USART.

  • 7/15/2019 Serial ATMega8535

    26/48

    Bit 3 TXEN : Transmitter Enable

    Berfungsi mengaktifkan pin TX saluran USART(1=enable, 0=disable).

    Ketika diaktifkan maka pin tersebut tidak dapatdigunakan untuk fungsi pin I/O karena sudahdigunakan sebagai saluran pemancar USART.

  • 7/15/2019 Serial ATMega8535

    27/48

    Bit 2 UCSZ2 : Character Size

    Bit bersama UCSZ1, UCSZ0 dalam registerUCSRC digunakan untum memilih format lebardata bit (character size) yang digunakan.

  • 7/15/2019 Serial ATMega8535

    28/48

    Bit 1 RXB8 : Receive Data Bit 8

    Bit ini dignakan sebagai bit ke-9 ketikamenggunakan format data 9-bit.

    Bit ini harus dibaca dahulu sebelum membacaUDR.

  • 7/15/2019 Serial ATMega8535

    29/48

    Bit 0 TXB8 : Transmit Data Bit 8

    Bit ini digunakan sebagai bit ke-9 ketikamenggunakan format data 9-bit.

    Bit ini harus ditulis dahulu sebelum menuliskan keUDR.

  • 7/15/2019 Serial ATMega8535

    30/48

    USART Control and Status Register C UCSRC(1)

    Bit 7 URSEL : Register Select

    Berfungsi memilih antara pengaksesanregister UCSRC atau UBRRH.

    Dibaca seperti ketika membacaUCSRC.

    URSEL harus satu ketika menulisiUCSRC

  • 7/15/2019 Serial ATMega8535

    31/48

    Bit 6 UMSEL : USART Mode Select

    Berfungsi memilih antara mode operasiasinkron atau sinkron.

  • 7/15/2019 Serial ATMega8535

    32/48

    Bit 5:4 UPM1:0 : Parity Mode

    Berfungsi meng-enable dan men-settipe pembangkitan parity dan check.

    J ika di-enable, pengirim secaraotomatis akan membangkitkan danmengirimkan parity dari bit-bit datayang dikirimkan dalam setiap frame.

    Penerima akan membangkitkan sebuah nilai parity untuk data yang

    masuk/diterima dan membandingkan dengan setting UMP0. J ika terdeteksi ketidaksesuaian (missmatch), maka flag PE pada

    UCSRA akan di-set.

  • 7/15/2019 Serial ATMega8535

    33/48

    Bit 3 USBS : Stop Bit Select

    Berfungsi memilih jumlahbit stop yang akandisisipkan oleh pengirim.

    Penerima mengabaikan

    setting ini.

  • 7/15/2019 Serial ATMega8535

    34/48

    Bit 2:1 UCSZ1:0 : Character Size

    Bit-bit UCSZ 1:0

    bersama dengan bitUCSZ2pada UCSRBakan mengeset jumlahbit data (ukuran karakter)dalam sebuah frame

    penerima dan pengirimyang digunakan.

  • 7/15/2019 Serial ATMega8535

    35/48

    Bit 0 UCPOL : Clock Parity

    Digunakan hanya untuk mode sinkron.

    Bit ini ditulis ke nol jika digunakan sebagai mode asinkron. Bit UCPOL mengeset hubungan antara sampling keluaran

    data, masukan data, dan clock sinkron (XCK).

  • 7/15/2019 Serial ATMega8535

    36/48

    USART Baud Rate Registers UBRR

    UBRRL and UBRRH(1)

    Register UBRRH digunkan secara sharelokasi I/O yang sama sebagai registerUCSRC.

  • 7/15/2019 Serial ATMega8535

    37/48

    Bit 15 URSEL : Register Select

    Berfungsi untuk memilih antara pengaksesanregister UBRRH atau UCSRC.

    Bit ini dibaca sebagai nol ketika membacaUBRRH.

    URSEL harus nol ketika menulisi UBRRH.

  • 7/15/2019 Serial ATMega8535

    38/48

    Bit 14:12 Reserved Bit

    Digunakan sebagai cadangan untukpengunan pengembangan di masa datang.

    Untuk kompatibilitas dengan piranti yang akandatang, maka bit ini harus ditulis ke nol ketika

    UBRRH ditulisi.

  • 7/15/2019 Serial ATMega8535

    39/48

    Bit 11:0 UBRRR11:0 : USARTBaud Rate Register

    Terdapat 12 bit yang digunakan untukmenentukan baud rate USART.

    UBRRH berisi 4 bit MSB dari USART baud rate.

    UBRRL berisi 8 bit LSB dari USART baud rate.

    Akan terjadi kesalahan jika baud rate pengirimdan penerima berbeda.

  • 7/15/2019 Serial ATMega8535

    40/48

    Prosedur Penggunaan USART ATmega8535

    Memilih mode yang akan digunakan

    Memilih interupsi yang akan diaktifkan

    Memilih saluran yang akan digunakan

    Memilih lebar data yang akan digunakan Memilih parity bit dan stop bit

    Menentukan baud rate

    Membuat fungsi ISR jika bit I padaSREG diaktifkan

  • 7/15/2019 Serial ATMega8535

    41/48

    Inisialisasi USART ATmega8535

    ;================;inisialisasi USART

    ;================

    USART_Init:

    ;set baud rat e

    out UBRRH, r17

    out UBRRL, r16;enable penerima dan pengir im

    ldi r16, (1

  • 7/15/2019 Serial ATMega8535

    42/48

    Pengiriman Data

    USART_Transmit:

    ;menunggu buffer pengiriman kosong

    sbis UCSRA, UDRE

    rjmp USART_Transmit

    ;mengisi data (r16) ke buffer, mengirim data

    out UDR, r16

    ret

  • 7/15/2019 Serial ATMega8535

    43/48

    Penerimaan Data

    USART_Receive:

    ;wait for data to be receive

    sbis UCSRA, RXC

    rjmp USART_Receive

    ;get and return received data from buffer

    in r16, UDR

    ret

  • 7/15/2019 Serial ATMega8535

    44/48

    TUGAS_01 :

    Buat program untuk menerima data karakterdari port serial kemudian ditampilkan di LCD.

  • 7/15/2019 Serial ATMega8535

    45/48

    TUGAS_02 :

    Buat program untuk mengirim data karakterdari keypad 4x4 melalui port serial.

  • 7/15/2019 Serial ATMega8535

    46/48

    Inisialisasi USART :

    .equ fclock = 11059200

    .equ baud_rate = 19200

    .equ ubbr_value = (fclock / (16*baud_rate)) - 1init_usart:

    ldi temp,high(ubbr_value)out UBRRH,templdi temp,low(ubbr_value)out UBRRL,templdi temp,(1

  • 7/15/2019 Serial ATMega8535

    47/48

    Contoh pengiriman USART :

    usart_tx:

    sbis UCSRA,UDRErjmp usart_tx

    out UDR,txbyte

  • 7/15/2019 Serial ATMega8535

    48/48

    Contoh penerimaan USART :

    usart_rx:

    sbis UCSRA,RXCrjmp usart_rx

    in rxbyte,UDR