www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RS232 daten empfangen


Autor: baur (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: jonny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier ist meine ISR-Routine:
int NextChar;
unsigned char temp_str[40];
int rx_flag;
 
ISR(USART_RXC_vect)  {
  temp_str[NextChar] = UDR;
  if (temp_str[NextChar] == 0x0D) {
  rx_flag=1;
  NextChar=0;
  }
  else {
  NextChar++;
}
}

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.
switch(temp_str[0]) {
case 0x54:
 // Zeichen ist ein großes T
break;
}

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

Autor: baur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: jonny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also da kann ich dir nur diese Links geben:
UART:
http://www.mikrocontroller.net/articles/AVR-GCC-Tu...
Interrupts:
http://www.mikrocontroller.net/articles/AVR-GCC-Tu...
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

Autor: baur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok

dank dir


noch einen schönen abend
dbaur

Autor: jonny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kein thema

jonny

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.