materi 2

15
Pengetahuan Dasar Pemrograman USART (serial komunikasi) AVR Microcontroller JUL 4 Posted by pccontrol AVR USART (Universal Synchronous Asynchronous Receiver Transmitter) adalah komunikasi serial dua arah yang terdapat di AVR yang melibatkan register register sbb: 1. Register Data (UDR), menyimpan data yg dikirim dan diterima. 2. Register Control (UCSRA,UCSRB danUCSRC) • Bit 7 – RXC: USART Receive Complete

Upload: anang-prasetyo

Post on 20-Jan-2016

35 views

Category:

Documents


0 download

DESCRIPTION

Makalah AVR

TRANSCRIPT

Page 1: Materi 2

Pengetahuan Dasar Pemrograman USART (serial komunikasi) AVR MicrocontrollerJUL 4

Posted by pccontrol

AVR USART (Universal Synchronous Asynchronous Receiver Transmitter) adalah komunikasi

serial dua arah yang terdapat di AVR yang melibatkan register register sbb:

1. Register  Data (UDR), menyimpan data yg dikirim dan diterima.

2. Register Control (UCSRA,UCSRB danUCSRC)

• Bit 7 – RXC: USART Receive Complete

RXC  otomatis akan bernilai  1, jika ada data baru di bufer penerima. RXC otomatis akan

bernilai 0, jika data sudah dibaca atau bufer penerima kosong.

• Bit 6 – TXC: USART Transmit Complete

Page 2: Materi 2

TXC otomatis akan bernilai 1, jika data di buffer selesai dikirim.

• Bit 5 – UDRE: USART Data Register Empty

UDRE  otomatis akan bernilai 1 , jika register  UDR kosong . receiver siap menerima data.

UDRE=0, UDR ada isinya .

• Bit 4 – FE: Frame Error

FE  otomatis akan bernilai  1, jika ada frame  eror.

• Bit 3 – DOR: Data OverRun

DOR otomatis akan bernilai 1, jika data datang ketika bufer penuh(terjadi antrian).

• Bit 2 – PE: Parity Error

PE otomatis akan bernilai 1, jika terjadi parity eror.

• Bit 1 – U2X: Double the USART Transmission Speed

kita set U2X=0, kecepatan normal. U2X=1  kecepatan 2xbaudrate.

• Bit 0 – MPCM: Multi-processor Communication Mode

kita set MCM=1  byte pertama yg diterima  harus 9 bit , jika tdk data byte akan diabaikan.bit

ini terjadi hanya untuk penerimaan saja pd komunikasi banyak microcontroller.

• Bit 7 – RXCIE: RX Complete Interrupt Enable

kita set RXCIE=1 , interupsi receive complete aktif.

• Bit 6 – TXCIE: TX Complete Interrupt Enable

kita set TXCIE=1, interupsi transmit complete aktif.

• Bit 5 – UDRIE: USART Data Register Empty Interrupt Enable

kita set UDRIE=1,  interupsi UDRE aktip.

• Bit 4 – RXEN: Receiver Enable

kita set RXEN=1, USART receiver aktif. micon bisa mnerima data.

• Bit 3 – TXEN: Transmitter Enable

Page 3: Materi 2

kita set TXEN=1, Usart Transmiter aktif. micon bisa mengirim data.

• Bit 2 – UCSZ2: Character Size

kita set UCSZ2:UCSZ1:UCSZ0 = 011 ,  panjang data 8 BIT. (bit UCSZ1 dan UCSZ0  ada di

register UCSRC)

• Bit 1 – RXB8: Receive Data Bit 8

RXB8 menjadi bit ke-9 jika panjang data yg diterima 9 bit .

• Bit 0 – TXB8: Transmit Data Bit 8

TXB8 menjadi bit ke-9 jika panjang data yg dikirim 9 bit.

• Bit 7 – URSEL: Register Select . memilih UCSRC atau UBRRH

kita set URSEL=1 , UCSRC aktif  ,UBRRH tdk aktif,

kita set URSEL=0 , UBRRH aktif ,  UCRSC tdk aktif.

• Bit 6 – UMSEL: USART Mode Select

kita set UMSEL=1 , mode synceonous. UMSEL=0 mode asyncronous

• Bit 5:4 – UPM1:UMP0:    Parity Mode

kita set :

Page 4: Materi 2

• Bit 3 – USBS: Stop Bit Select

kita set USBS=0, stop bit =1 bit ,  USBS=1 panjang stop bit = 2 bit.

• Bit 2:1 – UCSZ1:0: Character Size

kita set UCSZ2:UCSZ1:UCSZ0 = 011 ,  panjang data 8 BIT.  (bit UCSZ2 ada di register

UCSRB)

• Bit 0 – UCPOL: Clock Polarity  bit ini digunakan untuk mode syncoronous saja.

kita set UCPOL=0 trnasmisi clock naik, UCPOL=1 transmisi clock turun. (khusus yg ini don’t

care krn kita menggunakan mode asyncronous)

Detail penjelasan tiap bit pd register register di atas ada disini

3. Register  8 bit UBRRH dan 8 bit UBRRL , menyimpan parameter baudrate  16 bit

UBRR register.  Rumus untuk menghitung nilai UBRR adalah sbb:

Contoh menghitung nilai UBRR :   diketahui baudrate = 9600  dan frekwensi cristal yg

digunakan  11.059.200 hz , berapa nilai UBBRH dan UBRL nya?

UBRR =  ( (11.59200)/(16*9600) ) – 1 = 71.

Page 5: Materi 2

maka nilai UBRR adalah 71 atau 0047H. (dlm bentuk 16 bit hexa). penulisan nilai  UBRR di

program (ke dlm register UBRRH dan UBRRL)  menjadi:

UBRRH=0×00;

UBRRL=0×47;

Tips Pemilihan nilai frekwensi Xtal

nilai UBRR adalah integer ,  maka pilih lah nilai frekwensi  xtal yg menghasilkan perhitungan

integer .  misal contoh diatas saya ganti nilai Xtalnya jadi 8 Mhz ,baudrate 9600.  maka nilai

UBRR nya jadi 51,0833   yg dimasukan ke UBRR adalah 51.  nilai ini akan menghasilkan

kemungkinan komunikasi  eror  sebesar0,2%. sedangkan jika menggunakan Xtal 11.059200

erornya 0%.

Cara lain untuk meseting nilai UBRR adalah dgn menuliskan rumus perhitungan UBRR ke

code program   biarkan compiler yg menghitung nilai UBRR,,  seperti contoh berikut ini:

1234567891

#define Frekwensi_Xtal 11059200// Clock Speed #define BAUDRATE 9600 #define MYUBRR  (Frekwensi_Xtal/(16*BAUDRATE))-1 void main( void ) { ... USART_Init ( MYUBRR ); ... } void USART_Init( unsigned int ubrr) {

Page 6: Materi 2

0111213141516

 /* Set baud rate  ubrr= 0047  */ UBRRH = (unsigned char)(ubrr>>8);    //UBRH=00 UBRRL = (unsigned char)ubrr;               //UBRRL=47 }

USART harus diinisialisasi sebelum komunikasi dilakukan. Proses inisialisasi

biasanya terdiri dari pengaturan baud rate, pengaturan format frame dan

mengaktifkan(enable) Transmitter atau Receiver/Penerima tergantung pada penggunaan.

Untuk operasi USART dgn interupsi, Global Interrupt Flag harus diclearkan  (dan interupsi

dinonaktifkan secara global) ketika melakukan inisialisasi.

Bit Flag  TXC dapat digunakan untuk memeriksa bahwa Transmitter telah menyelesaikan

semua transfer, dan bit flag RXC dapat digunakan untuk memeriksa bahwa tidak ada data

yang belum dibaca dalam  buffer penerima.  Perhatikan bahwa Flag TXC harus diclearkan

sebelum pengiriman (sebelum UDR ditulis) jika digunakan untuk pengiriman.

Berikut ini contoh inisialisasi dan program penerimaan dan pengiriman dgn AVR USART.

Pemrograman AVR USART dgn AVR  Studio

Pemrograman USART dgn codevision

Pada pemrograman dgn codevision anda tdk perlu pusing  menghitung nilai register control

UCSR dan register UBRR , cukup gunakan tool codewizard.

klik Tools ->Codewizard  , pilih tab USART sbb:

Page 7: Materi 2

Setelah  USART anda  setting sesuai kebutuhan pd tab USART , code template dan nilai

seting register register USART otomatis akan dibuatkan oleh codevision setelah anda

mengklik menu generate,save and exit , hasilnya  seperti  dibawah ini :

#include <mega32.h>

#define RXB8 1

#define TXB8 0

#define UPE 2

#define OVR 3

#define FE 4

#define UDRE 5

#define RXC 7

#define FRAMING_ERROR (1<<FE)

#define PARITY_ERROR (1<<UPE)

#define DATA_OVERRUN (1<<OVR)

#define DATA_REGISTER_EMPTY (1<<UDRE)

#define RX_COMPLETE (1<<RXC)

Page 8: Materi 2

// USART Receiver buffer

#define RX_BUFFER_SIZE 8

char rx_buffer[RX_BUFFER_SIZE];

#if RX_BUFFER_SIZE<256

unsigned char rx_wr_index,rx_rd_index,rx_counter;

#else

unsigned int rx_wr_index,rx_rd_index,rx_counter;

#endif

// This flag is set on USART Receiver buffer overflow

bit rx_buffer_overflow;

// USART Receiver interrupt service routine

interrupt [USART_RXC] void usart_rx_isr(void)

{

char status,data;

status=UCSRA;

data=UDR;

if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)

{

rx_buffer[rx_wr_index]=data;

if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;

if (++rx_counter == RX_BUFFER_SIZE)

{rx_counter=0;

rx_buffer_overflow=1; };

//Ketik data anda disini

};

}

// USART initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity

// USART Receiver: On (RXEN=1)

// USART Transmitter: On (TXEN =1)

// Receive interupt aktif (RXCIE=1)

// USART Mode: Asynchronous (UMSEL=O)

// USART Baud rate: 9600

Page 9: Materi 2

UCSRA=0×00;

UCSRB=0×98;     //10011000

UCSRC=0×86;     //10000110

UBRRH=0×00;

UBRRL=0×47;

// Global enable interrupts  ”sei” , sebaliknya “cli” clear interupt.

#asm(“sei”)

while (1)

{

// Place your code here

};

}

About these ads Rate this:

      Rate This

Share this:

Reddit

Email

Facebook

Print

Google

LinkedIn

Like this:

Related

Pengetahuan Dasar ADC AVR microcontrollerIn "AVR"

Contoh Master Modbus dengan Bascom AVRIn "Contoh-contoh Aplikasi"

Contoh pemrograman AVR dgn sensor SHT11In "Contoh-contoh Aplikasi"

Page 10: Materi 2

About pccontrolBerisi Tutorial Menggunakan PC untuk mengontrol Peralatan dengan cara mudah & praktis.

View all posts by pccontrol »

Posted on 4 July 2013, in AVR, Pemrograman C untuk AVR dgn CodeVision. Bookmark the permalink. 1

Comment.

← Pengetahuan Dasar Input Output dan Akses File pada Pemrograman Bahasa C Pengetahuan Dasar ADC AVR microcontroller →

LEAVE A COMMENT

COMMENTS (1)

1. bamz | 11 July 2013 at 10:16 AM

Mas bisa bantu ga ?

saya ad project membaca sht11 dengan at8535 hasil pembacaan di tampilkan ke

LCD 2×16 dan dikirim ke PC melalui jaringan LAN dengan modul DT-IO TCP IP to

UART…..

saya kbingungan bikin codingnya serta cara menerima data di PC…terima kasih

salam kenal…

Komentar ,Saran atau Pertanyaan

Fill in your details below or click an icon to log in:

(Address never made public)

( Log   Out  / Change )

( Log   Out  / Change ) ( Log   Out  / Change )

( Log   Out  / Change )

7642fde008 /2013/07/04/peng guest

Post Comment

3920 0 1385082290

Page 11: Materi 2

RECENT POSTS Contoh Master Modbus dengan Bascom AVR

Pengetahuan Dasar Membuat file library (*.Lib) pada C CodevisionAVR

Pengetahuan Dasar Pemrograman C untuk modul Arduino

Pengetahuan Dasar ADC AVR microcontroller

Pengetahuan Dasar Pemrograman USART (serial komunikasi) AVR Microcontroller

Pengetahuan Dasar Input Output dan Akses File pada Pemrograman Bahasa C

Pengetahuan Dasar Membuat Class Library ( file berektensi *.dll) dgn C#

Contoh Program Dasar Menggambar Garis dan Kotak di C#

Pengetahuan Dasar ADO.NET C# untuk Pemrograman Database

Pengetahuan Dasar Menyolder

CATEGORIES Contoh-contoh Aplikasi (20)

Daftar isi (3)

Dasar (26)

Dasar-1 (10)

elektronika-dasar (7)

komputer-dasar (3)

Dasar-2 (11)

Dasar Basisdata (Database) (5)

Dasar Pemrograman (6)

Dasar-3 (3)

Arduino (1)

AVR (2)

Dasar-4 (3)

Lanjut (5)

Lanjut-1 (5)

Latihan (12)

Pemrograman C AVR Studio (4)

Pemrograman C untuk AVR dgn CodeVision (3)

Pemrograman C# ( si sharp) (5)

Menengah (41)

Menengah-1 (15)

Menengah-2 (5)

Menengah-3 (21)

df0abd94df 1385082393399

Page 12: Materi 2

Tips & Trik (36)

Xpert (2)

Xpert-1 (2)

ARTIKEL SERING DIBACA Pengetahuan Dasar UML (dasar membuat diagram class, Use case diagram, digram activity,

diagram sequence dll )

Pengetahuan Dasar Diagram Use Case

Rangkaian(skematik) sederhana untuk Sensor Gerak .

Pengetahuan Dasar Analisis dan Desain Sistem (informasi)

Diskusi / Tanya-Jawab

Pengetahuan Dasar IP Camera ( Apa bedanya dgn CCTV?)

Kenapa, buat siapa, tujuannya apa?

Pengetahuan Dasar Pemrograman C untuk modul Arduino

Pengetahuan Dasar mengirim-menerima SMS melalui Mikrokontroler ( dgn AT Command

modem GSM)

Pengetahuan Dasar penggunaan Timer Counter Microcontroller AVR

CARI ARTICLE

Search for:

PENGUNJUNG SEJAK APRIL 2011

322,346 halaman dilihat

BLOG TEMAN Bosgentongs

elektro-kontrol

kelas-mikrokontroller

jejak langkah

mbah katro

mbah katro2

dhani avr

Go

Page 13: Materi 2

negeri info

Depok Instruments

Prasimax Depok

Suvenir Nikah

Kelas Mikrokontrol

Blog at WordPress.com. The Mystique Theme.

<div style="display: none;"><img src="//pixel.quantserve.com/pixel/p-18-mFEk4J448M.gif?labels=language.en%2Ctype.wpcom%2Cwp.loggedout%2Cas" height="1" width="1" alt="" /></div> Follow

Follow “Mengontrol peralatan dgn Komputer”

Get every new post delivered to your Inbox.

Join 47 other followers

Powered by WordPress.com

<img src="http://stats.wordpress.com/b.gif?v=noscript" style="height:0px;width:0px;overflow:hidden" alt="" />

subscribe 17759348 http://pccontrol.w loggedout-follow 3bcf115e3d /2013/07/04/peng

Sign me up

6LcYW8MSAAAA Send Email