Member baru? Bingung? Perlu bantuan? Silakan baca panduan singkat untuk ikut berdiskusi.

Welcome to Forum Sains Indonesia. Please login or sign up.

Desember 04, 2024, 06:28:27 AM

Login with username, password and session length

Topik Baru

Artikel Sains

Anggota
Stats
  • Total Tulisan: 139,653
  • Total Topik: 10,405
  • Online today: 43
  • Online ever: 1,582
  • (Desember 22, 2022, 06:39:12 AM)
Pengguna Online
Users: 0
Guests: 36
Total: 36

Aku Cinta ForSa

ForSa on FB ForSa on Twitter

[ASK] Komunikasi Serial

Dimulai oleh frans3q, Agustus 02, 2009, 06:10:37 PM

« sebelumnya - berikutnya »

0 Anggota dan 1 Pengunjung sedang melihat topik ini.

frans3q

Ajarin komunikasi serial dari dasar donk..... bingung nih.

pertama dari USART. beda nya Async sama yg Sync apa ya???
Terimakasih banyak buat tmn2 yg uda nambah IQ saya... :D

tAZZZ

Asyncronous itu tuh brarti gak sinkron (kan ada A nya), klo yang syncronous artinya sinkro
Async === ga sinkron, brarti sumber clocknya beda (misal komunikasi PC ke mikrokon, PC punya clock sendiri dan mikrokontroller punya sumber clock sendiri
Syncron=== sinkron, brarti sumber clocknya satu, sumber clock itu dipake sama2 (oleh dua peripheral atau lebih)

mau tau lebiiih lengkap coba googling :) :), lagi banyak kerjaan

biasanya too payz langsung nyahut...:) mana nieh

frans3q

trus baud rate tuh apaan ya?? itu asal sama antara mikro - PC nya uda jalan, ato ada cara ngitungnya harus pake yg brp??

dah gt ada parameter nya, 8 Data 2 Stop No Par. artinya apa ya???

terakhir, RXB RXC RXD apaan ya?
Terimakasih banyak buat tmn2 yg uda nambah IQ saya... :D

ksatriabajuhitam

baud rate = laju pengiriman data, biasanya dinyatakan dalam bps (bit per second)
harus sama antara PC sama micro nya

2 stop --> pake 2 stop bit (stop bit --> sinyal logic 1)
no par --> no parity --> parity-nya ga di-chek
parity ada paritas genap (even parity) dan paritas ganjil (odd parity)
paritas genap --> jumlah bit 1 dalam 1 byte harus genap; parity buat ng-chek integrity data tiap byte

Rx biasanya diasosiakan dengan receiver pin


-----
mana too pay, biasanya smangat dia kalo ngejelasin :D
not all the problems could be solved by the sword, but sword holder take control of problems.
ForSa versi mobile: http://www.forumsains.com/forum?wap2

frans3q

tupai lagi sibuk mungkin hahhaha


jadi parity itu fungsi nya apa? klo d operasional nya, bedanya pake parity sama engga dmn? stop juga gmn?

thx ksatria.
Terimakasih banyak buat tmn2 yg uda nambah IQ saya... :D

frans3q

Terimakasih banyak buat tmn2 yg uda nambah IQ saya... :D

ksatriabajuhitam

Kutip dari: frans3q pada Agustus 04, 2009, 10:18:47 PM
...
jadi parity itu fungsi nya apa? klo d operasional nya, bedanya pake parity sama engga dmn?
...
Kutip dari: ksatriabajuhitam pada Agustus 04, 2009, 08:07:49 PM
...
parity buat ng-chek integrity data tiap byte
...
buat ng-check apakah byte nya corrupt apa engga
kebanyakan untuk aplikasi mikrokontroller (sejauh yg saya alami) biasanya di-disable (dianggap ga ada error)
tapi kalo udah ke level product yg mass production, biasanya diaktifkan
misal di SIM card handphone, parity di-check, kalo ketauan error (misal pake parity genap, tapi dalam 1 byte bit 1 nya ternyata ganjil), maka si SIM card harus ngirim byte lagi

Kutip dari: frans3q pada Agustus 04, 2009, 10:18:47 PM
...
stop juga gmn?
...
tujuan stop bit itu pertama untuk mengembalikan kondisi sinyal ke idle state (biasanya 1), kedua untuk memberi kesempatan buat penerima untuk mengolah data
jadi kalo cuma dikasih 1 stop bit, maka kemungkinan terburuk bagi penerima ialah harus siap menerima data selanjutnya dalam selang waktu 1 bit itu,
kalo 2 bit ya berarti penerima agak leluasa
p.s.: SIM card memakai 2 stop bit
not all the problems could be solved by the sword, but sword holder take control of problems.
ForSa versi mobile: http://www.forumsains.com/forum?wap2

frans3q

jadi klo stop bit tuh d sesusaikan sama fungsi & program uC nya ya.
trus klo clock uC ada pengaruh sama baud rate ga?


oya bole minta conto source buat 8535 ga buat ngirim data dari PC k mikro.
simple aja, misal teken spasi trus LED d port C nyala misalnya. klo bisa pake C (CV AVR dsb)

yg harus d inisiasi apa aja?
thx b4.
Terimakasih banyak buat tmn2 yg uda nambah IQ saya... :D

micro

saya coba buat tp blm di coba buat silahkan dicoba...
bagian if nya di isi kenginan.,misal jika huruf a di tekan maka led pada PORTC berubah., ;D

#include <mega8535.h>
#include <stdio.h>
#include <delay.h>

// Declare your global variables here
//unsigned char datax[8],i;
unsigned char datarx;

void kirim_serial(unsigned char datatx)
{
//UART data register empty, Until UDRE = 1
UDR=datatx;             //Serial buffer content
while(!UCSRA.6);        //Until TXC = 1
UCSRA.6 = 1;            //Reset TXC with 1
}

void terima_serial()
{
//while(!UCSRA.5);   //UART data register empty, Until UDRE = 1
while(!UCSRA.7);        //Until RXC = 1
datarx=UDR;
//datax = datarx;         //Serial buffer content
delay_ms(2);
UCSRA.7 = 1;            //Reset RXC with 1
}

void main(void)
{
PORTA=0x00;
DDRA=0x00;

PORTB=0x00;
DDRB=0x00;

PORTC=0x00;
DDRC=0x00;

PORTD=0x00;
DDRD=0x00;

TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

MCUCR=0x00;
MCUCSR=0x00;

TIMSK=0x00;

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x47;

ACSR=0x80;
SFIOR=0x00;

while (1)
      {
      // Place your code here
       terima_serial();
       if (datarx=di isi dengan yang diinginkan)
       {PORTC=di isi dengan keinginan}
       else
       {PORTC=di isi dengan keinginan}
      kirim_serial(datarx);
      //kirim_serial(datax);
     
      };
}

frans3q

kirim_serial(datarx);

gunanya apa ya??
Terimakasih banyak buat tmn2 yg uda nambah IQ saya... :D

Too Payz

Wew... saya d kata"in....  :D
Mo liat dulu comment-comment yang lain baru nyahut...  ;)
Lagian emang sibuk nih, alat udah jadi 2 n tinggal satu nih yang sulit, lama n mahal

Waah kalo mo pelajari komunikasi serial g bakal cukup nih tempat.
Baca aj Link ini :
[pranala luar disembunyikan, sila masuk atau daftar.]
[pranala luar disembunyikan, sila masuk atau daftar.]
Kutip
Async === ga sinkron, brarti sumber clocknya beda (misal komunikasi PC ke mikrokon, PC punya clock sendiri dan mikrokontroller punya sumber clock sendiri
Syncron=== sinkron, brarti sumber clocknya satu, sumber clock itu dipake sama2 (oleh dua peripheral atau lebih)
Pada Asinkron (tidak sinkron) antar perangkat yang berkomunikasi punya clock sendiri-sendiri tetapi clocknya harus sama (satuannya kbps) agar komunikasi tidak error.
contoh : serial RS232, RS423, RS485, USB port, mikro-mikro, dll.
Jika mikro komunikasi dgn perangkat lain maka harus mengikuti standard kecepatan (kbps) perangkat tersebut, misalnya komputer memiliki baudrate standar ......,1200,2400,4800,9600,19200,38400,....
Tetapi jika komunikasi USART antar mikro, anda bisa membuat kbps dengan nilai terserah anda, asal kbps kedua mikro sama, misal .....,1250,2500,4555,....

Pada sinkron clock-nya hanya satu dan digunakan bersamaan, biasanya dengan sistem master slave dan umumnya pembangkit clock-nya ditentukan oleh master-nya. Konfigurasi koneksi juga umumnya SDA (serial data) atau SDI+SDO (serial data input + serial data output) dan SCK(serial clock).
contoh : SPI, TWI, I2C, PS2 (keyboard), dll.
Hal yang perlu diketahui pada serial sinkron adalah perangkat dengan clock (frekuensi) tinggi harus mengikuti clock perangkat yang lebih kecil, karena jika tidak maka komunikasi tidak terjadi.
Misal : komunikasi dengan antar mikro secara TWI, mikro master Xtal-nya 12 MHz sedangkan mikro slave 4 MHz maka clock pada SCK Master harus lebih lambat minimal 3x agar Slave bisa mengikuti komunikasi datanya.

Kutip
jadi parity itu fungsi nya apa? klo d operasional nya, bedanya pake parity sama engga dmn? stop juga gmn?
Parity berfungsi untuk mengecek "banyaknya logika 1" sebagai pengecekan error data, apakah berjumlah ganjil atau genap dan parity berfungsi menggenapkan (even) atau mengganjilkan (odd), tergantung pilihannya antar lain : even parity, odd parity, mark parity, space parity dan no parity. (yg mark n space tidak pernah dipakai).
Misal :
Even parity dan data 01010101 => logika 1-nya ada 4 maka parity = 0
Even parity dan data 01010111 => logika 1-nya ada 5 maka parity = 1
Odd parity kebalikannya..

Kalau terdeteksi error gimana ?? nah itu dia masalahnya tergantung metode anda dan umumnya yaitu dengan mengirimkan data yang "tadi".
Kalau tidak ada metode pengecekan error maka tidak menggunakan parity tidak masalah, malah bisa lebih menghemat bandwidth.

Dah.. nyahut neh... gmana ?   ;D   ;D

Too Payz

Kutip dari: micro pada Agustus 06, 2009, 06:50:14 AM
#include <mega8535.h>
#include <stdio.h>
#include <delay.h>

// Declare your global variables here
//unsigned char datax[8],i;
unsigned char datarx;

void kirim_serial(unsigned char datatx)
{
//UART data register empty, Until UDRE = 1
UDR=datatx;             //Serial buffer content
while(!UCSRA.6);        //Until TXC = 1
UCSRA.6 = 1;            //Reset TXC with 1
}

void terima_serial()
{
//while(!UCSRA.5);   //UART data register empty, Until UDRE = 1
while(!UCSRA.7);        //Until RXC = 1
datarx=UDR;
//datax = datarx;         //Serial buffer content
delay_ms(2);
UCSRA.7 = 1;            //Reset RXC with 1
}
Saya binggun nih  ???   ???
kan sudah menggunakan library stdio.h trus kok masih membuat fungsi kirim_serial dan terima_serial,,.. ??
Saran saya untuk CoViAVR aktifkan USART dgn CodeWizzardAVR.

fungsi mengirim karakter dengan misal : putchar('T');
fungsi mengirim kata / kalimat dengan misal : putsf("Too PayZ"); atau printf("Ganteng");
fungsi menerima karakter dengan misal : datarx = getchar();

nah kalo di main programnya jadinya :

#include <delay.h>   //tambahkan fungsi delay

void main(void)
{
...........
DDRC = 0xff;   //PORTC jadi output
PORTC = 0x00;   //led nyala saat diberi logika 1.
while(1)
{
   datarx = getchar();
         if (datarx=='A')   { PORTC.0=1;   delay_ms(1000);}   // led PORTC.0 nyala 1 detik
   else if (datarx=='B')   { PORTC.1=1;   delay_ms(1000);}   // led PORTC.1 nyala 1 detik
   else if (datarx=='C')   { PORTC.2=1;   delay_ms(1000);}   // led PORTC.2 nyala 1 detik
   PORTC=0x00;
}
}

frans3q

until UDRE gunanya apa ya?? btw UDRE tuh register buat apaan ya??
Terimakasih banyak buat tmn2 yg uda nambah IQ saya... :D

frans3q

oya, klo program buat UART TTL ma UART RS232 sama ga sih? inisiasi nya gmn?
Terimakasih banyak buat tmn2 yg uda nambah IQ saya... :D

Too Payz

USART TTL, RS232, dan RS485, sama yg berbeda level tegangannya dan konfigurasi kabel.