UDR
adalah register yang paling penting
dalam komunikasi serial ini. Sebab data yang dikirim keluar harus ditempatkan
pada register ini, sedang data yang diterima dari luar dapat dibaca pada
register ini pula.
Seperti yang dapat dilihat pada
gambar, sejatinya UDR adalah terdiri dari 2 buah register terpisah, dengan
alamat dan nama yang sama, yakni UDR. Saat kita menulis data pada UDR ini,
maka sebenarnya kita menulis data pada UDR (write) yang kemudian USART mem-frame
dengan bit-bit frame dan segera akan segera mengirimkan data tersebut secara
serial. Saat kita membaca UDR, sebenarnya kita adalah membaca UDR (read). Data
yang diterima secara serial akan disimpan dalam register tersebut, setelah
hadirnya stop bit, maka USART akan membuang frame dan menyiapkan data pada
UDR(Read ) sehingga dapat segera di ambil. Kita dapat menggunakan instruksi OUT
dan IN untuk menulis dan membaca register UDR ini.
adalah register yang penting.
Sebegian besar adalah berisi status dari dari proses transfer komunikasi serial
itu sendiri. Adapun penjelasan dari bit-bit tersebut adalah..
• Bit 7 – RXC: USART Receive
Complete
Bit ini menjadi tinggi jika ada data
yang masih belum diambil atau dibaca di dalam buffer penerima ( UDR-read ). Bit
ini akan otomatis rendah setelah buffer penerima telah dibaca.
Jika Unit Penerima tiba-tiba
dimatikan setelah diaktifkan, maka isi dalam buffer penerima akan langsung
dibuang (flushed) dan bit RXC ini akan langsung dibuat rendah. Bit ini juga
bisa mengaktifkan instrupsi “Receive Complete interrupt ”. Lihat
penjelasan tentang bit RXCIE.
• Bit 6 – TXC: USART Transmit
Complete
Bit ini akan otomatis tinggi saat
semua frame dalam shift-register pengiriman telah digeser semuanya keluar dan
jika tidak ada data baru yang berarada dalam buffer pengiriman (UDR-write). Bit
TXC ini akan otomatis rendah setelah “Transmit Complete interrupt ”
dijalankan, atau dengan meng-clearkan secara manual dengan cara menulis bit ini
dengan nilai 1’s (tinggi). Bit TXC ini pula dapat membangkitan “Transmit
Complete interrupt ”. Lihat penjelasan tentang bit TXCIE .
• Bit 5 – UDRE: USART Data Register
Empty
Bit UDRE ini adalah untuk menjadikan
tanda jika buffer pengiriman (UDR-write) telah siap untuk diberikan data baru.
Bit ini akan bernilai 1 (tinggi) , berarti kita saat itu boleh menulis UDR. Bit
ini dapat membangkitkan UDRIE atau “Data Register Empty interrupt ”. Lihat
penjelasan tentang bit UDRIE .
Bit ini setelah reset langsung
bernilai 1, yang berarti siap untuk melakukan pengiriman.
• Bit 4 – FE: Frame Error
Bit ini otomatis menjadi tinggi jika
saat menerima data, ternyata ada kesalahan dari frame yang diterima. Misalnya
saat Unit penerima seharusnya menunggu sebuah bit Stop, ternyata data yang ada
adalah 0 (rendah). Bit ini valid setelah kita membaca UDR. Harap selalu menulis
bit ini dengan 0 (rendah ) saat kita sedang menulis UCSRA.
• Bit 3 – DOR: Data OverRun
Bit ini akan menjadi tinggi saat
kondisi overrun terjadi. Kondisi ini terjadi saat buffer penerima sudah
penuh dan berisi 2 data karakter, dimana data karakter terakhir tidak bisa
dipindahkan ke UDR-read, karena tidak kunjung dibaca oleh user. Bit ini valid
setelah kita membaca UDR. Harap selalu menulis bit ini dengan 0 (rendah ) saat
kita sedang menulis UCSRA.
• Bit 2 – PE: Parity Error
Bit ini akan menjadi tinggi saat
karakter yang sedang diterima ternyata memiliki format parity yang salah. Tentu
saja hal ini terjadi jika bit parity checking diaktifkan (UPM1 = 1). Bit
ini valid setelah kita membaca UDR. Harap selalu menulis bit ini dengan 0
(rendah ) saat kita sedang menulis UCSRA.
• Bit 1 – U2X: Double the USART
Transmission Speed
Bit ini hanya berlaku untuk operasi
tak sinkron (asynchronous). Jika bit ini kita tulis dengan 1’s (tinggi) maka
baud rate akan menjadi lebih cepat 2 kali. Hal itu terjadi karena pembagi baud
rate yang biasanya membagi 16 kemudian menbagi menjadi dengan 8 saja.
Tulis bit ini dengan 0’s (rendah)
untuk oprasi sinkron (synchronous).
• Bit 0 – MPCM: Multi-processor
Communication Mode
Bit ini digunakan untuk mode
komunikasi Multi-Prosesor. Saat bit PMCM ini dibuat menjadi tinggi maka setiap
data yang diterima oleh unit penerima, namun tidak dilengkapi dengan informasi
alamat, data yang benar, maka akan diabaikan. Bit ini hanya berguna untuk
penerima, dan bukan untuk pengirim. Untuk penjelasan lebih jauh lihat pada
halaman 158, yakni “Multi-processor Communication Mode”.
adalah register yang penting.
Sebagian besar adalah berisi status dari dari proses transfer komunikasi serial
itu sendiri. Adapun penjelasan dari bit-bit tersebut adalah..
• Bit 7
– RXCIE: RX Complete Interrupt Enable
Menulis bit ini menjadi tinggi akan
mengaktifkan instrupsi yang berkaitan dengan bit RXC. "USART Receive
Complete interrupt"
akan terjadi hanya jika bit RXCIE ini dan bit I (Global Inteurpt) milik
register SREG adalah 1's (Tinggi), dan ada tingginya bit RXC milik UCSRA.
• Bit 6
– TXCIE: TX Complete Interrupt Enable
Menulis bit ini menjadi tinggi maka
akan mengaktifkan interupsi pada bit TXC, yakni "USART Transmit
Complete interrupt" yang akan menjalankan interupsi setiap frame dari
data pengiriman selasai dikirim atau dengan kata lain terjadi interupsi setiap
bit TXC menjadi tinggi. Interupsi hanya bisa terjadi jika sebelumnya bit TXCIE
ini di-set tinggi dan bit Global Interupt ( I) milik register UCSRA juga di-set
tinggi.
• Bit 5
– UDRIE: USART Data Register Empty Interrupt Enable
Menulis bit ini menjadi tinggi maka
akan mengaktifkan interupsi pada bit UDRE, yakni "Data Register Empty
interrupt" yang akan menjalankan interupsi saat data pada buffer
pengiriman sudah kosong atau dengan kata lain setiap bit UDRE menjadi tinggi.
Interupsi hanya bisa terjadi jika sebelumnya bit UDRIE ini di-set tinggi dan
bit Global Interupt ( I) milik register UCSRA juga di-set tinggi.
• Bit 4
– RXEN: Receiver Enable
Agar unit penerima dari USART dapat
bekerja, maka bit RXEN ini harus dibuat tinggi sebelumnya. Begitu dibuat
tinggi, pin RxD akan diputus sebagai standar I/O dan dihubungkan dengan unit
penerima USART ini. Namun jika tiba-tiba bit RXEN ini dibuat rendah kembali
setelah tadinya tinggi, maka unit penerima USART akan segera menghentikan
kerjanya dan membatalkan proses penerimaan data, serta membersihkan buffer
penerimaan, termasuk juga bit FE, DOR, dan PE.
• Bit 3
– TXEN: Transmitter Enable
Agar unit pengirim USART dapat
bekerja, maka bit TXEN ini harus dibuat tinggi sebelumnya. Begitu dibuat
tinggi, pin TxD akan diputus dari standar I/O dan dihubungkan dengan unit
pengirim USART ini. Namun jika tiba-tiba bit TXEN ini dibuat rendah kembali
setelah tadinya tinggi, maka unit pengirim USART masih harus menyelesaikan
tugasnya yang terakhir, yakni mengirim data yang tersisa. Baru kemudian iUnit
pengiriman USART akan berhenti dan mengembalikan port TxD menjadi standar I/O
kembali.
• Bit 2
– UCSZ2: Character Size
Bit ini adalah pasangan dari Bit
UCSZ1 dan bit UCSZ0 milik register UCSRC, untuk menentukan jumlah data yang
hendak ditransfer. Lihat Table 4.
• Bit 1
– RXB8: Receive Data Bit 8
Jika kita menggunakan format
penerimaan data 9-bit maka bit yang terakhir yang diterima akan ditempatkan
pada bit RXB8 ini. Pabrik menyarankan untuk membaca bit ini terlebih dahulu
sebelum membaca 8-bit data lainnya di UDR.
• Bit 0
– TXB8: Transmit Data Bit 8
Jika kita menggunakan format
pengiriman data 9-bit maka bit yang terakhir yang hendak dikirim ditempatkan
pada bit TXB8 ini. Pabrik menyarankan untuk menulis bit ini terlebih dahulu
sebelum menulis 8-bit data lainnya di UDR.
regsiter ini adalah register
penting, untuk melakukan kontrol pada peralatan USART kita. Namuin jika kita
tidak menggunakan fungsi USART, maka kita boleh mengabaikan register ini
seperti dalam keadaan resetnya. dengan nilai $96, yang berarti bahwa kita
meggunakannya sebagai UART, Parity-none, 1 stop bit, ukuran data 8-bit (UCSZ2 =
0).
Catatan : Register UCSRC adalah
berbagi alamat I/O yang sama dengan register UBBRH. Lihat bagaimana mengakses
UBBRH dan UCSRC pada “Accessing UBRRH/UCSRC Registers” untuk mendapatkan
penjelasan lebih lengkap.
• Bit 7
– URSEL: Register Select
Saat kita hendakmenulis port $20
maka ada dua register yang akan kita akses, yang ditentukan dari D7 dari data
yang kita tuliskan. Jika D7 (MSB) adalah 1 atau datanya diatas $80 maka kita
sedang menuliskan data pada UCSRC. Sedang jika data yang hendak
dituliskan adalah dibawah $80, maka kita sedang menulis UBRRH. Bagaimana saat
membaca UCSRC, pastikan sebelumnya bit ini dalam keadaan tinggi sebelumnya
membaca lokasi $20 ini.
• Bit 6
– UMSEL: USART Mode Select
Bit ini untuk memilih USART
dijadikan mode Taksinkron (Asynchronous) atau Sinkron (Synchronous)
Table 1 Pengaturan Mode operasi
• Bit
5:4 – UPM1:0: Parity Mode
Bit-bit ini adalah untuk
menghidupkan pembangkit dan pemeriksa parity. Jika diaktifkan maka akan
otomatis membangkitkan parity pada setiap data yang dikirimkan dan akan
memeriksa validitas parity dari setiap data yang diterima. Pada Unit penerima
kita akan mendapatkan parity yang diterima, kemudian parity tersebut akan
dibandingkan dengan status dari UMP0. Jika ternyata tidak cocok, maka bendera
bit PE (Parity Error) pada UCSRA akan diaktifkan.
Table 2 Pengaturan Parity
• Bit 3
– USBS: Stop Bit Select
Dengan membiarkan bit in menjadi 0
maka frame akan dilengkapi dengan Stop-bit selebar 1-bit. Sedang jika bit ini
ditulis tinggi, maka bit stop menjadi 2-bit. Stop bit sepanjang 2-bit ini
biasanya diperlukan bagi system lain yang terhubung dengan AVR akan memiliki
waktu yang cukup untuk memproses data yang baru saja diterimanya, dan sudah
berar-benar siap untuk menerima data berikutnya. Unit penerima USART tidak
menggunakan bit ini.
Table 3 Jumlah bit sebagai bit stop
• Bit
2:1 – UCSZ1:0: Character Size
Menentukan karakter dari data yang
hendak dikirimkan dan diterima haruslah merujuk pada bit-bit ini. Yakni bit
UCSZ1 dan bit UCSZ0 milik register ini. Ditambah dengan bit UCSZ2 pada register
UCSRB.
• Bit 0
– UCPOL: Clock Polarity
Bit ini hanya digunakan pada mode
Synchronous. Dalam mode ini akan direlasikan antara daya yang diterima dan data
yang dikirm dan disinkronkan dengan status dari XCX (synchronous clock).
Perhatikan tabel 5 untuk mendalami bagaimana singkronikasi terjadi untuk ujung
XCX (edge) yang berbeda dengan mengatur bit UCPOL ini.
Table 5 Pengaturan Polaritas dalam
mode Synchronous
akhirnya kita mendapati register
yang menentukan baud rate dari peralatan USART yang kita gunakan. Sebagaimana
biasanya, baud rate antara AVR (sumber) dan device target haruslah sama. Hal
ini menjadi sangat penting agar tidak ada transfer data palsu yang isinya
diluar kemauan kita.
Catatan : Register UBRRH adalah
berbagi alamat I/O yang sama dengan register UBBRH. Lihat bagaimana mengakses
UBBRH dan UCSRC pada “Accessing UBRRH/UCSRC Registers” untuk mendapatkan
penjelasan lebih lengkap.
• Bit 15
– URSEL: Register Select
Bit ini untuk memilih dalam
mengakses alamat port $20. Seperti yang kita tahu bahwa alamat port ini
dimiliki oleh 2 buah regsiter yang berbeda, yakni UBRRH dan UCSRC. Saat kita
hendak menulis UBBRH maka pastikan data bit MSB atau D7 harus rendah.
• Bit
14:12 – Reserved Bits
Bit ini tidak digunakan saat ini.
Mungkin akan digunakan pada produksi berikutnya. Oleh karena itu kita
disarankan untuk tidak menulisnya dengan nilai 1 pada bit-bit yang tidak
digunakan.
• Bit
11:0 – UBRR11:0: USART Baud Rate Register
Ini adalah merupakan register 12-bit
yang mana berisi dengan pengatur baud rate USART. Register ini adalah pasangan
dari register UBBRH dan UBRRL, dimana UBBRL berisi 8-bit LSB (bit-bit terbawah)
dan sisanya dimiliki oleh UBRRH. Mengubah nilai dari register ini saat
transmisi berlangsung, akan menyebabkan kesalahan transmisi, karena baud rate
akan langsung berubah seiring dengan berubahnya nilai dari register ini.
Tidak ada komentar:
Posting Komentar