Rabbit Microprocessor Basic Tutorial [Bagian 4]

Komunikasi Serial Asynchronous (UART)

Komunikasi serial asynchronous merupakan salah satu metode komunikasi data yang ditransmisikan tidak secara terus menerus namun intermitent. Komunikasi asynchronous tidak menyertakan external clock namun interprestasi data dimulai pada saat start bit terdeteksi dan diakhiri oleh stop bit pada jumlah bit dan kisaran waktu tertentu.

Diagram Pewaktuan UART
Diagram Pewaktuan UART

Parameter umum komunikasi asynchronous adalah kecepatan bit yang dikenal dengan baudrate. Satuan dasar dari baudrate adalah bit per second (bps). Baudrate 9600 berarti dalam waktu satu detik ada 9600 bit data yang ditransmisikan dari sebuah transmitter ke receiver. Contoh sederhana dari komunikasi asynchronous adalah komunikasi RS232 pada PC.

Komunikasi RS485

Komunikasi RS485 terbagi menjadi half duplex dan full duplex. Pada komunikasi full duplex komunikasi dapat terjadi bersamaan dalam dua arah. Yang perlu dihindari adalah pada saat pengiriman data tidak boleh ada output yang low impedance lebih dari pada satu. Untuk mempermudah troubleshooting konfigurasi RS485 full duplex dibuat seperti gambar berikut

Komunikasi RS-485 Full Duplex
Komunikasi RS-485 Full Duplex

Lab 3.1 Komunikasi Data Asynchronous

  • Persiapkan perangkat untuk komunikasi serial termasuk USB to Serial Converter.
  • Hubungkan USB to Serial Converter ke PC, lihat COM  yang aktif pada device manager.
  • Jalankan program Hercules.exe (dapat di-download di : http://www.hw-group.com/products/hercules/index_en.html)
Hercules.exe
Hercules.exe
  • Pilih tab serial sesuaikan parameter-parameternya sebagai berikut :

Name :

Baud : 9600

Data size : 8

Parity : none

Handshake : OFF

Tekan tombol “Open”

  • Ketikan listing program berikut ini pada editor window :
/*****************************************************
     latih2.c
     www.teknikpersinyalan.com
     Basic Tutorial Rabbit Microprocessor
******************************************************/

#define DS1 0
#define BINBUFSIZE  63
#define BOUTBUFSIZE 63 

// Ubah baudrate di sini....! 

#ifndef _232BAUD
#define _232BAUD 9600L
#endif

void manual_delay()
{
   unsigned long i;
    for (i=0; i<=1000000; i++)
   {
      #asm
      nop
      #endasm
   } 
} 

main()
{
   unsigned char bacaser;
   WrPortI(PDDDR,&PDDDRShadow,0xFF);  //Inisialisasi seluruh port D sebagai output
   serBopen(_232BAUD);                //Membuka port serial B
   bacaser = "\0";                    //Null char
   BitWrPortI(PDDR,&PDDRShadow,1,DS1);
   manual_delay();                              //Warming up delay
   serBputc("\0");

   while(1)   //superloop
   {
       bacaser = serBgetc();
      if (bacaser=='1')
      {
            BitWrPortI(PDDR,&PDDRShadow,0,DS1);
            serBputs("\nLED DS1 menyala ! \n\r");
      }

      else if (bacaser=='0')
      {
            BitWrPortI(PDDR,&PDDRShadow,1,DS1);
            serBputs("\nLED DS1 mati ! \n\r");
      }

       bacaser="\0";
   }
   serBclose();
}
  • Save pekerjaan anda pada folder <disk> :\RabbitTraining\ dengan nama file: latih2.c.
  • Pasang jumper SMODE pada konektor JP1.
  • Compile program tersebut di flash.
  • Buka jumper SMODE pada konektor JP1. Abaikan error message pada Dynamic C.
  • Tekan tombol reset.
  • Kirim karakter ‘1’ dari Hercules, perhatikan yang terjadi pada Interface Board dan window Hercules.
  • Kirim karakter ‘0’ dari Hercules, perhatikan yang terjadi pada Interface Board dan window Hercules.
  • Ulang-ulang pengiriman data tersebut, perhatikan apa yang terjadi.

Leave a Reply

Your email address will not be published. Required fields are marked *