Program USART pada Sasakala Board

Sasakala Board adalah sebuah AVR Development Board dari Embedtronix yang berbasis microcontroler Atmel AVR ATmega32 dilengkapi dengan RS232 Level Converter, jadi tidak perlu converter RS232 lagi bila ingin berkomunikasi dengan PC lewat serial port.

Berikut contoh program USART pada Sasakala Board dengan menggunakan AVR Studio 4 dan WinAVR. Untuk menggunakan AVR Studio dan Win AVR silakan baca tutorialnya disini.

/*
        == AVR-Sasakala Demo ==
************************************************

Hardware:
    [Sasakala Board]
    ATmega32 @16MHz with Level convertor
    on RX/TX line Connected to PC via RS232

PC Software:    
    Hyperterminal @ 19200 baud
    No Parity,1 Stop Bit,
    Flow Control = NONE

************************************************
       Bubaka - Embedtronix (C)2010
*/

#include <avr/io.h>
#include <inttypes.h>

//Initialize the USART
void USARTInit(uint16_t ubrr_value)
{

   //Set Baud rate
   UBRRL = ubrr_value;
   UBRRH = (ubrr_value>>8);

   /*Set Frame Format
   >> Asynchronous mode
   >> No Parity
   >> 1 StopBit
   >> char size 8
   */
   UCSRC=(1<<URSEL)|(3<<UCSZ0);

   //Mengaktifkan receiver and transmitter serial
   UCSRB=(1<<RXEN)|(1<<TXEN);
}

//Membaca data dari buffer USART.
//program akan menunggu hingga ada data.

char USARTReadChar()
{
   
//Menunggu hingga ada data
    while(!(UCSRA & (1<<RXC)))
    {
        //menunggu… 
    }

    //USART sudah mendapatkan data dari host
    //dan tersimpan di buffer

    return UDR;
}

//Fungsi untuk mengirimkan data (huruf) ke host PC
//melalui jalur TX serial RS232
 
void USARTWriteChar(char data)
{
   
//engunggu hingga transmitter siap 
    while(!(UCSRA & (1<<UDRE)))
    {
        //menunggu … 
    }

    //menyimpan data ke buffer USART  
    UDR=data;
}

//Fungsi untuk mengirimkan data (kata) ke host PC
//melalui jalur TX serial RS232
 
void
SerialString(const char *msg)
{
     while(*msg!='\0')
     {
        USARTWriteChar(*msg);
        msg++;
     }
}

//Fungsi untuk mengirimkan judul ke host PC
void
WriteTitle()

    SerialString("AVR32 USART Demo ");

}   

//Fungsi utama
void
main()
{
    char data;

    /*
    Initialisasi USART untuk Baudrate = 19200bps,
    maka UBRR diberi nilai = 51
    */
    USARTInit(51);        //UBRR = 51

    //dari sini program akan berulang terus menerus 
    while(1)
    {
        //Membaca data dari buffer serial 
        data=USARTReadChar();

        /*  
        Mengirimkan kembali data yang diterima dengan penambahan tanda ‘[‘ 
        serta tulisan judul. Contohnya ‘AVR USART Demo [a]'.
        */
        WriteTitle();
        USARTWriteChar('[');
        USARTWriteChar(data);
        USARTWriteChar(']');

        USARTWriteChar(0x0A);   //Mengirimkan tanda ganti baris 
    }
}

Selamat mencoba…!

Tidak ada komentar:

Posting Komentar

author
Embedtronix
Build Your Embedded System. Belajar bareng ngoprek Microcontroller, Arduino, TPLink, GLiNet dan ilmu Microelectronic lainnya.