سلام دوستان من میخوام از طریق rx و tx یک سری اطلاعات (فقط حرف مثلا "a,b,c" یا "1234" از آردینو بفرستم به atmega8 و برعکس هرچی گشتم چیزی دستگیرم نشد کسی از دوستان هست بتونه کمکم کنه یا کدی چیزی بزاره ممنون
اطلاعیه
Collapse
No announcement yet.
ارتباط آردینو با atmega
Collapse
X
-
پاسخ : ارتباط آردینو با atmega
نوشته اصلی توسط relax021 نمایش پست هاسلام دوستان من میخوام از طریق rx و tx یک سری اطلاعات (فقط حرف مثلا "a,b,c" یا "1234" از آردینو بفرستم به atmega8 و برعکس هرچی گشتم چیزی دستگیرم نشد کسی از دوستان هست بتونه کمکم کنه یا کدی چیزی بزاره ممنون
اگر بلد باشید با رابط سریال آردوینو و میکروکنترلر های AVR کار کنیدهمه چیز حله.
حال مشکل شما دقیقا با کدوم طرف قضیه هستش؟
-
پاسخ : ارتباط آردینو با atmega
سلام
این کد را نگاه کنید، HT9032 را توسط RX و TX به آردویینو متصل کرده یک کالر آیدی برای بلاک کردن تماس ساخته و نتایج را روی LCD نمایش می ده.
شما هم می تونید مشابه همین عمل کنید.
امیدوارم کمکتون کنه
کد:#define Serial_Debug false #include <Wire.h> #include <LiquidCrystal_I2C.h> #include <LAudio.h> #define HOOK 2 LiquidCrystal_I2C lcd(0x20, 20, 4); static int state=0; static int o=0; static int i=0; static char nam[128]; static char num[25]; static char dat[25]; static int plen=0; static int nlen=0; static int dlen=0; static int mlen=0; static int len=0; int SER = 0; String str = ""; void BlockCallers() { if (str == "106"){ lcd.setCursor(0,0); lcd.print("Last Call BLOCKED :"); Play_MP3(); } } void setup() { if(Serial_Debug){ Serial.begin(115200); while(!Serial){ delay(100); } } pinMode(HOOK, OUTPUT); digitalWrite(HOOK, LOW); LAudio.begin(); LAudio.setVolume(6); lcd.init(); lcd.noBacklight(); delay(400); lcd.clear(); lcd.backlight(); lcd.setCursor(0,1); lcd.print(" Caller ID V1.6 "); lcd.setCursor(0,2); lcd.print(" Waiting for Caller"); Serial.println("Waiting for next Caller"); delay(3500); Serial1.begin(1200); } void loop() { Ht9032_get(); if( state == 10 ) { o=0; Serial.println("State: 10 "); Serial.print("DATE: "); Serial.print(char(dat[0])); Serial.print(char(dat[1])); Serial.print('/'); Serial.print(char(dat[2])); Serial.println(char(dat[3])); Serial.print("TIME: "); Serial.print(char(dat[4])); Serial.print(char(dat[5])); Serial.print(':'); Serial.print(char(dat[6])); Serial.println(char(dat[7])); Serial.print("NAME: "); for(int i=0;i<nlen;i++) { Serial.print(char(nam[i])); } Serial.println(""); Serial.print("NUMBER: "); for(int i=0;i<mlen;i++) { Serial.print(char(num[i])); } Serial.println(""); state=0; lcd.clear(); lcd.setCursor(0,0); lcd.print("Last Call Received :"); lcd.setCursor(0,1); lcd.print("Date:"); lcd.print(char(dat[0])); lcd.print(char(dat[1])); lcd.print('/'); lcd.print(char(dat[2])); lcd.print(char(dat[3])); lcd.print(" "); lcd.print(char(dat[4])); lcd.print(char(dat[5])); lcd.print(':'); lcd.print(char(dat[6])); lcd.print(char(dat[7])); lcd.setCursor(0,2); lcd.print("Name: "); for(int i=0;i<nlen;i++) { lcd.print(char(nam[i])); } lcd.setCursor(0,3); lcd.print("Num :"); str = ""; for(int i=0;i<mlen;i++) { lcd.print(char(num[i])); str += char(num[i]); } BlockCallers(); } } void Play_MP3() { Serial.println("Blocked Caller Detected"); digitalWrite(HOOK, HIGH); Serial.println("Off Hook"); delay(1500); Serial.println("Playing message to caller"); LAudio.playFile( storageFlash,(char*)"Klaxon.mp3"); delay(7500); digitalWrite(HOOK, LOW); Serial.println("On Hook"); delay(5000); } void Ht9032_get() { if (Serial1.available() > 0) { SER = Serial1.read(); /* * states * 0 - waiting for U's * 1 - waiting for 25 U's and then an 0x80 * 2 - waiting for packet len * 3 - waiting for message id * 4 - get name len * 5 - receiving name * 6 - get number len * 7 - receiving number * 8 - get date len * 9 - receiving date * 10 - packet complete * * message ids * 1 - date * 2 - number * 4 - number not found reason * 7 - name * 8 - name not found reason * * reasons * O - Out of area (no caller ID available) * P - Private party (Blocked) * */ switch(state) { case 0:if (SER==0x55) { state=1; i=1; Serial.println("State: 0 "); }break; case 1:if (SER==0x55) { i++; } if(SER==0x80) { if(i > 25) { state=2; } } Serial.println("State: 1 "); break; case 2:plen = SER; i=0; state=3; Serial.println("State: 2 "); Serial.print("Packet Length: "); Serial.println(plen); break; case 3: o++; Serial.println("State: 3 "); Serial.print("MID: "); Serial.println(SER); if(SER==1) { state=8; } else if(SER==2) { state=6; } else if(SER==4) { state=6; } else if(SER==7) { state=4; } else if(SER==8) { state=4; } break; case 4:len = SER; nlen = len ; o++; i=0; state=5; Serial.println("State: 4 "); Serial.print("Data Length: "); Serial.println(nlen); break; case 6:len = SER; mlen = len ; o++; i=0; state=7; Serial.println("State: 6 "); Serial.print("Data Length: "); Serial.println(mlen); break; case 8:len = SER; dlen = len ; o++; i=0; state=9; Serial.println("State: 8 "); Serial.print("Data Length: "); Serial.println(dlen); break; case 5:nam[i]=SER; i++; o++; if( i > nlen - 1 ) { state=3; i=0; } if( o > plen - 1 ) { state=10; } Serial.println("State: 5 "); break; case 7:num[i]=SER; i++; o++; if( i > mlen - 1 ) { state=3; i=0; } if( o > plen - 1 ) { state=10; } Serial.println("State: 7 "); break; case 9:dat[i]=SER; i++; o++; if( i > dlen - 1 ) { state=3; i=0; } if( o > plen - 1 ) { state=10; } Serial.println("State: 9 "); break; default:break; } } }
دیدگاه
-
پاسخ : ارتباط آردینو با atmega
نوشته اصلی توسط hossein.m98 نمایش پست هاسلام
اگر بلد باشید با رابط سریال آردوینو و میکروکنترلر های AVR کار کنیدهمه چیز حله.
حال مشکل شما دقیقا با کدوم طرف قضیه هستش؟
دلیل: ادغام دو پست برای جلوگیری از اسپم
بیتشر مشکل من سمت avr هست
دلیل: ادغام دو پست برای جلوگیری از اسپم
نوشته اصلی توسط Quantum. نمایش پست هاسلام
این کد را نگاه کنید، HT9032 را توسط RX و TX به آردویینو متصل کرده یک کالر آیدی برای بلاک کردن تماس ساخته و نتایج را روی LCD نمایش می ده.
شما هم می تونید مشابه همین عمل کنید.
امیدوارم کمکتون کنه
کد:#define Serial_Debug false #include <Wire.h> #include <LiquidCrystal_I2C.h> #include <LAudio.h> #define HOOK 2 LiquidCrystal_I2C lcd(0x20, 20, 4); static int state=0; static int o=0; static int i=0; static char nam[128]; static char num[25]; static char dat[25]; static int plen=0; static int nlen=0; static int dlen=0; static int mlen=0; static int len=0; int SER = 0; String str = ""; void BlockCallers() { if (str == "106"){ lcd.setCursor(0,0); lcd.print("Last Call BLOCKED :"); Play_MP3(); } } void setup() { if(Serial_Debug){ Serial.begin(115200); while(!Serial){ delay(100); } } pinMode(HOOK, OUTPUT); digitalWrite(HOOK, LOW); LAudio.begin(); LAudio.setVolume(6); lcd.init(); lcd.noBacklight(); delay(400); lcd.clear(); lcd.backlight(); lcd.setCursor(0,1); lcd.print(" Caller ID V1.6 "); lcd.setCursor(0,2); lcd.print(" Waiting for Caller"); Serial.println("Waiting for next Caller"); delay(3500); Serial1.begin(1200); } void loop() { Ht9032_get(); if( state == 10 ) { o=0; Serial.println("State: 10 "); Serial.print("DATE: "); Serial.print(char(dat[0])); Serial.print(char(dat[1])); Serial.print('/'); Serial.print(char(dat[2])); Serial.println(char(dat[3])); Serial.print("TIME: "); Serial.print(char(dat[4])); Serial.print(char(dat[5])); Serial.print(':'); Serial.print(char(dat[6])); Serial.println(char(dat[7])); Serial.print("NAME: "); for(int i=0;i<nlen;i++) { Serial.print(char(nam[i])); } Serial.println(""); Serial.print("NUMBER: "); for(int i=0;i<mlen;i++) { Serial.print(char(num[i])); } Serial.println(""); state=0; lcd.clear(); lcd.setCursor(0,0); lcd.print("Last Call Received :"); lcd.setCursor(0,1); lcd.print("Date:"); lcd.print(char(dat[0])); lcd.print(char(dat[1])); lcd.print('/'); lcd.print(char(dat[2])); lcd.print(char(dat[3])); lcd.print(" "); lcd.print(char(dat[4])); lcd.print(char(dat[5])); lcd.print(':'); lcd.print(char(dat[6])); lcd.print(char(dat[7])); lcd.setCursor(0,2); lcd.print("Name: "); for(int i=0;i<nlen;i++) { lcd.print(char(nam[i])); } lcd.setCursor(0,3); lcd.print("Num :"); str = ""; for(int i=0;i<mlen;i++) { lcd.print(char(num[i])); str += char(num[i]); } BlockCallers(); } } void Play_MP3() { Serial.println("Blocked Caller Detected"); digitalWrite(HOOK, HIGH); Serial.println("Off Hook"); delay(1500); Serial.println("Playing message to caller"); LAudio.playFile( storageFlash,(char*)"Klaxon.mp3"); delay(7500); digitalWrite(HOOK, LOW); Serial.println("On Hook"); delay(5000); } void Ht9032_get() { if (Serial1.available() > 0) { SER = Serial1.read(); /* * states * 0 - waiting for U's * 1 - waiting for 25 U's and then an 0x80 * 2 - waiting for packet len * 3 - waiting for message id * 4 - get name len * 5 - receiving name * 6 - get number len * 7 - receiving number * 8 - get date len * 9 - receiving date * 10 - packet complete * * message ids * 1 - date * 2 - number * 4 - number not found reason * 7 - name * 8 - name not found reason * * reasons * O - Out of area (no caller ID available) * P - Private party (Blocked) * */ switch(state) { case 0:if (SER==0x55) { state=1; i=1; Serial.println("State: 0 "); }break; case 1:if (SER==0x55) { i++; } if(SER==0x80) { if(i > 25) { state=2; } } Serial.println("State: 1 "); break; case 2:plen = SER; i=0; state=3; Serial.println("State: 2 "); Serial.print("Packet Length: "); Serial.println(plen); break; case 3: o++; Serial.println("State: 3 "); Serial.print("MID: "); Serial.println(SER); if(SER==1) { state=8; } else if(SER==2) { state=6; } else if(SER==4) { state=6; } else if(SER==7) { state=4; } else if(SER==8) { state=4; } break; case 4:len = SER; nlen = len ; o++; i=0; state=5; Serial.println("State: 4 "); Serial.print("Data Length: "); Serial.println(nlen); break; case 6:len = SER; mlen = len ; o++; i=0; state=7; Serial.println("State: 6 "); Serial.print("Data Length: "); Serial.println(mlen); break; case 8:len = SER; dlen = len ; o++; i=0; state=9; Serial.println("State: 8 "); Serial.print("Data Length: "); Serial.println(dlen); break; case 5:nam[i]=SER; i++; o++; if( i > nlen - 1 ) { state=3; i=0; } if( o > plen - 1 ) { state=10; } Serial.println("State: 5 "); break; case 7:num[i]=SER; i++; o++; if( i > mlen - 1 ) { state=3; i=0; } if( o > plen - 1 ) { state=10; } Serial.println("State: 7 "); break; case 9:dat[i]=SER; i++; o++; if( i > dlen - 1 ) { state=3; i=0; } if( o > plen - 1 ) { state=10; } Serial.println("State: 9 "); break; default:break; } } }
بیتشر مشکل من سمت avr هست
دلیل: ادغام دو پست برای جلوگیری از اسپم
نوشته اصلی توسط Quantum. نمایش پست هاسلام
این کد را نگاه کنید، HT9032 را توسط RX و TX به آردویینو متصل کرده یک کالر آیدی برای بلاک کردن تماس ساخته و نتایج را روی LCD نمایش می ده.
شما هم می تونید مشابه همین عمل کنید.
امیدوارم کمکتون کنه
کد:#define Serial_Debug false #include <Wire.h> #include <LiquidCrystal_I2C.h> #include <LAudio.h> #define HOOK 2 LiquidCrystal_I2C lcd(0x20, 20, 4); static int state=0; static int o=0; static int i=0; static char nam[128]; static char num[25]; static char dat[25]; static int plen=0; static int nlen=0; static int dlen=0; static int mlen=0; static int len=0; int SER = 0; String str = ""; void BlockCallers() { if (str == "106"){ lcd.setCursor(0,0); lcd.print("Last Call BLOCKED :"); Play_MP3(); } } void setup() { if(Serial_Debug){ Serial.begin(115200); while(!Serial){ delay(100); } } pinMode(HOOK, OUTPUT); digitalWrite(HOOK, LOW); LAudio.begin(); LAudio.setVolume(6); lcd.init(); lcd.noBacklight(); delay(400); lcd.clear(); lcd.backlight(); lcd.setCursor(0,1); lcd.print(" Caller ID V1.6 "); lcd.setCursor(0,2); lcd.print(" Waiting for Caller"); Serial.println("Waiting for next Caller"); delay(3500); Serial1.begin(1200); } void loop() { Ht9032_get(); if( state == 10 ) { o=0; Serial.println("State: 10 "); Serial.print("DATE: "); Serial.print(char(dat[0])); Serial.print(char(dat[1])); Serial.print('/'); Serial.print(char(dat[2])); Serial.println(char(dat[3])); Serial.print("TIME: "); Serial.print(char(dat[4])); Serial.print(char(dat[5])); Serial.print(':'); Serial.print(char(dat[6])); Serial.println(char(dat[7])); Serial.print("NAME: "); for(int i=0;i<nlen;i++) { Serial.print(char(nam[i])); } Serial.println(""); Serial.print("NUMBER: "); for(int i=0;i<mlen;i++) { Serial.print(char(num[i])); } Serial.println(""); state=0; lcd.clear(); lcd.setCursor(0,0); lcd.print("Last Call Received :"); lcd.setCursor(0,1); lcd.print("Date:"); lcd.print(char(dat[0])); lcd.print(char(dat[1])); lcd.print('/'); lcd.print(char(dat[2])); lcd.print(char(dat[3])); lcd.print(" "); lcd.print(char(dat[4])); lcd.print(char(dat[5])); lcd.print(':'); lcd.print(char(dat[6])); lcd.print(char(dat[7])); lcd.setCursor(0,2); lcd.print("Name: "); for(int i=0;i<nlen;i++) { lcd.print(char(nam[i])); } lcd.setCursor(0,3); lcd.print("Num :"); str = ""; for(int i=0;i<mlen;i++) { lcd.print(char(num[i])); str += char(num[i]); } BlockCallers(); } } void Play_MP3() { Serial.println("Blocked Caller Detected"); digitalWrite(HOOK, HIGH); Serial.println("Off Hook"); delay(1500); Serial.println("Playing message to caller"); LAudio.playFile( storageFlash,(char*)"Klaxon.mp3"); delay(7500); digitalWrite(HOOK, LOW); Serial.println("On Hook"); delay(5000); } void Ht9032_get() { if (Serial1.available() > 0) { SER = Serial1.read(); /* * states * 0 - waiting for U's * 1 - waiting for 25 U's and then an 0x80 * 2 - waiting for packet len * 3 - waiting for message id * 4 - get name len * 5 - receiving name * 6 - get number len * 7 - receiving number * 8 - get date len * 9 - receiving date * 10 - packet complete * * message ids * 1 - date * 2 - number * 4 - number not found reason * 7 - name * 8 - name not found reason * * reasons * O - Out of area (no caller ID available) * P - Private party (Blocked) * */ switch(state) { case 0:if (SER==0x55) { state=1; i=1; Serial.println("State: 0 "); }break; case 1:if (SER==0x55) { i++; } if(SER==0x80) { if(i > 25) { state=2; } } Serial.println("State: 1 "); break; case 2:plen = SER; i=0; state=3; Serial.println("State: 2 "); Serial.print("Packet Length: "); Serial.println(plen); break; case 3: o++; Serial.println("State: 3 "); Serial.print("MID: "); Serial.println(SER); if(SER==1) { state=8; } else if(SER==2) { state=6; } else if(SER==4) { state=6; } else if(SER==7) { state=4; } else if(SER==8) { state=4; } break; case 4:len = SER; nlen = len ; o++; i=0; state=5; Serial.println("State: 4 "); Serial.print("Data Length: "); Serial.println(nlen); break; case 6:len = SER; mlen = len ; o++; i=0; state=7; Serial.println("State: 6 "); Serial.print("Data Length: "); Serial.println(mlen); break; case 8:len = SER; dlen = len ; o++; i=0; state=9; Serial.println("State: 8 "); Serial.print("Data Length: "); Serial.println(dlen); break; case 5:nam[i]=SER; i++; o++; if( i > nlen - 1 ) { state=3; i=0; } if( o > plen - 1 ) { state=10; } Serial.println("State: 5 "); break; case 7:num[i]=SER; i++; o++; if( i > mlen - 1 ) { state=3; i=0; } if( o > plen - 1 ) { state=10; } Serial.println("State: 7 "); break; case 9:dat[i]=SER; i++; o++; if( i > dlen - 1 ) { state=3; i=0; } if( o > plen - 1 ) { state=10; } Serial.println("State: 9 "); break; default:break; } } }
بیتشر مشکل من سمت avr هست
دیدگاه
-
پاسخ : ارتباط آردینو با atmega
نوشته اصلی توسط hossein.m98 نمایش پست هااول از همه از اتصالات مطمئن بشید. فراموش نکنید که زمین ها باید بهم متصل باشن . TX آردوینو به RX میکروکنترلر و RX آردوینو هم باید به TX میکروکنترلر متصل بشه. کد سمت AVR رو بفرستیدتا اونم بررسی کنیم.
کد:[URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <mega8.h> [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <delay.h> [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <stdio.h> void main(void) { char test; DDRC.5=1; TCCR0=(0<<WGM00) | (0<<COM01) | (0<<COM00) | (0<<WGM01) | (0<<CS02) | (0<<CS01) | (0<<CS00); TCNT0=0x00; OCR0=0x00; TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10); TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (0<<CS10); TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; ASSR=0<<AS2; TCCR2=(0<<PWM2) | (0<<COM21) | (0<<COM20) | (0<<CTC2) | (0<<CS22) | (0<<CS21) | (0<<CS20); TCNT2=0x00; OCR2=0x00; TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<OCIE0) | (0<<TOIE0); MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00); MCUCSR=(0<<ISC2); // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: On // USART Mode: Asynchronous // USART Baud Rate: 9600 UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM); UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (1<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8); UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL); UBRRH=0x00; UBRRL=0x33; ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0); SFIOR=(0<<ACME); ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0); SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0); TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE); while (1) { if((UCSRA & (1<<RXC))) { test=getchar(); if (test=='a'){ PORTC.5=1; } if (test=='b'){ PORTC.5==0; } } } }
جدیدترین ویرایش توسط relax021; ۲۲:۰۸ ۱۳۹۸/۰۳/۱۹.
دیدگاه
-
پاسخ : ارتباط آردینو با atmega
نوشته اصلی توسط hossein.m98 نمایش پست هامن با تابع getchar تا حالا کار نکردم. خطی که تابع getchar داره رو با خط زیر تعویض کنید و نتیجه رو گزارش کنید:
test=UDR;
این دوتا خط اجرا نمیشن
کد:[COLOR=#28282B][FONT=monospace]if (test=='a'){[/FONT][/COLOR]PORTC.5=1; } if (test=='b'){ PORTC.5==0; [COLOR=#28282B][FONT=monospace]}[/FONT][/COLOR]
دیدگاه
-
پاسخ : ارتباط آردینو با atmega
نوشته اصلی توسط relax021 نمایش پست هاتعویض کردم مشکلی پیش نیومد ولی
این دوتا خط اجرا نمیشن
کد:[COLOR=#28282B][FONT=monospace]if (test=='a'){[/FONT][/COLOR]PORTC.5=1; } if (test=='b'){ PORTC.5==0; [COLOR=#28282B][FONT=monospace]}[/FONT][/COLOR]
اگر این حالت سوم اجرا شد میفهمیم داده دریافتی نادرسته. اگر اجرا نشد میفهمیم کلا چیزی دریافت نمیشه.
دیدگاه
-
پاسخ : ارتباط آردینو با atmega
نوشته اصلی توسط relax021 نمایش پست هاممنون از اتصالات مطمعا هستم اما تو برنامه نویسی avr خیلی ضعیف هستم
کد:[URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <mega8.h> [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <delay.h> [URL="https://www.eca.ir/forums/usertag.php?do=list&action=hash&hash=include"]#include[/URL] <stdio.h> void main(void) { char test; DDRC.5=1; TCCR0=(0<<WGM00) | (0<<COM01) | (0<<COM00) | (0<<WGM01) | (0<<CS02) | (0<<CS01) | (0<<CS00); TCNT0=0x00; OCR0=0x00; TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10); TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (0<<CS10); TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; ASSR=0<<AS2; TCCR2=(0<<PWM2) | (0<<COM21) | (0<<COM20) | (0<<CTC2) | (0<<CS22) | (0<<CS21) | (0<<CS20); TCNT2=0x00; OCR2=0x00; TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<OCIE0) | (0<<TOIE0); MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00); MCUCSR=(0<<ISC2); // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: On // USART Mode: Asynchronous // USART Baud Rate: 9600 UCSRA=(0<<RXC) | (0<<TXC) | (0<<UDRE) | (0<<FE) | (0<<DOR) | (0<<UPE) | (0<<U2X) | (0<<MPCM); UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (1<<RXEN) | (1<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8); UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL); UBRRH=0x00; UBRRL=0x33; ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0); SFIOR=(0<<ACME); ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0); SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0); TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE); while (1) { if((UCSRA & (1<<RXC))) { test=getchar(); if (test=='a'){ PORTC.5=1; } if (test=='b'){ PORTC.5==0; } } } }
و من فقط باید از داخل آردوینو یک داده بفرستم به tx ???
دیدگاه
-
پاسخ : ارتباط آردینو با atmega
نوشته اصلی توسط relax021 نمایش پست هااز نظر شما این کد دیگه مشکلی نداره
و من فقط باید از داخل آردوینو یک داده بفرستم به tx ???
UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);
رو با این خط جایگزین کنید:
UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (1<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);
دیدگاه
-
پاسخ : ارتباط آردینو با atmega
نوشته اصلی توسط hossein.m98 نمایش پست هانمیدونم سمت آردوینو بیت پایان چقدره ولی برای آخرین تلاش بیت USBS از رجیستر UCSRC رو هم فعال کنید تا تعداد بیت پایان به 2 بیت افزایش پیدا کنه. خط
UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (0<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);
رو با این خط جایگزین کنید:
UCSRC=(1<<URSEL) | (0<<UMSEL) | (0<<UPM1) | (0<<UPM0) | (1<<USBS) | (1<<UCSZ1) | (1<<UCSZ0) | (0<<UCPOL);
جدیدترین ویرایش توسط relax021; ۲۲:۵۹ ۱۳۹۸/۰۳/۱۹.
دیدگاه
-
پاسخ : ارتباط آردینو با atmega
نوشته اصلی توسط relax021 نمایش پست هامیخواهید کد آردینو هم بفرستم شتید مشکل اونجا باشه البته اگر زحمتتون نیست
Sent from my LG-H870S using Tapatalk
دیدگاه
-
پاسخ : ارتباط آردینو با atmega
نوشته اصلی توسط hossein.m98 نمایش پست هاوالا آردوینو تا حالا کار نکردم ولی کدش رو قرار بدید اگر خودم هم بلد نباشم دوستان هستن که کمک کنن
Sent from my LG-H870S using Tapatalk
کد:char str[4]; void setup() { Serial.begin(9600); } void loop() { int value=1234; //this would be much more exciting if it was a sensor value itoa(value, str, 10); //Turn value into a character array Serial.write(str, 4); [FONT=Yekan]} [/FONT]
کد:[FONT=Yekan]SoftwareSerial mySerial(10, 11);[/FONT]void setup() { mySerial.begin(9600); } void loop() { mySerial.write(45); [FONT=Yekan] int bytesSent = mySerial.write(“hello”); [/FONT]
دیدگاه
-
پاسخ : ارتباط آردینو با atmega
نوشته اصلی توسط relax021 نمایش پست هاممنون این تست کردم جواب نداد ارور داد
کد:char str[4]; void setup() { Serial.begin(9600); } void loop() { int value=1234; //this would be much more exciting if it was a sensor value itoa(value, str, 10); //Turn value into a character array Serial.write(str, 4); [FONT=Yekan]} [/FONT]
کد:[FONT=Yekan]SoftwareSerial mySerial(10, 11);[/FONT]void setup() { mySerial.begin(9600); } void loop() { mySerial.write(45); [FONT=Yekan] int bytesSent = mySerial.write(“hello”); [/FONT]
Serial.begin(9600 , SERIAL_8N1);
یکبار هم این رو امتحان کنید شاید فرجی شد:
Serial.begin(9600 , SERIAL_8N2);
- تشکرها 1
دیدگاه
دیدگاه