Copy of USART I

13
USART I/O Data Register – UDR Register UDR yaitu register yang berfungsi sebagai buffer atau tempat sementara dimana buffer data ini dipakai untuk data yang akan di kirim dan data yang akan di terima. Untuk transmitter, buffernya hanya dapat dipakai saat flag UDRE dalam kondisi high (1) di dalam register UCSRA. Pada register UDR mempunyai 1 byte yaitu 8 bit dimana terdapat UDR read dan write. Read yaitu RXB untuk receiver dan write yaitu TXB untuk transmitter. Untuk TXB dan RXB mempunyai alamat yang sama. Untuk RXB sebagai buffer/tempat data di terima sedangkan TXB untuk buffer/tempat data yang akan dikirim ke receiver. USART Control and Status Register A – UCSRA Register UCSRA adalah register yang terdiri dari 8 bit dimana register ini berfungsi untuk mengendalikan mode komunikasi dan juga dapat membaca status yang sedang terjadi di USART. Pada bit 0 adalah MPCM yaitu multi processor communication mode yang memiliki fungsi untuk mengaktifkan mode multi prosesor communication, sehingga saat mode ini di aktifkan maka ketika data yang di terima oleh USART dimana data tersebut tidak terdapat informasi alamatnya maka data tersebut akan di abaikan. Bit 1 yaitu U2X adalah double the USART transmission speed, yaitu memiliki fungsi untuk melibatkan boudrate yang akan digunakan, ini beroperasi pada mode operasi asinkron. Pada bit 2 yaitu PE adalah Parity Error dimama bit ini dapat mendeteksi terjadinya

Transcript of Copy of USART I

Page 1: Copy of USART I

USART I/O Data Register – UDR

Register UDR yaitu register yang berfungsi sebagai buffer atau tempat sementara dimana buffer

data ini dipakai untuk data yang akan di kirim dan data yang akan di terima. Untuk transmitter, buffernya

hanya dapat dipakai saat flag UDRE dalam kondisi high (1) di dalam register UCSRA. Pada register

UDR mempunyai 1 byte yaitu 8 bit dimana terdapat UDR read dan write. Read yaitu RXB untuk receiver

dan write yaitu TXB untuk transmitter. Untuk TXB dan RXB mempunyai alamat yang sama. Untuk RXB

sebagai buffer/tempat data di terima sedangkan TXB untuk buffer/tempat data yang akan dikirim ke

receiver.

USART Control and Status Register A – UCSRA

Register UCSRA adalah register yang terdiri dari 8 bit dimana register ini berfungsi untuk

mengendalikan mode komunikasi dan juga dapat membaca status yang sedang terjadi di USART. Pada bit

0 adalah MPCM yaitu multi processor communication mode yang memiliki fungsi untuk mengaktifkan

mode multi prosesor communication, sehingga saat mode ini di aktifkan maka ketika data yang di terima

oleh USART dimana data tersebut tidak terdapat informasi alamatnya maka data tersebut akan di abaikan.

Bit 1 yaitu U2X adalah double the USART transmission speed, yaitu memiliki fungsi untuk melibatkan

boudrate yang akan digunakan, ini beroperasi pada mode operasi asinkron. Pada bit 2 yaitu PE adalah

Parity Error dimama bit ini dapat mendeteksi terjadinya error parity jika terjadi error maka flag akan di

set 1 sedangkan jika tidak terjadi error maka flag akan di clearkan 0. Pada bit 3 yaitu DOR adalah data

overrun dimana fungsiny adalah untuk mendeteksi jika data menjadi overrun atau data tersebut tumpang

tindih jika terjadi demikian flag akan bernilai 1 tetapi jika tidak terjadi overrun maka flag akan bernilai 0.

Bit 4 yaitu frame error fungsinya sebagai penanda jika data yang di terima terjadi error jadi sebagai

contoh saat data di terima kemudian pada stop bit bernilai 0 maka flag frame error akan bernilai 1, flag

akan bernilai 0 saat stop bit tersebut bernilai 1.

Pada bit 5 adalah UDRE yaitu USART data register Empty dimana sebagai penanda isi dari UDR

jadi saat flag ini bernilai 1 maka UDR siap menerima data baru artinya UDR pada keadaan kosong

sebalikny jika flag bernilai 0 maka di dalam UDR masih terdapat data sehingga belum siap menerima

data baru. Bit 6 yaitu TXC adalah USART Transmit Complete adalah penanda dimana akan bernilai 1

Page 2: Copy of USART I

saat data yang di transmit telah keluar kemudian flag ini akan 0 saat data belum di kirimkan. TXC dapat

dipakai sebagai interupsi TX complet sehingga ketika bernilai 1 dan akan bernilai 0 secara otomatis

besamaan dapat mengeksekusi interrupt vector yang bersangkutan dan flag ini dapat dipakai sebagai

pooling data. Dan yang terakhir bit ke 7 adalah RXC atau USART receive complete dimana flag ini akan

bernilai 1 saat data berhasil masuk ke dalam UDR tetapi belum di baca, setelah di baca maka flag ini akan

0 dan UDR akan menjadi kosong. RXC dapat dipakai sebagai interupsi RX complet sehingga ketika

bernilai 1 dan akan bernilai 0 secara otomatis besamaan dapat mengeksekusi interrupt vector yang

bersangkutan dan flag ini dapat dipakai sebagai pooling data

USART Control and Status Register B – UCSRB

Register UCSRB terdiri dari 8 bit dimana berfungsi untuk mengaktifkan register-register seperti

receiver enable, transmitter enable, Data register empty enable. Bedanya dengan UCSRA dimana pada

UCSRA bit bit nya berisikan flag-flag sedangkan pada register ini untuk mengaktifkan dan

menonaktifkan. Pada bit 0 yaitu TXB8 adalah transmit data bit 8 yang berfungsi saat memakai format

data 9-bit sehingga bit ini harus ditulis terlebih dahulu sebelum kita menulis ke UDR. Bit 1 yaitu RXB8

atau receive data bit 8 adalah berfungsi saat memakai format data 9-bit sehingga bit ini harus ditulis

terlebih dahulu sebelum kita membaca UDR. Bit 2 yaitu UCSZ2 / character size digunakan untuk

memilih format character size yang akan digunakan. Bit 3 TXEN / transmitter enable berfungsi untuk

mengaktifkan pin TX dimana bernilai 1 untuk mengaktifkannya dan bernilai 0 untuk

menonaktifkan.tetapi saat kita mengaktifkan pin TX maka pin tersebut tidak dapat digunakan sebagai I/O.

bit 4 RXEN/ Receiver Enable berfungsi untuk mengaktifkan pin RX dimana bernilai 1 untuk

mengaktifkannya dan bernilai 0 untuk menonaktifkan.tetapi saat kita mengaktifkan pin RX maka pin

tersebut tidak dapat digunakan sebagai I/O. bit 5 UDRIE / USART Data register empty Interrupt enable

mempunyai fungsi untuk mengaktifkan interrupt data register empty dimana 1 untuk mengaktifkan dan 0

untuk menonaktifkan saat data yang kita tulis ke UDR tersebut telah di kirim maka UDR akan kosong

sehingga dapat membangkitkan interrupt data register empty tersebut. Bit 6 TXCIE / TX complete

interrupt enable yang mempunyai fungsi mengaktifkan interrupt TX complete dimana 1 untuk

mengaktifkan dan 0 untuk menonaktifkan saat data di kirim oleh UDR maka flag TXC akan bernilai 1

pada UCSRA sehingga dapat membangkitkan interruput TX complete tersebut. Bit 7 RXCIE / RX

complete interrupt enable yang mempunyai fungsi mengaktifkan interrupt RX complete dimana 1 untuk

mengaktifkan dan 0 untuk menonaktifkan saat data diterima UDR maka flag RXC akan bernilai 1 pada

UCSRA sehingga dapat membangkitkan interruput RX complete tersebut.

Page 3: Copy of USART I

USART Control and Status Register C – UCSRC

UCSRC atau USART control and status register ini beada dalam lokasi yang sama dengan register

UBRRH sehingga kedua register ini tidak dapat di pakai secara bersama-sama karena di atur oleh URSEL

pada bit 7. Dimana bit 7 atau URSEL Register select berfungsi untuk memilih antara UBRRH atau

UCSRC dimana jika di berikan 0 (diclear) maka membaca UBRRH sebaliknya jika di set (1) maka akan

mengakses register UCSRC. Bit berikutnya adalah UMSEL (USART mode select) bit 6 ini

menenentukan mode select yang di gunakan yaitu jika clear maka modenya adalah asynchronous dan jika

di set maka modeny adalah synchronous operation.

Bit 5 dan bit 4 adalah UPM1 dan UPM0 yaitu parity mode sehingga dapat memilih partiy mode yang

cocok untuk dipakai. Jika bit ini di pakai maka secara otomatis akan membangkitkan parity pada setiap

data-data yang dikirimkan dan juga dapat memeriksa data yang di terima. Jika bit parity tidak cocok/

tidak diperoleh maka pada register UCSRA tepatnya pada bit parity error akan di set. Untuk UPM1-

UPM0 : 0-0 maka mode parity tidak dipakai untuk 0-1 mode partiy akan di siapkan. Untuk 1-0 mode

parity di pakai dan bersifat parity genap sedangkan 1-1 mode parity di pakai dan bersifat parity ganjil.

USBS atau stopbit select pada bit 3 ini digunakan untuk dimana berfungsi untuk menentukan jumlah

stop bit yang akan digunakan jika USBS bernilai 0 maka stopbit yang di gunakan sebesar 1 bit sedangkan

bernilai 1 maka stop bit yang digunakan sebesar 2 bit. Stopbit ini dipakai untuk memvaliditas suatu data

tersebut.

Page 4: Copy of USART I

Bit 2 dan bit 1 adalah UCSZ1 dan UCSZ0 dimana UCSZ2 berada pada register UCSRB pada bit 2.

Fungsiny sama yaitu memilih character size yang akan di pakai yang hendak di kirim atau di terima

sehingga besarnya ditentukan oleh character size tersebut. Untuk menentukan character size maka dapat

di lihat pada table UCSZ bits setting di bawah ini.

UCPOL berada pada bit 0 UCPOL adalah clock polarity yang digunakan hanya pada mode

synkronus. Dimana pada bit ini berkaitan dengan adanya perubahan sample input, output data dan XCK

atau clock synkronus. Dapat di lihat UCPOl bit setting nya jika UCPOl bernilai 0 maka output TxD saat

rising XCK edge sebaliknya input RxD saat falling XCK edge. Dan jika UCPOL 1 maka output TxD saat

falling XCK edge dan intput RxD saat rising XCK edge

USART Baud Rate Registers – UBRRL and UBRRH

Register ini digunakan untuk menentukan baud rate yang akan di pakai. Register ini terdapat UBRRH

dan UBRRL tetapi untuk dapat mengakses UBRRH maka harus di setting pada register UCSRC.

Bit 15 yaitu register selecet URSEL digunakan untuk menentukan register mana yang akan di akses

jika ingin baru di clear jika ingin menggunakan rehister UBRRH. Pada bit 14 sampai bit 12 tidak di

gunakan tetapi harus di clear jika ingin menuliskan ke UBRRH. Pada bit 11 sampai 0 adalah USART

baud rate register yaitu UBRR jadi register ini memiliki besar 12 bit dimana dari bit tersebut dapat

mengatur baud rate yang akan di gunakan. Untuk lebih jelasnya dapat melihat table baudrate di bawah ini.

Sebagai contoh jika kita menggunakan frekuensi osilator 4.0000 Mhz maka kita menginginkan

baudratenya sebesar 9600 jadi memiliki kemungkinan error sangatlah kecil hanya 0.2% . dimana kita

Page 5: Copy of USART I

harus mengeset U2X=1 oleh karena itu jika di lihat UBRR nya dalah 47 maka kita dapat menggunakan

UBRRL = 47; sehingga baudrate yang di gunakan 9600 dengan error 0.2% pada frekuensi osilator 4 Mhz

Operasi ADC memerlukan Vref dan clock Fad. Untuk tegangan pada pin Aref harus di

bawah dari tegngan Avcc. Jika kita menggunakan port A sebagai ADC maka port A tidak dapat

digunakan sebagai I/O. hasil dari ADC dapat kita hitung dengan menggunakan rumus. Jika kita

menggunakan resolusi sebesar 10 bit maka rumusny adalah ADC = (Vin/Vref)x1024 sedangkan

untuk resolusi sevesar 8 bit rumusnya adalah ADC = (Vin/Vref)x256 sebagai contoh jika kita

menggunakan ADC dengan resolusi 8 bit dimana V in=2500mV dan Vref = 2560mV maka hasil

ADC ny adalah (2500mV/2560mV)x256=250 atau 0xFA sehingga hasil digitalny adalah 0xFA.

Resolusi pada AVR adalah hal yang menentukan seberapa bagus sampling yang di dapat

dimana menunjukkan banyaknya nilai diskrit yang di dapat dari tegangan tertentu dimana di

nyatakan dalam bit resolusi juga di katakan rentang sinyal analog yang di dapat ddan dinyatakan

ke dalam bilangan digital sehingga besar resolusi tersebut sebanding dengan 2^n dimana n

tersebut adalah jumlah bit output digital maka semakin besar jumlah bit tersebut maka resolusi

akan semakin bagus juga. Sebagai contoh jika kita mempunay Vref : 5v dan menggunakan

resolusi 8 bit maka 8 bit di sini = 2^8 = 256 jadi dimulai dari 0 sampai 255 jika tegangan yang di

dapat 5v maka hasil ADC adalah 255 jika tegangan melebihi Vref maka ADC akan menghitung

hasilnya adalah 255. Beberapa register yang harus di setting terlebih dahulu sebelum

menggunakan ADC dimana register tersebut adalah ADMUX / ADC Multiplexer selection

register, ADCSRA / ADC control and status register A, ADCL & ADCH / The ADC data

register, dan SFIOR/Special function IO register. Vref atau tengangan refrensi merupakan

tegangan refrensi ADC yang berfungsi sebagai tegangan acuan terhadap sinyal dimana jika

resolusi 8 bit memiliki nilai berkisar 0-255 dan Vref : 2v jika pada pin ADC di berikan tegangan

3v maka hasil ADC tersebut adalah 255 karena acuan tegangan nya adalah 2v. tegangan refrensi

juga di sebut batas maksimal level tegangan input analog atau dengan kata lain Vref merupakan

tegangan yang akan menjadi acuan dalam melakukan convert dari analog ke digital.

ADMUX / ADC Multiplexer selection register

Page 6: Copy of USART I

Pada bit 7 dan 6 adalah REFS1 dan REFS0 yaitu refrence selection bit dimana

mempunyai fungsi untuk memilih Vref yang akan di gunakan. Jika REFS1 – REFS0 = 0-0 maka

AREF, internal Vref di matikan jadi pin AREF sebagai Vref sehingga kita harus memberikan

tegangan pada pin ini. Jika 0-1 maka AVcc dengan kapastior ekternal di pin AREF jadi pin aref

akan di hubungkan pada pin avcc dengan syarat harus menggunakan kapasitor pada pin avcc

agar menstabilkan tegangan, 1-0 adalah reserved dan 1-1 Vref internal sebesar 2.56v dengan

menggunakan kapasitor eksternal pada pin AREF kado aref ,emggumalam tegangan internal

yaitu 2.56v tetapi dengan syarat harus mendambahkan kapasitor pada pin aref agar dapat di baca

tegangannya adalah 2.56v. Kemudian bit ke 5 adalah ADLAR/ADC left adjust result dimana

akan membaca ny dari kiri ke atas dari hasil ADC. Untuk bit 4 sampai 0 adalah MUX4:0 /

analog channel selection bit dimana bit ini berfungsi untuk menentukan jalur input untuk ADC.

ADCSRA / ADC control and status register A

Bit 7 yaitu ADEN/ADC enable berfungsi untuk mengaktifkan ADC dimana ADEN=1

untuk enable dan sebaliknya ADEN=0 untuk disable. Bit 6 yaitu ADSC/ADC start conversion

digunakan untuk melakukan pengambilan data dimana jika selesai mengambil data akan bernilai

0 dan saat ambil data maka bernilai 1. Di dalam mode konversi tunggal maka start conversion

ADC hanya terjadi sekali konversi. Sebaliknya pada free running start conversion di lakukan

Page 7: Copy of USART I

secara kontinyu. bit berikutnya yaitu bit 5 adalah ADFR/ ADC free running select bit ini

berfungsi untuk memilih mode dari ADC. Jika di set maka akan menggunakan mode free

running dimana akan selalu di sample dan di update secara kontinyu. dan jika di clear maka

mode free running tidak di gunakan dan kembali ke single conversion. Bit 4 ADIF/ADC

interrupt flag akan bernilai 1 saat konbersi ADC complete. Dan clear jika eksekusi interrupt

ADC conversion complete. Untuk bit 3 ADIE/ADC interrupt enable digunakan untuk

mengaktifkan interrupt ADC conversion complete untuk mengaktifkannya cukup di set jika

menonaktifkan cukup di clear. Bit 2 sampai 0 adalah bit yang digunakan untuk menentukan

besar prescaler atau faktor pembagi frekuensi CPU yang di gunakan untuk clock ADC karena

clock pada ATmega8535 sangat inggi hingga 16Mhz sehingga di perlukannya prescaler untuk

menurunkan frekuensi tersebut yang akan di pakai oleh ADC. Dimana presclaer ini terbuat dari

beberapa flip-flop saja sehingga bit ini dinamakan ADPS2:0 / ADC prescaler select bits.

ADCL & ADCH / The ADC data register

ADCL dan ADCH merupakan kumpulan bit-bit yang berisi hasil dari konversi dari

analog ke digital tersebut. Saat ADCL di baca maka ADC data register tidak dapat di update

Page 8: Copy of USART I

sampai ADCH tersebut di baca sehingga jika hasilnya left adjusted dan tidak lebih dari 8 bit

maka cukup untuk membaca ADCH saja. Jadi jika kita ingin menggunakan resolusi 8 bit

disarankan untuk menggunakan ADLAR = 1 dan menggunakan ADCH saja. Jadi bit ADLAR

juga memperngaruhi ADC data register mana yang akan kita gunakan.

SFIOR/Special function IO register

Pada bit 7 sampai 5 yaitu ADTS2:0 /ADC autotriger dimana jika ADATE di ADCSRA di

tulis 1 . tetapi jika ADATE tersebut di clear (0) maka ADTS2:0 ditdak memiliki effect

apa=apa.bit ini juga dapat mengatur trigger dari operasi ADC. Dimana mode-mode trigger

tersebut dapat dilihat pada table di atas. conversion akan di trigger risig edge maka akan terjadi

interrupt flag. Pad abit 4 tidak di gunakan dan selalu bernilai 0. Pada bit 3 sampai 0 bit ini tidak

di gunakan dalam proses ADC.

Mode-mode operasi pada ADC di AVR terdapat 2 mode operasi yaitu mode operasi

single conversion dan mode operasi free running. Mode operasi single converision adalah mode

dimana pembacaan sample tengan input yanf di dapat hanyalah sekali. Sehingga jika pada mode

operasi ini kita dapat melakukan sample sesuai dengan kenginnan kita. Jika kita ingin

melakukan sample lagi maka kita dapat mengkonversi tengangan input untuk setiap saat yang di

butuhkan. Mode operasi single conversion ini diaktifkan dengan cara clear kan bit ADFR di

dalam register ADCSRA sehingga ADFR = 0. Mode ini beroperasi saat bit ADSC di berikan

nilai 1 dan tetap bernilai 1 hingga konversi tersebut complete. Setelah complete bit ADSC akan

secara otomatis bernilai 0. Mode operasi free running yaitu mode dimana melakukan konversi

secara kontinyu yaitu secara terus menerus dimana ADC akan membaca sample tegangan input

Page 9: Copy of USART I

yang di dapat kemudan di konversi dan hasilnya tersebut di masukkan ke ADCH:ADCL. saat

kita membaca ADC pada saat ADC tersebut sedang mengkonversi maka yang di baca adalah

hasil ADC yang terakhir di baca oleh ADC tersebut. Untuk mode operasi free running

mengaktidkan nya dengan cara bit ADFT di berikan nilai 1 dalam register ADCSRA. Sehingga

mode ini bekerja secara independen dari flag interrupt ADC makusnya adalah walaupun ADIF

bernilai 1 ataupun 0 maka mode ini tetap berjalan.