Rabu, 02 Februari 2011

ATmega128 / 1280 : Multi USART / UART

.
Anda mungkin pernah mengakses ATmega128 yang memiliki 2 USART (Universal Synchronous Asynchronous serial Receiver and Transmitter) atau bahkan 4 USART seperti yang dimiliki ATmega1280.

Bagaimana cara mengakses setiap USART tersebut dan bagaimana menentukan proses pengiriman data / karakter pada setiap USART tersebut ?
Jika belum pernah mencoba multi USART maka anda tidak akan tahu masalah-masalahnya dan kesulitan yang akan dihadapi.
Jadi klo ada waktu dan dana sebaiknya dicoba deh..
Bermanfaat kok n ga bakal rugi...
Aplikasinya pasti luaaaaassss banget..

Perbedaan USART dan UART ?
Baca topik : Komunikasi Data.
Beberapa rekan-rekan masih menanyakan apa itu USART dan apa bedanya dengan UART ?
Klo saya misalkan seperti bertanya apa perbedaan sepeda biasa dengan sepeda bermotor listrik seperti pada gambar.






Sepeda bermotor listrik adalah sepeda biasa yg memiliki motor listrik, artinya bisa digunakan seperti sepeda biasa atau menggunakan motor listriknya sesuai keinginan.
Sumber gambar : Sepeda Listrik dan Sepeda Onthel

Dari kepanjangannya saja sudah menjelaskan perbedaannya,
UART : Universal Asynchronous serial Receiver and Transmitter
USART : Universal Synchronous Asynchronous serial Receiver and Transmitter

Mikrokontroller yang memiliki fitur UART berarti hanya tersedia fungsi untuk komunikasi serial asinkron sedangkan untuk komunikasi lainnya anda harus membuat program sendiri.

Sedangkan USART selain tersedia fitur / fungsi komunikasi serial asinkron (UART) juga bisa digunakan serial sinkron (USRT) dan PIN / PORT yang digunakan adalah sama.
Oiya USART pada mikrokontroller AVR semuanya adalah FullDuplex.

Langkah Coding pada CVAVR
Saya akan membahas untuk mikrokontroller ATmega1280 karena sudah saya coba dan cukup mewakili untuk multi USART mikro AVR lainnya.
Langkah-langkah :





  • Jalankan CoViAVR, buat Project baru, dan gunakan CodeWizzard. Pilih chip : ATmega1280, clock 11.0592 MHz.
  • Secara otomatis akan tampil tab USART0, USART1, USART2, dan USART3, lakukan pengaturan sesuai keinginan dan kebutuhan anda.
  • Pada gambar di atas, baudratenya saya buat berbeda-beda silahkan anda pilih baudrate-nya sama semua (agar mudah pengujiannya) yaitu Protokol : Baudrate :9600,8N1.
  • Jika telah selesai kemudian File-Generate, Save and Exit.
  • Secara otomatis akan muncul beberapa fungsi antara lain : getchar1(void), getchar2(void), getchar3(void), putchar1(void), putchar2(void), dan putchar3(void).
  • Buat fungsi untuk mengirim "kata" / "kalimat" yaitu putsf1(), putsf2(), dan putsf3().
Klik gambar untuk melihatnya.
Ketika anda meng-Compile-nya akan muncul 3 buah pesan Warning untuk fungsi putsf1, putsf2, dan putsf3 yang bisa diabaikan.

Wahh... ternyata tidak jelas gambarnya... Mungkin kebesaaran kali ya. Saya pecah jadi 4 gambar deh..














Penjelasan Singkat

Coding tersebut akan mengirim kata "test USART0" atau "test USART1" atau "test USART2" atau "test USART3" setiap 500 mS untuk semua USART atau setiap 2000 mS untuk salah satu USART.

Saya memberikan nilai Baudrate yang berbeda-beda untuk setiap USART sehingga ketika dicoba menggunakan Hyperterminal atau program terminal yang tersedia pada CoViAVR jangan lupa untuk mengubah baudratenya sesuai dengan PORT USART yang dihubungkan.
Hal ini untuk menunjukkan bahwa mikrokontroller AVR yang memiliki banyak USART mampu untuk transfer data dengan protokol yang berbeda-beda untuk setiap port USART-nya karena secara internal, setiap USART memiliki register dan rangkaian tersendiri yang independen.
Selain itu setiap USART juga mampu untuk mengirim data (hampir) secara bersamaan.

CMIWW.. aj deh...
Semoga membantu ...^^v...

Topik yang Populer