Forum Sains Indonesia

Ilmu Terapan => Teknik Elektro => Ilmu Teknik => Mikrokontroler dan Robotika => Topik dimulai oleh: frans3q pada Agustus 02, 2009, 06:10:37 PM

Judul: [ASK] Komunikasi Serial
Ditulis oleh: frans3q pada Agustus 02, 2009, 06:10:37 PM
Ajarin komunikasi serial dari dasar donk..... bingung nih.

pertama dari USART. beda nya Async sama yg Sync apa ya???
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: tAZZZ pada Agustus 03, 2009, 09:52:35 AM
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
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: frans3q pada Agustus 03, 2009, 02:09:30 PM
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?
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: ksatriabajuhitam pada Agustus 04, 2009, 08:07:49 PM
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
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: frans3q pada Agustus 04, 2009, 10:18:47 PM
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.
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: frans3q pada Agustus 05, 2009, 03:25:00 PM
alow....
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: ksatriabajuhitam pada Agustus 05, 2009, 08:35:15 PM
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
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: frans3q pada Agustus 05, 2009, 09:56:13 PM
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.
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: micro pada Agustus 06, 2009, 06:50:14 AM
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);
     
      };
}
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: frans3q pada Agustus 06, 2009, 08:16:38 AM
kirim_serial(datarx);

gunanya apa ya??
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: Too Payz pada Agustus 06, 2009, 06:17:03 PM
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
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: Too Payz pada Agustus 06, 2009, 06:31:19 PM
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;
}
}
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: frans3q pada Agustus 06, 2009, 09:53:02 PM
until UDRE gunanya apa ya?? btw UDRE tuh register buat apaan ya??
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: frans3q pada Agustus 07, 2009, 02:13:34 PM
oya, klo program buat UART TTL ma UART RS232 sama ga sih? inisiasi nya gmn?
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: Too Payz pada Agustus 08, 2009, 12:28:22 AM
USART TTL, RS232, dan RS485, sama yg berbeda level tegangannya dan konfigurasi kabel.
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: frans3q pada Agustus 08, 2009, 11:16:47 AM
nanya lagi :
1. until UDRE guna nya apa ya???

2.  program nya toopayz kalau saya teken tombol keyboard terus2an ntar uC ny ga mau ngrespon lagi knp ya? kayak yg ng hang gt.
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: frans3q pada Agustus 08, 2009, 05:25:22 PM
too payz :
gw coba balik, jadi kondisi nya 0x00 semua LED nyala. klo 1 mati. koq LED nya kedip2 gt ya?

kayak yg ngrefresh terus. dan response ny lambat banget.


while (1)                           
      {
      // Place your code here
      datarx = getchar();
         if (datarx=='a')        { PORTA.4=1; PORTA.5=0; PORTA.6=1; PORTA.7=0; delay_ms(1000); PORTA = 0x00;} 
         else if (datarx=='s')   { PORTA.4=0; PORTA.5=1; PORTA.6=1; PORTA.7=0; delay_ms(1000); PORTA = 0x00; }   
         else if (datarx=='d')   { PORTA.4=0; PORTA.5=1; PORTA.6=0; PORTA.7=1; delay_ms(1000); PORTA = 0x00;}
         else if (datarx=='w')   { PORTA.4=1; PORTA.5=0; PORTA.6=0; PORTA.7=1; delay_ms(1000);  PORTA = 0x00;}
     datarx ='';   
     
      };
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: Too Payz pada Agustus 09, 2009, 12:22:26 AM
Kutip dari: frans3q pada Agustus 08, 2009, 05:25:22 PM
too payz :
gw coba balik, jadi kondisi nya 0x00 semua LED nyala. klo 1 mati. koq LED nya kedip2 gt ya?
Kedap-kedipnya berapa lama? tiap 1 detik ?   ???
Kalo tiap 1 detik ya memang benar kan ada delaynya 1 detik trus abis 1 detik LED dimatikan lagi. Jika mau LED menyala hanya saat tombol ditekan (ada karater-nya) kemudian jika tombol dilepas barulah LED mati, cukup dengan mengurangi delaynya misalnya delay_ms(100); dan tambahkan fugsi jika bukan 'a', 's', 'd', 'w' barulah LED d matikan. yaitu tinggal tambahkan

else PORTA=0x00; // jika Katoda LED ke ground (common katode) atau
else PORTA=0xff; // jika Anoda LED ke VCC (common anode).

Btw jgn lupa PORTA=0x00 dalam if-nya ilangin dan harus tau konfigurasi LED-nya common anoda atau common katoda.
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: frans3q pada Agustus 09, 2009, 12:52:41 AM
Kutip dari: micro pada Agustus 06, 2009, 06:50:14 AM
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);
     
      };
}



sama sekali ga k terima datanya. LED nya gw taro d PORT A. kondisi nyala nya 0. kondisi mati nya 1.

gw uda set PORT A jd output. inisiasi nya PORTA = 0x00; DDRA = 0xFF;
ini while (1) nya :
       terima_serial();
       if (datarx== 0x77) //key w
       {PORTA = 0x0A;}
       else if (datarx== 0x64) // key d
       {PORTA= 0x05;}
       else
       {PORTA = 0x00;}

yg ada semua LED nya nyala sambil blink ing cepet.
harus ny saat gw teken tombol keyboard ada bbrpa LED yg mati.



@tupai :
blink ny cepet banget.
dah gt jd ga respon sama input.
kayak ny dia ngulang2 mati in LED sama ngidupin LED terus2an, jd ga bisa nerima input.

ga ngerti common anoda ato common katoda.
inti nya klo Low Nyala klo High Mati. jadi klo 0x00 nyala semua.  klo 0xFF mati semua LED nya.

gw isi program ny :
         if (datarx=='a')        { PORTA.4=1; PORTA.5=0; PORTA.6=1; PORTA.7=0; delay_ms(1000); PORTA = 0x00;} 
         else if (datarx=='s')   { PORTA.4=0; PORTA.5=1; PORTA.6=1; PORTA.7=0; delay_ms(1000); PORTA = 0x00; }   
         else if (datarx=='d')   { PORTA.4=0; PORTA.5=1; PORTA.6=0; PORTA.7=1; delay_ms(1000); PORTA = 0x00;}
         else if (datarx=='w')   { PORTA.4=1; PORTA.5=0; PORTA.6=0; PORTA.7=1; delay_ms(1000); PORTA = 0x00;}
     datarx ='';   



kalo bole sekalian minta list perintah2 yg bisa d pakai di CV AVR buat ngirim/terima data ke Terminal.
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: Too Payz pada Agustus 09, 2009, 02:45:46 PM
Hmm.....   :-\   :-\
Blinknya cepet banget yaa.... aneh.. aneh...
Ini pake programmer serial AVR910 yang USB itu yaa...
Pake power supply atau supply minta dari USB.
Kalo minta dari USB wajar saja dia blink-nya cepet karena supply dari USB hanya untuk mendownload saja n g cukup tuk digunakan menyalakan LED yg banyak (8 LED).
Itu nge-blink karena sistem baru menyala sebentar trus mati lagi (mirkonya reset).

Kalo masalah perintah-perintah, coba baca Library dan HELP-nya CoViAVR dengan seksama dan searching dari internet... tar ilmunya lebih banyak dari yang diharapkan   :kribo:   :kribo:

Met berusaha aja..  ;)   ;)
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: frans3q pada Agustus 09, 2009, 05:57:31 PM
gw tambah bingung.... AVR910 kan programer. klo uda beres ngprogram uC,
AVR910 nya d cabut. dah gt baru colok LED nya.

jd apa hubungan ny LED ama USB??? 2 alat itu ga pernah terhubung k uC bersamaan.




gw jg dari awal cari sana sini. google sana sini. posting sana posting sini.
gw uda baca. tapi ga ngerti baca help ny CV AVR. gw tanya d sini aja ya.

1.
misal ny yg putchar.
kan klo toopayz ngasi contoh nya : putchar(data_rx); --> prosedur
klo data_rx = getchar(); --> function

nah klo
void putchar (char c); ----> ini apaan?
knp d dpn ny pake void??? dan knp parameter ny aneh gitu??? klo data_rx kan bisa d definisi in dulu sbg unsigned char misalnya.

2. void putsf(char flash*str);
arti nya char flash*str tuh apa ya?

3. penjelasan ny bilang : output using putchar the null terminated character string str, located in FLASH.
klo yg void puts(char*str) d bilangnya located in SRAM.
bedanya located in FLASH & SRAM dalam penggunaannya gmn? apa yg d SRAM perlu perintah dulu biar k kirim?

tq too payz
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: Too Payz pada Agustus 10, 2009, 04:59:08 AM
Kutip
gw tambah bingung.... AVR910 kan programer. klo uda beres ngprogram uC,
AVR910 nya d cabut. dah gt baru colok LED nya.
jd apa hubungan ny LED ama USB??? 2 alat itu ga pernah terhubung k uC bersamaan.
Ow kirain bersamaan, karena umumnya kalo masih coba" program, downloader USB-nya g d cabut.
Kutip
kan klo toopayz ngasi contoh nya : putchar(data_rx); --> prosedur
putchar(data_tx);
Kutip
nah klo
void putchar (char c); ----> ini apaan?
knp d dpn ny pake void??? dan knp parameter ny aneh gitu??? klo data_rx kan bisa d definisi in dulu sbg unsigned char misalnya.
Micro membuat fungsi sendiri dengan nama putchar dan tidak ada return value makanya parameternya void (hampa / kosong).
Parameter terserah programmernya selama dia memahami program-nya tersebut. Tetapi usahakan sesederhana mungkin, sesuai, dan tepat dengan kebutuhan.
Kutip
2. void putsf(char flash*str);
arti nya char flash*str tuh apa ya?

3. penjelasan ny bilang : output using putchar the null terminated character string str, located in FLASH.
Artinya tipe data char dengan nama variabel str dan disimpan flash memori mikrokontroler. Kalo * saya kurang paham tetapi seperti array yang fleksibel banyaknya tergantung nilai str-nya hingga menemukan nilai null. Jika tidak terdapat data (null) pada str-nya maka akhir data str dan fungsi putsf() selesai, kalo dalam bahasa C seperti menulis if (str[*)==null) break; (nb : harusnya kurung tutup kotak tapi g bisa.)

Misal ditulis putsf("test USART");
nah *str nilainya yaitu
str[0]='t', str[1]='e', str[2]='s', str[3]='t', str[4]=' ',
str[5]='U', str[6]='S', str[7]='A', str[8]='R', dan str[9]='T'.
Kutip
klo yg void puts(char*str) d bilangnya located in SRAM.
bedanya located in FLASH & SRAM dalam penggunaannya gmn? apa yg d SRAM perlu perintah dulu biar k kirim?
Bedanya  apa yaa?? lom pelajari sih..  ???
Tapi ini sebagai informasi ke programmer saja dan kita hanya perlu tahu cara menggunakannya saja dulu. Kalau mau lebih jauh lagi ... ??
Hmmm...... :-\   :-\

Btw kalo tau kabarin yak.  ;D
Oiya program yang kutulis ud kucoba n g masalah tuh..
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: frans3q pada Agustus 10, 2009, 08:53:43 AM
berarti masalah nya. d uC gw.... T.T

tq Too Payz. skr uC gw ngadat lagi. mo d erase dulu pake STK 500. ntar gw coba lagi.

nanya lagi :
1. klo yg dikim dari HyperTerminal tuh berupa apa sih?

misal ny teken tombol keyboard 1, LED 1 nyala. tombol angka 2 LED 2 nyala.
nantinya tetep d perlakuin sbagai char ato sbagai angka d program nya?

if (datarx=='1') atau
if (datarx==1)


2. trus gmn cara nya klo qt pe ngen ngirim byte dari PC k uC. misal ny pengen ngirim 0000 1111
hex ny 0x0F. cara ngirim ny gmn ya?
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: Too Payz pada Agustus 14, 2009, 11:13:24 PM
Kutip
nanya lagi :
1. klo yg dikim dari HyperTerminal tuh berupa apa sih?
berupa ASCII coba search tentang ASCII.
Kutip
misal ny teken tombol keyboard 1, LED 1 nyala. tombol angka 2 LED 2 nyala.
nantinya tetep d perlakuin sbagai char ato sbagai angka d program nya?

if (datarx=='1') atau
if (datarx==1)
sebagai ASCII karena tombol keyboard nilainya adalah ASCII maka karakter '1' = 0x31 heksadesimal sedangkan nilai 1 = 0x01 heksadesimal.
Kutip
2. trus gmn cara nya klo qt pe ngen ngirim byte dari PC k uC. misal ny pengen ngirim 0000 1111
hex ny 0x0F. cara ngirim ny gmn ya?
Bisa saja anda kirim nilai 0x0F tersebut tetapi programmingnya (dengan DELPHI, Visual C, BASIC, dll) akan sedikit membingungkan.
Agar program anda fleksibel dan bisa d pahami anda ataupun orang lain (misalkan ada yg mo ngembangin nantinya) usahakan komunikasi data dengan komputer berupa ASCII juga

Jadi kalo datanya 0000 1111 dan anda membutuhkan kedua data tersebut terpisah maka konfersi dulu ke ASCII yaitu dibagi menjadi 2 kali pengiriman pengiriman pertama nible atas kemudian nible bawah.

Nible atas 0000 = dikonversi jadi '0' = 0x30;
Nible bawah 1111 = dikonversi jadi 'F' = 0x46;

OK... ;D   ;D
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: frans3q pada Agustus 14, 2009, 11:53:21 PM
1. i see. klo ASCII gw ngrti.

2. mksd ny gini. misal ny buat driver motor dc. misal ada 2 motor DC kiri ama kanan.
00 = stop; 01 = CW; 10 = CCW;
berarti perlu 4bit kan? (1motor 2bit, x2 motor).
misal ny mo bikin RC sederhana. jadi perintah dari PC --> uC --> Motor DC.

dari pada bikin program d mikro pake if() ato pake switch() trus d masuk in bnyk2 k FLASH uC, lebih efisien kalo dari PC nya ngirim data byte format 4bit kan? ntar tinggal d atur 4bit nya jdi MSB ato LSB d PORT X.



Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: Too Payz pada Agustus 15, 2009, 01:21:52 PM
Kutip
2. mksd ny gini. misal ny buat driver motor dc. misal ada 2 motor DC kiri ama kanan.
00 = stop; 01 = CW; 10 = CCW;
berarti perlu 4bit kan? (1motor 2bit, x2 motor).
misal ny mo bikin RC sederhana. jadi perintah dari PC --> uC --> Motor DC.

dari pada bikin program d mikro pake if() ato pake switch() trus d masuk in bnyk2 k FLASH uC, lebih efisien kalo dari PC nya ngirim data byte format 4bit kan? ntar tinggal d atur 4bit nya jdi MSB ato LSB d PORT X.
Nah terus kira-kira gmana codingnya...
:-\  :-\
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: frans3q pada Agustus 15, 2009, 01:25:53 PM
nah itu yg bikin gw bingung. ???

klo d uC ny tinggal PORTX = Datarx;
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: frans3q pada Agustus 16, 2009, 01:56:39 AM
balik lagi k sample program yg buat ngatur LED dari keyboard PC.

gw masi stuck sampe skr. too payz, source code lengkap ny bole d share d sini? katanya uda berhasil ya?

gw bingung LED ny blink cepet banget. mirip klo jalan in perintah gini :
while (1) {PORTA =0x00; PORTA = 0xFF}
krn ga ada delay jadi ny blink cepet.

dan ga mau nerima perintah dari keyboard.
gw coba jalan in pake ext XTAL High Freq. d set nya jalan di 11MHz. ngaruh ga ya?

hyper terminal ny uda d cek baud rate, parity dll. mode di board AVR ny juga uda d set UART RS232, bukan yg TTL.
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: Too Payz pada Agustus 16, 2009, 01:36:13 PM
Ya udah coba secara bertahap g usa buru".
Kutip
gw bingung LED ny blink cepet banget. mirip klo jalan in perintah gini :
while (1) {PORTA =0x00; PORTA = 0xFF}
krn ga ada delay jadi ny blink cepet.
Kalo nyalain LED tiap 1 detik udah bisa kan.

Kutip
hyper terminal ny uda d cek baud rate, parity dll. mode di board AVR ny juga uda d set UART RS232, bukan yg TTL.
Coba buat program terima dan kirim kembali, siapa tau tidak terjadi komunikasi data.
MIsal keyboard ditekan 'A' diterima mikro trus mikro balasnya 'A'+1 atau = 'B'.
Jika dikomputer ada tampilan balasan berarti komunikasi terjadi. Harusnya udah g salah lg tuh.

test 1 => coba LED on off 1 detik
test 2 => komunikasi serial
while(1)
{
   dataRX = getchar();
   putchar(dataRX+1);
}
test 3 => penggabungan
while(1)
{
   dataRX = getchar();
   PORTB = dataRX;      // posisi PORT LED
}
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: frans3q pada Agustus 16, 2009, 02:07:44 PM
nanya lagi nih,
1. nemu istilah aneh.
DCD - Data Carrier Detect
DSR - Data Set Ready
DTR - Data Terminal Ready
RTS - Request to Send
CTS - Clear To Send
ada yg tau arti ny apa?

2. ada yg tau cara pake putsf(). puts() dan printf() buat ngirim data pake UART? gw coba gagal semua, yg berhasil cuma pake putchar();

@Too Payz
gw coba bikin program isi nya cuma :
datarx = terima();
putchar(datarx);
delay_ms(50);

harus nya apa yg d ketik dari keyboard d kirim ulang kan? tapi itu ga ke kirim apa2. gmn caranya ngecek kalo data yg d kirim dari PC uda k terima sama uC nya ya?
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: frans3q pada Agustus 16, 2009, 02:14:04 PM
@Too Payz
gw uda coba klo skedar I/O pake LED doank ga ada masalah. I/O pake push button switch jg uda lancar.

kirim data serial dah bisa.

mintal source code lengkap nya donk... post d sini aja. biar gw bisa cek bedanya dmn.
ini code yg gw. bener2 polos tapi gagal ga ngirim apa2.
Sorry but you are not allowed to view spoiler contents.
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: frans3q pada Agustus 17, 2009, 12:34:48 AM
sebenernya kirim data serial jg masi belom bener, wkt tu nyoba ngirim karakter 'a' doank dari uC k PC gagal mulu ternyata Clock nya, begitu gw turunin dari 11MHz jadi 4Mhz ga ada masalah sama sekali. mungkin ttg clock internal - external d bahas ntar lagi.
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: Too Payz pada Agustus 17, 2009, 02:27:31 PM
@Frans3q :
Yang saya jelaskan posting sebelumnya itu sudah mendasar dan sudah menjawab semua pertanyaannya.
Ditambah lagi penjelasan dari Micro, tinggal ditambahkan dan disisipkan sudah bisa seharusnya.
Tapi saya bingung kok masih blum bisa ?   ???
Kutip
sebenernya kirim data serial jg masi belom bener, wkt tu nyoba ngirim karakter 'a' doank dari uC k PC gagal mulu ternyata Clock nya, begitu gw turunin dari 11MHz jadi 4Mhz ga ada masalah sama sekali. mungkin ttg clock internal - external d bahas ntar lagi.
Kalo menggunakan kabel PC ke uC aj gagal gmana yg lainnya ?  ???
Ini harus 100% tidak gagal baru bisa lanjut.
Clock-nya kok d ganti-ganti dari 11MHz ke 4MHz tanpa alasan,..??   ???
Lihat komponen XTALL di boardnya berapa nilainya, itulah nilai Clocknya.
Jadi g bisa trial n error.

Clock pada mikronya tidak masalah hingga 16MHz pun g masalah tinggal CodeVisionAVR-nya saja yang menyesuaikan dengan hardwarenya (XTALL-nya).
Saya rasa Frans3q terlalu terburu-buru,..
Coba cari buku-buku tentang AVR bahasa C dengan CoViAVR.

Hardware, SOftware, Konfigurasi CodeWizzarAVR, pembacaan cara penggunaan library, penulisan C, tipe data, dst.
Kalo dasarnya paham dan kuat, aplikasi apapun akan cepat selesai..
SLAM itu tidak mudah tetapi tidak susah.

;)   ;)   ;)
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: frans3q pada Agustus 17, 2009, 05:22:54 PM
thx Too Payz,(bonus BRP hahaha).
justru krena itu saya bingung. setelah baca2 dari buku, dari forum, tapi begitu praktek gagal. Tolong donk liatin source code yg sy lampirin d spoiler. apa yg salah dari source code nya. isi programnya sesuai kata Too Payz, cuma
while (1)
      {
      // Place your code here
      dt = getchar();
      putchar(dt);
      };

tapi sama sekali ga k kirim balik k PC. saya uda coba tambah delay, sama aja. tetep ga k kirim.

kalau cuma putchar('a'); bisa k kirim k PC.
KutipKalo menggunakan kabel PC ke uC aj gagal gmana yg lainnya ? 
Ini harus 100% tidak gagal baru bisa lanjut.
sbnernya ga buru2. tapi uda 1mggu lebih sy stuck d masalah ini, jd pengen cepet2 beres in masalah Transmit UART ini. soal ny masi bnyk hal lain ttg UART yg belum sy pelajari.

pertanyaan lain yg pending :
1. nemu istilah aneh.
DCD - Data Carrier Detect
DSR - Data Set Ready
DTR - Data Terminal Ready
RTS - Request to Send
CTS - Clear To Send
ada yg tau arti ny apa? RTS CTS ada d komunikasi wireless 802.11, tapi apa UART pake RS232 juga ngirim RTS/CTS ini?

2. ada yg tau cara pake putsf(). puts() dan printf() buat ngirim data pake UART? gw coba gagal semua, yg berhasil cuma pake putchar();
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: arlan_hack pada Agustus 24, 2009, 09:23:53 PM
numpang nanyanih...
rs485???? gimanaya... cr pakenya... sy coba pke atmega128 buat ngontrol servo dinamixel ax-12 tp blm ngertinih  >:(
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: arlan_hack pada Agustus 24, 2009, 09:42:52 PM
numpang nanyanih...
rs485???? gimanaya... cr pakenya... sy coba pke atmega128 buat ngontrol servo dynamixel ax-12 tp blm ngertinih  >:(
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: frans3q pada Agustus 27, 2009, 06:07:00 PM
saya jg mo nanya lagi.

misal ny saya ngprogram uC buat menyalakan LED selama 2 detik jika angka 2 di keyboard ditekan.

saya buat program ny spt ini :
x = getchar();
if (x=='2') {PORTA.1 = 1; delay_ms(2000);}

tapi jika saya menekan 2x tombol keyboard secara cepat, maka terjadi queuing. hasil nya LED menyala 4 detik.

bagaimana caranya agar tidak terjadi antrian? jadi jika ada data UART terkirim saat mikrokontroler belum beres memproses yg sebelumnya, maka data tsb d hilangkan. sehingga tidak terjadi penumpukan.

apakah ada port pada AT Mega 8535 yang mengindikasikan apakah mikrokontroler dalam keadaan "Busy" atau tidak?
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: frans3q pada September 02, 2009, 10:54:09 PM
alow help donk.....
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: frans3q pada September 06, 2009, 11:52:27 PM
aow.... help donk... ada yg bisa ngasi ide?
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: herlambang pada Maret 06, 2010, 09:19:42 AM
Kutip dari: frans3q pada Agustus 27, 2009, 06:07:00 PM
saya jg mo nanya lagi.

misal ny saya ngprogram uC buat menyalakan LED selama 2 detik jika angka 2 di keyboard ditekan.

saya buat program ny spt ini :
x = getchar();
if (x=='2') {PORTA.1 = 1; delay_ms(2000);}

tapi jika saya menekan 2x tombol keyboard secara cepat, maka terjadi queuing. hasil nya LED menyala 4 detik.

bagaimana caranya agar tidak terjadi antrian? jadi jika ada data UART terkirim saat mikrokontroler belum beres memproses yg sebelumnya, maka data tsb d hilangkan. sehingga tidak terjadi penumpukan.

apakah ada port pada AT Mega 8535 yang mengindikasikan apakah mikrokontroler dalam keadaan "Busy" atau tidak?


Pake buffer dong ^^'
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: jatihisivalley pada Maret 06, 2010, 11:29:00 AM
Kutip dari: arlan_hack pada Agustus 24, 2009, 09:42:52 PM
rs485???? gimanaya... cr pakenya... sy coba pke atmega128 buat ngontrol servo dynamixel ax-12 tp blm ngertinih  >:(

rs485 itu jalur kirim-terima-nya hanya di laksanakan lewat 1 kabel,dengan misal IC MAX485,anda bisa pertama kirim data dulu... setelah itu ganti state MAX485 ke listen .. cari aza datasheet max485.. serial datanya (.. konfigurasi baudrate).. sama dengan serial biasa.. hanya dalam protokol RS485 biasanya ditambahkan field ID.. sehingga kita bisa berkomunikasi dengan device2 tertentu

Kutip dari: frans3q pada Agustus 27, 2009, 06:07:00 PM
x = getchar();
if (x=='2') {PORTA.1 = 1; delay_ms(2000);}
tapi jika saya menekan 2x tombol keyboard secara cepat, maka terjadi queuing. hasil nya LED menyala 4 detik.

bagaimana caranya agar tidak terjadi antrian? jadi jika ada data UART terkirim saat mikrokontroler belum beres memproses yg sebelumnya, maka data tsb d hilangkan. sehingga tidak terjadi penumpukan.

apakah ada port pada AT Mega 8535 yang mengindikasikan apakah mikrokontroler dalam keadaan "Busy" atau tidak?

pertanyaan dulu he :D PORTA.1 = 1 ... kapan 0-nya ?

Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: kuin pada April 17, 2010, 07:41:30 PM
Kutip dari: frans3q pada Agustus 06, 2009, 09:53:02 PM
until UDRE gunanya apa ya?? btw UDRE tuh register buat apaan ya??

baca datasheet mikro aja pasti ada plus potongan programnya juga ada.
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: Neutrino pada April 24, 2010, 08:34:33 PM
saya mau nanya bagaimana caranya membuat komunikasi serial pake interupt
jadi kalo si mikro lagi nerima data..maka mikro akan memprioritaskan membaca data dari transmiternya

harapannya agar program mikro ga perlu memasukkan sintaks semacam getchar..
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: kuin pada Mei 17, 2010, 01:46:22 AM
gak ada yang pakai interup ya? padahal kan lebih mudah dan bisa jalanin program lain selagi menunggu data dari serial diterima.

kalo pakai
getchat();
program jadinya nunggu and berhenti ditempat menunggu kiriman...dari siapa ya?

coba too payz....kamu kan jago....sebagai anak bangsa harus bisa dong.....
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: Too Payz pada Mei 18, 2010, 02:18:05 AM
Wah udah kubahas, coba baca d blogku..
[pranala luar disembunyikan, sila masuk atau daftar.]
[pranala luar disembunyikan, sila masuk atau daftar.]
Judul: Re: [ASK] Komunikasi Serial
Ditulis oleh: elisds.sbr pada Oktober 06, 2010, 10:03:52 AM
salam kenal.
saya menggunakan AT Mega 8535 utk kprluan TA saya. saya menggunakan program codevision AVR.
saya pnya msalah,saya menggunakan komunikasi serial UART RS2323 utk menamplkan data saya ke hyperterinal.
bagaimana caranya yah jika saya ingin menampilkan data yg sya peroleh dari sensor ke hyperterminal,tp tidak hanya menmpilkan tulisan seperti biasanya, tp  sebuah angka yg nilainya dapat berubah2 secara otomatis ,sesuai data yg diperoleh dr sensor.
tlong dibantu yah..
trimakasih