RS232 daten empfangen

Gast #545779
Lesenswert?
• ▲
▼
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
Gast #545796
Lesenswert?
• ▲
▼
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
Gast #545817
Lesenswert?
• ▲
▼
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.