...
jadi parity itu fungsi nya apa? klo d operasional nya, bedanya pake parity sama engga dmn?
...
...buat ng-check apakah byte nya corrupt apa engga
parity buat ng-chek integrity data tiap byte
...
...tujuan stop bit itu pertama untuk mengembalikan kondisi sinyal ke idle state (biasanya 1), kedua untuk memberi kesempatan buat penerima untuk mengolah data
stop juga gmn?
...
Async === ga sinkron, brarti sumber clocknya beda (misal komunikasi PC ke mikrokon, PC punya clock sendiri dan mikrokontroller punya sumber clock sendiriPada Asinkron (tidak sinkron) antar perangkat yang berkomunikasi punya clock sendiri-sendiri tetapi clocknya harus sama (satuannya kbps) agar komunikasi tidak error.
Syncron=== sinkron, brarti sumber clocknya satu, sumber clock itu dipake sama2 (oleh dua peripheral atau lebih)
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).
#include <mega8535.h>Saya binggun nih ??? ???
#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
}
too payz :Kedap-kedipnya berapa lama? tiap 1 detik ? ???
gw coba balik, jadi kondisi nya 0x00 semua LED nyala. klo 1 mati. koq LED nya kedip2 gt ya?
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);
};
}
gw tambah bingung.... AVR910 kan programer. klo uda beres ngprogram uC,Ow kirain bersamaan, karena umumnya kalo masih coba" program, downloader USB-nya g d cabut.
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.
kan klo toopayz ngasi contoh nya : putchar(data_rx); --> prosedurputchar(data_tx);
nah kloMicro membuat fungsi sendiri dengan nama putchar dan tidak ada return value makanya parameternya void (hampa / kosong).
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);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.)
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 apa yaa?? lom pelajari sih.. ???
bedanya located in FLASH & SRAM dalam penggunaannya gmn? apa yg d SRAM perlu perintah dulu biar k kirim?
nanya lagi :berupa ASCII coba search tentang ASCII.
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.sebagai ASCII karena tombol keyboard nilainya adalah ASCII maka karakter '1' = 0x31 heksadesimal sedangkan nilai 1 = 0x01 heksadesimal.
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 1111Bisa saja anda kirim nilai 0x0F tersebut tetapi programmingnya (dengan DELPHI, Visual C, BASIC, dll) akan sedikit membingungkan.
hex ny 0x0F. cara ngirim ny gmn ya?
2. mksd ny gini. misal ny buat driver motor dc. misal ada 2 motor DC kiri ama kanan.Nah terus kira-kira gmana codingnya...
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.
gw bingung LED ny blink cepet banget. mirip klo jalan in perintah gini :Kalo nyalain LED tiap 1 detik udah bisa kan.
while (1) {PORTA =0x00; PORTA = 0xFF}
krn ga ada delay jadi ny blink cepet.
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.
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 ? ???
Kalo menggunakan kabel PC ke uC aj gagal gmana yg lainnya ?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.
Ini harus 100% tidak gagal baru bisa lanjut.
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?
rs485???? gimanaya... cr pakenya... sy coba pke atmega128 buat ngontrol servo dynamixel ax-12 tp blm ngertinih >:(
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?
until UDRE gunanya apa ya?? btw UDRE tuh register buat apaan ya??