hallo habe gerade ein problem mit meiner rs232 schnittstelle. ich kann daten senden und weis nicht richtig wie ich daten empfangen kann. soweit ich weis sollten die daten im UDR stehen. wenn ich richtig liege. verwende den atmega128 mit einem avr tool. könnte mir da eventuel jemand helfen dbaur
Hier ist meine ISR-Routine:
1 | int NextChar; |
2 | unsigned char temp_str[40]; |
3 | int rx_flag; |
4 | |
5 | ISR(USART_RXC_vect) { |
6 | temp_str[NextChar] = UDR; |
7 | if (temp_str[NextChar] == 0x0D) { |
8 | rx_flag=1; |
9 | NextChar=0; |
10 | }
|
11 | else { |
12 | NextChar++; |
13 | }
|
14 | }
|
Das speichert alle empfangene Zeichen in dem Array temp_str. Also wir aus der Zeichenfolge: Test temp_str[0] = T bzw. 0x54 temp_str[1] = e nzw. 0x65 temp_str[2] = s nzw. 0x73 temp_str[3] = t bzw. 0x74 Wenn jetzt Enter (0x0D) gedrückt gesendet wird, wird das Flag rx_flag gesetzt und mein Main-Programm reagriert drauf. Dabei wird auch NextChar wieder auf 0 gesetzt. Jetzt könntest du mit Switch und Case die Zeichen abrfragen.
1 | switch(temp_str[0]) { |
2 | case 0x54: |
3 | // Zeichen ist ein großes T
|
4 | break; |
5 | }
|
kann beliebig ausgeführt werden. Wenn du nur einzelne Zeichen abfragen willst, kannst du auch einfach mit switch und case das UDR-Register abfragen aber immer die Hex.-Nummern des Ascii-Zeichens angeben!!! mfg jonny
danke schon für die hilfe nur ich verstehe noch nicht ganz was bei dir dieser befehl macht und für was er bei dir steht -> "ISR(USART_RXC_vect)" dbaur
Also da kann ich dir nur diese Links geben: UART: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Der_UART Interrupts: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Programmieren_mit_Interrupts ISR: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#ISR >> "ISR(USART_RXC_vect)" Damit "sagt" man dem µC, was er machen soll, wenn er ein Zeichen per UART empfängt. Man könnte ihm auch so "sagen" was er machen soll wenn ein Timer bis 30 gezählt hat oder ähnliches. Ist alles in den oben genannten Links vor allem ISR und Interrupt erklärt. jonny
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.