Tuesday, May 26, 2015

Belajar Port Serial Mikrokontroler pada AVR

Pada tutorial kali ini kita akan belajar mikrokontroler. yaitu tentang port serial. AVR memiliki 4 port I/O yang berhubungan dengan komunikasi menggunakan UART. Port-port tersebut antara lain:

  1. UART I/O Data Register (UDR)
  2. Untuk melakukan pengiriman data menggunakan serial. dapat dilakukan setelah register UDR diberi karakter data. Pada sisi penerima, UART mempunyai Buffer (tempat menampung data sementara) sehingga UDR dapat dibaca ketika sebuah data baru masuk kedalam register ini
  3. UART Baud Rate Register (UBRR)
  4. UBRR ini digunakan untuk menentukan besarnya clock yang dibangkitkan oleh baudrate generator. Besarnya baudrate dapat dihitung berdasarkan persamaan di bawah ini : UBRR = (fclock/(16 x Baud)) - 1 Misalnya, jika kita ingin kecepatan baudrate komunikasi serial sebesar 9600 maka dengan memasang crystal sebesar 11059200 Hz maka nilai UBRR akan bernilai 71
  5. UART Status Register (USR)
  6. Register USR menyimpan berbagai status flag seperti RXC,TXC,UDRE,FE,OR. Susunan dari UART Status Register ini antara lain:
    7 6 5 4 3 2 1 0
    RXC TXC UDRE FE OR - - -

    Penjelasan bit-bit di atas antara lain:
    1. RXC (Receive Complete), nilainya akan berisi 1 secara otomatis jika UART telah menerima sebuah karakter secara lengkap
    2. TXC(Transmit Complete) secara otomatis akan berisi nilai 1 jika sebuah karakter telah selesai digeser keluar dari register geser kirim
    3. UDRE (UART Data Register Empty) akan berisi nilai 1 jika isi dari UDR kosong
    4. FE (Framing Error) akan berisi nilai 1 jika stop bit tidak diterima oleh mikro, jika stop bit diterima maka akan berisi nilai 0
    5. OR (Overrun) akan berisi nilai 1 jika ada karakter yang dipindahkan dari register geser terima ke UDR sebelum karakter yang diterima dibaca.

  7. UART Control Register (UCR)
7 6 5 4 3 2 1 0
RXCIE TXCIE UDRIE RXEN TXEN CHR9 RXB8 TXB8

Penjelasan bit dari register UCR :
  1. RXCIE (Receive Complete Interupt Enable). Jika kita beri nilai 1 maka UART akan membangkitkan sinyal interupsi ketika satu karakter telah selesai diterima
  2. TXCIE (Transmite Complete Interupt Enable). akan berisi nilai 1 jika telah selesai mengirim karakter dan membangkitkan interupsi
  3. UDRIE (UART Data Register Empty Interup Enable), jika berisi nilai satu berarti sebuah interupsi terjadi ketika isi Register UDR kosong (bit UDRE berisi nilai 1)
  4. RXEN (Receive Enable) jika berisi nilai 1 berarti penerima UART diaktifkan dan pin RxD menjadi pin input yang terhubung ke UART
  5. TXEN (Transmite Enable) jika berisi nilai 1 berarti penerima UART diaktifkan dan pin TxD menjadi pin output yang terhubung ke UART
  6. CHR9 (9-bit Characters), jika bit ini berisi nilai logika 1 maka ukuran karakter yang telah dikirim menjadi 9-bit dan bit yang ke 9 berada pada bit RXB8 dan TXB8
  7. RXB8 (Receive data  bit 8 ),jika CHR9 berisi logika 1 maka bit ini adalah bit ke 9 dari data yang telah diterima 
  8. TXB8 (Transmite data  bit 8 ),jika CHR9 berisi logika 1 maka bit ini adalah bit ke 9 dari data yang telah dikirim, Jadi bit ini harus diisi terlebih dahulu sebelum melakukan pengiriman  
Inisialisasi USART
Untuk inisialisasi awal, ada register perlu ditentukan nilainya antara lain UBRR (USART Baud Rate Register). UBRR merupakan register 16 bit yang terdiri dari UBRRL (UBRR Low) dan UBRRH (UBRR High).
Susunan bit dari UBRR adalah sebagai berikut

URSEL - - - UBRRH 11 UBRRH 10 UBRRH 9 UBRRH 8
UBRRL 7 UBRRL 6 UBRRL 5 UBRRL 4 UBRRL 3 UBRRL 2 UBRRL 1 UBRRL 0

Penjelasan:

  1. URSEL adalah bit untuk mengakses UBRR atau UCSRC. Untuk mengakses UBRR isi bit ini dengan nilai 0 untuk mengakses UCSRC isi bit ini dengan nilai 1
  2. UBRR(11....0) adalah bit untuk menyimpan kecepatan / baudrate komunikasi serial untuk menghitung besar baudrate gunakan rumus pada tabel di bawah ini



Mode Operasi Rumus nilai UBRR
Operasi Asinkron dengan kecepatan Normal (U2X=0)* UBRR= ((fosc)/(16xBaudrate)) - 1
Operasi Asinkron dengan kecepatan Ganda (U2X=1)* UBRR= ((fosc)/(8xBaudrate)) - 1
Operasi sinkron UBRR= ((fosc)/(2xBaudrate)) - 1

Proses pengiriman data melalui Port Serial Pengiriman data melalui port serial dikirim byte per byte data melalui register UDR, yang mana UDR adalah register tempat menampung data-data yang dikirim. sebelum dikirim register UDR ditunggu isinya kosong sehingga siap untuk dituliskan data baru. Proses menunggu register kosong ini menggunakan register UCSRA yang pada bit UDRE(USART Data Register Empty). Bit UDRE ini dijadikan sebagai indikator penanda bahwa register UDR dalam keadaan kosong. Jadi jika bit UDRE ini berisi logika 1 maka berarti Register UDR telah kosong dan siap untuk dilakukan pengiriman. 

Proses menerima data pada serial port proses penerimaan data melalui port serial dilakukan dengan mengecek isi dari bit RXC(USART Receive Complete) pada register UCSRA. bit RXC ini akan berisi logika 1 jika buffer penerima telah berisi data dan akan berisi logika 0 jika buffer penerima data berisi nilai kosong. Jika penerima USART dimatikan atau tidak diaktifkan maka bit ini akan selalu berisi nilai logika 0. Demikianlah tutorial Port Serial Mikrokontroler AVR. Selamat belajar mikrokontroler.
Belajar Port Serial Mikrokontroler pada AVR Rating: 4.5 Diposkan Oleh: Dedy Fermana

0 komentar:

Post a Comment

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