Namun, bukan error tersebut yang saya maksud. Ada error satu lagi yang disebabkan oleh paket bit data yang tidak pas dengan clock dari mikrokontroler. Paket bit data ini bergantung dari nilai baud rate dengan satuan bit per sekon. Untuk bisa mengetahui mengapa error tersebut bisa terjadi terlebih dahulu kita mengetahui format data dari UART.
Gambar di atas saya kutip dari datasheet AVR. Pada pengiriman data UART terdapat beberapa parameter yang dapat diatur yaitu start bit, parity bit, dan stop bit. Pengaturan ini harus sama antara pengirim dan penerima karena jika tidak maka data tidak akan diterima. Data yang dikirim adalah data berukuran 8 bit atau 1 byte. Jika ditambah dengan 3 parameter diatas maka total bit data yang dikirim adalah 11 bit. Dari format data inilah setiap data yang terbaca dapat diterjemahkan menjadi bit-bit yang merepresentasikan data tertentu.
Sebenarnya tidak semua terdapat error dalam pengiriman data UART. Terjadinya error hanya terjadi ketika kita menggunakan clock mikrokontroler untuk nilai tertentu saja. Pada paket data UART, clock yang dikirimkan bergantung dari nilai baud rate. Karena protokol ini universal, maka baud rate yang ada adalah nilai-nilai tetap yang tidak bisa diubah ubah dari kisaran nilai 110 sampai 11059200 bps (bit per sekon) atau lebih. Semakin cepat clock yang digunakan mikrokontroler/mikroprosesor maka baud rate akan semakin cepat juga.
Umumnya baud rate yang digunakan dalam pengiriman data antar mikrokontroler adalah 9600 bps. Karena dengan kecepatan pengiriman data ini sudah cukup. Kita akan menghitung error pada mikrokontroler dengan clock 11.059200 MHz. Sehingga register UBRR harus bernilai,
Sehingga nilai UBRR adalah 71. Sedangkan jika kita menggunakan clock yang berbeda yaitu 8 MHz, maka nilai register UBRR adalah 51.083. Nah inilah yang menyebabkan error pada pengiriman data UART. Kita akan coba menghitung error yang terjadi dengan membandingkan baudrate aktual dengan baudrate sebenarnya. Karena tipe data register UBRR bukan float maka nilai 51.083 dibulatkan menjadi 51. Sehingga kita dapat menghitung nilai aktual dari baud rate.
Diperoleh nilai baud rate-nya adalah 9615.38 bps. Dengan membandingkan nilai baud rate awal yaitu 9600 bps maka kita dapat menghitung error tersebut
Maka nilai persen error yang diperoleh adalah 0.160%. Hasil yang sama jika kita menggunakan AVR Calculator (coba di sini)
Nampaknya nilai error yang terjadi sangat kecil dan untuk terjadi error pada data yang dikirim juga akan jarang. Ya, untuk data-data yang tidak banyak ini tidak menjadi masalah yang berarti. Coba bayangkan untuk kasus di atas jika data yang dikirim sejumlah 8 Kbyte maka kemungkinan data error adalah sekitar 13 byte. Apa jadinya jika data yang dikirimkan adalah berupa data .hex untuk memory flash mikrokontroler. Bayangkan saja? Semoga bermanfaat.
0 comments:
Post a Comment