www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART, Zeichen von PC zu Mikrocontroller


Autor: Julian O. (juliano)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo am Sonntagnachmittag.

Ich habe folgendes Problem: Ich will Zeichen vom PC zum Uc (ATMEGA8) 
über RS232 bzw. UART senden.

Voraussetzungen:
- Senden vom Uc zum PC funktioniert (von daher sollten die Einstellungen 
in Hyperterm, also Baudrate, Stopbit usw. stimmen).
- Ein MAX232 ist eingebaut, beschaltet wie im Turorial 
AVR-Tutorial: UART
- Der uC wird mit einem Quarz (4,9152MHZ) betrieben, die Frequenz ist im 
Makefile angegeben

Codeschnipsel:

Initialisierung
void uart_init(void)
   {
   UCSRB = (1 << TXEN) | (1 << RXEN); // UART TX & RX einschalten

   UCSRC = (1 << URSEL) | (3<<UCSZ0);    // Asynchron 8N1 
   
   UBRRH = UBRR_VAL >> 8;
   UBRRL = UBRR_VAL & 0xFF;
   }

Funktion zum empfangen der Zeichen
char uart_getc(void)
   {
   while (!(UCSRA & (1<<RXC)))   // warten bis Zeichen verfuegbar
      {
      }
   return UDR;     // Zeichen aus UDR an Aufrufer zurueckgeben
   }

Ausschnitt aus main()
void main(void)
  {
  uart_init();
  uart_puts("start"); //Funktion zum senden von Strings
  while(1)
    {
    char test;
    test = uart_getc();
    uart_putc(test);
    uart_putc(',');
    }
  }

Liegt der Hund im Code begraben oder habe ich doch was in der 
Verschaltung vermurkst?

Achja meine Vorgehensweise:
ich starte Hyperterm, dann den uC. In Hyperterm erscheint "Start". Jetzt 
drücke ich eine Taste, daraufhin müsste doch eigentlich der uC ein 
"Echo" gefolgt von einem Komma erzeugen??

Einen schönen Sonntag! Julian

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Code sieht richtig aus. Baudratenprobleme sind es wohl nicht, wenn 
Senden AVR => PC geht.

Ich würde die Verkabelung peinlich genau prüfen. Es braucht mindestens 
DREI Verbindungen (TX, RX und gern vergessen GND - ist mir auch schon 
passiert)

Die TX-Leitung des PC führt im Ruhezustand Spannung. Die am Kabelende 
suchen und die muss dann an den MAX232 an einen RXIN gelangen. Der 
gleichzahlige RSOUT muss dann an den RXD des AVR.

Oder mal auf der AVR Seite das TXIN und RXOUT Paar brücken. Der PC 
müsste dann ein Echo bekommen, wenn MAX232, Stecker, Kabel, Stecker OK 
sind.

Autor: Julian O. (juliano)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Stefan,

> Ich würde die Verkabelung peinlich genau prüfen. Es braucht mindestens
> DREI Verbindungen (TX, RX und gern vergessen GND - ist mir auch schon
> passiert)

3 Verbindungen sind da, eigentlich auch richtig.

> Oder mal auf der AVR Seite das TXIN und RXOUT Paar brücken. Der PC
> müsste dann ein Echo bekommen, wenn MAX232, Stecker, Kabel, Stecker OK
> sind.

Funktioniert, wenn auch mit ca. 10% Fehlern, d.h. es wir ein anderes 
Zeichen ge-echot wie eingegeben.

Nachdem ich gerade die Kabelbrücke entfernt und den uC wieder gestartet 
habe funktioniert alles wieder bestens. Vermutlich irgendein Wackler, 
ver******mte  Breadboards...

Danke trotzdem für deine Hilfe!

Eine gute Nacht, Julian

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.