Terminal Serial Tahun 70-an
Apakah itu UART?
UART adalah mode komunikasi serial secara asynchronous, dimana data dikirim secara satu persatu melalui kabel ganda ( twisted pair Tx & Rx)

UART memiliki kecepatan transfer data yg ditentukan oleh pihak pengirim & penerima yg dinamakan BAUDRATE
Pengirim akan mengirimkan data secara serial, dan penerima akan mengolah data BIT (umumnya 8bit) menjadi data 1byte yg digunakan sesuai keperluan
UART memiliki level TTL 5 volt, dan menggunakan 2 buah I/O port (Tx & Rx)
Sebuah UART biasanya berisi komponen-komponen berikut:
Generator clock : biasanya kelipatan dari bit rate untuk memungkinkan pengambilan sampel di tengah periode bit.
Register Input Output
Kontrol kirim (TX) dan terima (RX)
Kontrol logika read write
Buffer I/O (opsional)
Paralel Bus Buffer (opsional)
Buffer First In First Out (FIFO) (opsional)
Apakah itu RS232 ?
RS 232 adalah standar signaling dari sebuah komunikasi serial. Pada umumnya PC keluaran sebelum 2010-an akan memiliki sebuah port serial/RS232. Komunikasi RS232 terbatas hanya untuk beberapa meter saja, dan jika membutuhkan jarak lebih maka membutuhkan protokol lain seperti RS485
Bagaimana Mengubah level UART ke RS232 ?
Untuk mengubahnya diperlukan level converter sejenis MAX-232. Prinsipnya adalah dengan menggunakan charge pump capasitor.


Alternatifnya adalah menggunakan rangkaian sederhana menggunakan transistor yang pernah dibahas juga di sini
Ayo kita berlanjut ke Praktek sebenarnya , karena metode belajar yang paling cepat adalah dengan terjun langsung ke permasalahan dilapangan.
PART LIST :
ATTiny2313
Max232
Xtal7.3278 MHz (xtal lain bisa juga dengan catatan akan timbul error rate beberapa % sesuai datasheet)
Led
Push button
beberapa capasitor/resistor
DB-9 Female
Kabel Serial (untuk PC jadul)
USB to RS232 converter untuk Laptop masa kini
SOURCE CODE akan kita bahas satu persatu
UART adalah mode komunikasi serial secara asynchronous, dimana data dikirim secara satu persatu melalui kabel ganda ( twisted pair Tx & Rx)

UART memiliki kecepatan transfer data yg ditentukan oleh pihak pengirim & penerima yg dinamakan BAUDRATE
Pengirim akan mengirimkan data secara serial, dan penerima akan mengolah data BIT (umumnya 8bit) menjadi data 1byte yg digunakan sesuai keperluan
UART memiliki level TTL 5 volt, dan menggunakan 2 buah I/O port (Tx & Rx)
Sebuah UART biasanya berisi komponen-komponen berikut:
Generator clock : biasanya kelipatan dari bit rate untuk memungkinkan pengambilan sampel di tengah periode bit.
Register Input Output
Kontrol kirim (TX) dan terima (RX)
Kontrol logika read write
Buffer I/O (opsional)
Paralel Bus Buffer (opsional)
Buffer First In First Out (FIFO) (opsional)
Apakah itu RS232 ?
RS 232 adalah standar signaling dari sebuah komunikasi serial. Pada umumnya PC keluaran sebelum 2010-an akan memiliki sebuah port serial/RS232. Komunikasi RS232 terbatas hanya untuk beberapa meter saja, dan jika membutuhkan jarak lebih maka membutuhkan protokol lain seperti RS485
Tegangan dari RS232 tidak mengikuti level TTL/5V tetapi seperti gambar
Bagaimana Mengubah level UART ke RS232 ?
Untuk mengubahnya diperlukan level converter sejenis MAX-232. Prinsipnya adalah dengan menggunakan charge pump capasitor.


Alternatifnya adalah menggunakan rangkaian sederhana menggunakan transistor yang pernah dibahas juga di sini
klik untuk memperjelas
Ayo kita berlanjut ke Praktek sebenarnya , karena metode belajar yang paling cepat adalah dengan terjun langsung ke permasalahan dilapangan.
(klik buat memperjelas)
PART LIST :
ATTiny2313
Max232
Xtal7.3278 MHz (xtal lain bisa juga dengan catatan akan timbul error rate beberapa % sesuai datasheet)
Led
Push button
beberapa capasitor/resistor
DB-9 Female
Kabel Serial (untuk PC jadul)
USB to RS232 converter untuk Laptop masa kini
SOURCE CODE akan kita bahas satu persatu
inisialisasi awal
Inisialisasi USART dari attiny2313
Routine pengiriman text lewat progmem/flash memory
Interupt saat menerima input data serial dari PC
Interupt saat Tombol ditekan dan mengirim data ke PC
Program utama / main
Jika sudah di compile & didownload ke AVR, maka hubungkan output MAX232 ke PORT Serial PC ato port USB-serial Converter. Gunakan Hyperterminal/putty/secureCrt untuk melakukan koneksi ke COM PORT dari serial port/Usb-serial converter dengan setting BAUDRATE 9600bps
Video berikut menampilkan contoh komunikasi serial UART dan RS232 ke PC untuk mengontrol nyala LED dan membaca penekanan tombol.
#define F_CPU 7372800UL //frek xtal yang dipake #include <avr/io.h> #include <util/delay.h> #include <inttypes.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> //rumus penentuan baudrate #define USART_BAUDRATE 9600 // baudrate 9600 bps #define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1) //deklarasi menu & tulisan . // digunakan memori flash(PROGMEM) karena attiny cukup kecil RAM nya const char menu[] PROGMEM = " \r* AVR ATTiny2312 - Rs232 COM by: ahocool@gmail.com * \r Petunjuk: \r ** TRANSMIT: Tekan Tombol Keyboard 1 & 2 untuk On/Off LED 1 & 2 \r ** RECEIVE: Tekan Tombol Switch untuk Menerima Data dari Micro \r" ; const char tombol[] PROGMEM =" \r Tombol Ditekan \r" ; const char led1on[] PROGMEM =" \r LED 1 ON \r" ; const char led1off[] PROGMEM =" \r LED 1 OFF \r" ; const char led2on[] PROGMEM =" \r LED 2 ON \r" ; const char led2off[] PROGMEM =" \r LED 2 OFF \r" ; int led1, led2 ; //variabel untuk led
Inisialisasi USART dari attiny2313
void init_usart(void) { cli(); UCSRB |= (1 << RXEN) | (1 << TXEN); // kirim & terima UCSRC |= (1 << UCSZ0) | (1 << UCSZ1); UBRRL = BAUD_PRESCALE; UBRRH = (BAUD_PRESCALE >> 8); UCSRB |= (1 << RXCIE); //interupt serial usart sei(); }
Routine pengiriman text lewat progmem/flash memory
//function untuk mengirim text single void USART_Tx(unsigned char data) { while (!(UCSRA & (1<<UDRE)));{} // wait till transmit Data register is empty UDR = data; // Send data to the computer } //function untuk kirim kalimat void kirim_text(const char *data) { while (pgm_read_byte(data) != 0x00) USART_Tx(pgm_read_byte(data++)); }
Interupt saat menerima input data serial dari PC
ISR(USART_RX_vect) { char databyte; databyte = UDR; switch (databyte) // pemilah data yg diterima dari PC { case 0xD : { // jika yg diterima ENTER (0xD) kirim_text(menu) ; break; } case '1' : { //jika diterima karakter 1 if(led1 == 0) // jika kondisi awal 0 { PORTB ^=(1<<0); //toogle dari kondisi sebelumnya kirim_text(led1on) ;//kirim kalimat led1=1; } else { PORTB ^=(1<<0); //toogle dari kondisi sebelumnya kirim_text(led1off) ; //kirim kalimat led1=0; } break; } case '2' : { if(led2 == 0) // jika kondisi awal 0 { PORTB ^=(1<<1); //toogle dari kondisi sebelumnya kirim_text(led2on) ; //kirim kalimat led2=1; } else { PORTB ^=(1<<1); //toogle dari kondisi sebelumnya kirim_text(led2off) ; //kirim kalimat led2=0; } break; } } }
Interupt saat Tombol ditekan dan mengirim data ke PC
SIGNAL (SIG_INT0) { kirim_text(tombol); //kirim kalimat bahwa tombol ditekan }
Program utama / main
int main(void) { DDRB=0b11; //B0,B1 = Output ke led MCUCR |= (1<<ISC01) | (1<<ISC00) ; //inisialisai interupt 0 rise edge GIMSK |= (1<<INT0) ; // tombol ada di INT 0 led1=0; //kondisi awal led1 led2=0; //kondisi awal led2 init_usart(); kirim_text(menu) ; PORTB=0b00; // matikan LED while(1) //muter tiada henti { } return 0; }
Jika sudah di compile & didownload ke AVR, maka hubungkan output MAX232 ke PORT Serial PC ato port USB-serial Converter. Gunakan Hyperterminal/putty/secureCrt untuk melakukan koneksi ke COM PORT dari serial port/Usb-serial converter dengan setting BAUDRATE 9600bps
Video berikut menampilkan contoh komunikasi serial UART dan RS232 ke PC untuk mengontrol nyala LED dan membaca penekanan tombol.
0 komentar:
Posting Komentar