Selamat datang di ForSa! Forum diskusi seputar sains, teknologi dan pendidikan Indonesia.

Selamat datang, Pengunjung. Silahkan masuk atau mendaftar. Apakah anda lupa aktivasi email?

Maret 03, 2021, 06:18:00 PM

Masuk dengan nama pengguna, kata sandi dan lama sesi

Topik Baru

Artikel Sains

Anggota
Stats
  • Total Tulisan: 139621
  • Total Topik: 10384
  • Online Today: 167
  • Online Ever: 441
  • (Desember 18, 2011, 12:48:51 AM)
Pengguna Online
Users: 0
Guests: 30
Total: 30

Ikuti ForSa

ForSa on FB ForSa on Twitter

Penulis Topik: [ASK] Komunikasi Serial  (Dibaca 30699 kali)

0 Anggota dan 1 Pengunjung sedang melihat topik ini.

Offline frans3q

  • Dosen
  • ****
  • Tulisan: 153
  • IQ: 22
Re: [ASK] Komunikasi Serial
« Jawab #15 pada: Agustus 09, 2009, 02: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.
« Edit Terakhir: Agustus 09, 2009, 02:27:09 AM oleh frans3q »
Terimakasih banyak buat tmn2 yg uda nambah IQ saya... :D

Offline frans3q

  • Dosen
  • ****
  • Tulisan: 153
  • IQ: 22
Re: [ASK] Komunikasi Serial
« Jawab #16 pada: Agustus 09, 2009, 08:25:22 AM »
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 ='';   
     
      };

Offline Too Payz

  • Dosen
  • ****
  • Tulisan: 260
  • IQ: 7
Re: [ASK] Komunikasi Serial
« Jawab #17 pada: Agustus 09, 2009, 03:22:26 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.

Offline frans3q

  • Dosen
  • ****
  • Tulisan: 153
  • IQ: 22
Re: [ASK] Komunikasi Serial
« Jawab #18 pada: Agustus 09, 2009, 03:52:41 PM »
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.
« Edit Terakhir: Agustus 09, 2009, 04:36:02 PM oleh frans3q »

Offline Too Payz

  • Dosen
  • ****
  • Tulisan: 260
  • IQ: 7
Re: [ASK] Komunikasi Serial
« Jawab #19 pada: Agustus 10, 2009, 05:45:46 AM »
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..  ;)   ;)

Offline frans3q

  • Dosen
  • ****
  • Tulisan: 153
  • IQ: 22
Re: [ASK] Komunikasi Serial
« Jawab #20 pada: Agustus 10, 2009, 08:57:31 AM »
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
« Edit Terakhir: Agustus 10, 2009, 09:22:53 AM oleh frans3q »

Offline Too Payz

  • Dosen
  • ****
  • Tulisan: 260
  • IQ: 7
Re: [ASK] Komunikasi Serial
« Jawab #21 pada: Agustus 10, 2009, 07:59:08 PM »
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..

Offline frans3q

  • Dosen
  • ****
  • Tulisan: 153
  • IQ: 22
Re: [ASK] Komunikasi Serial
« Jawab #22 pada: Agustus 10, 2009, 11:53:43 PM »
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?
« Edit Terakhir: Agustus 11, 2009, 12:06:08 AM oleh frans3q »

Offline Too Payz

  • Dosen
  • ****
  • Tulisan: 260
  • IQ: 7
Re: [ASK] Komunikasi Serial
« Jawab #23 pada: Agustus 15, 2009, 02: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

Offline frans3q

  • Dosen
  • ****
  • Tulisan: 153
  • IQ: 22
Re: [ASK] Komunikasi Serial
« Jawab #24 pada: Agustus 15, 2009, 02: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.




Offline Too Payz

  • Dosen
  • ****
  • Tulisan: 260
  • IQ: 7
Re: [ASK] Komunikasi Serial
« Jawab #25 pada: Agustus 16, 2009, 04:21:52 AM »
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...
 :-\  :-\

Offline frans3q

  • Dosen
  • ****
  • Tulisan: 153
  • IQ: 22
Re: [ASK] Komunikasi Serial
« Jawab #26 pada: Agustus 16, 2009, 04:25:53 AM »
nah itu yg bikin gw bingung. ???

klo d uC ny tinggal PORTX = Datarx;

Offline frans3q

  • Dosen
  • ****
  • Tulisan: 153
  • IQ: 22
Re: [ASK] Komunikasi Serial
« Jawab #27 pada: Agustus 16, 2009, 04:56:39 PM »
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.
« Edit Terakhir: Agustus 16, 2009, 04:58:19 PM oleh frans3q »

Offline Too Payz

  • Dosen
  • ****
  • Tulisan: 260
  • IQ: 7
Re: [ASK] Komunikasi Serial
« Jawab #28 pada: Agustus 17, 2009, 04:36:13 AM »
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
}
« Edit Terakhir: Agustus 17, 2009, 04:38:13 AM oleh Too Payz »

Offline frans3q

  • Dosen
  • ****
  • Tulisan: 153
  • IQ: 22
Re: [ASK] Komunikasi Serial
« Jawab #29 pada: Agustus 17, 2009, 05:07:44 AM »
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?
« Edit Terakhir: Agustus 17, 2009, 05:22:42 AM oleh frans3q »

 

Related Topics

  Subyek / Dimulai oleh Jawaban Tulisan terakhir
2 Jawaban
6739 Dilihat
Tulisan terakhir Juli 29, 2009, 10:03:37 AM
oleh Too Payz
3 Jawaban
4764 Dilihat
Tulisan terakhir April 23, 2010, 05:18:45 AM
oleh kuin
6 Jawaban
4679 Dilihat
Tulisan terakhir Juli 03, 2010, 10:27:28 PM
oleh 0y1k
2 Jawaban
6733 Dilihat
Tulisan terakhir Juni 30, 2010, 02:30:48 AM
oleh cahcyber
1 Jawaban
2602 Dilihat
Tulisan terakhir November 20, 2010, 02:45:30 PM
oleh Tom Kru