www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART RX Fehler


Autor: Peter F. (piet)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Der Mega16 befindet sich auf einer Platine, an der Pfostenleiste Rechts 
liegen RXD und TXD, GND wird über eine extra Verbindung hergestellt, 
getaktet mit 16 Mhz.

Der µC kann wunderbar Daten senden aber er möchte keine Empfangen, ich 
benutze einen FT232.
Auf der Platine befindet sich noch ein Mega32, dieser empfängt Daten vom 
FT232 deshalb schließe ich einen fehler des FT232 aus.
Der Mega32 auf dem Board kann auch nur Daten von dem Mega16 Empfangen 
aber daten die an ihn gesendet werden kommen nicht an.

Leitungen sind durchgeklinkelt, auf Kurzschluss geprüft und nachgelötet.

Um PBMAC zu vermeiden habe ich den nächstbesten Code aus dem Netz per 
C&P getestet, funktioniert leider auch nicht.
#include <avr/io.h> 

#define USART_BAUDRATE 9600 
#define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1) 

int main (void) 
{ 
   char ReceivedByte; 

   UCSRB |= (1 << RXEN) | (1 << TXEN);   // Turn on the transmission and reception circuitry 
   UCSRC |= (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1); // Use 8-bit character sizes 

   UBRRL = BAUD_PRESCALE; // Load lower 8-bits of the baud rate value into the low byte of the UBRR register 
   UBRRH = (BAUD_PRESCALE >> 8); // Load upper 8-bits of the baud rate value into the high byte of the UBRR register 
while ((UCSRA & (1 << UDRE)) == 0) {};
  UDR = 0xAA;

   for (;;) // Loop forever 
   { 
      while ((UCSRA & (1 << RXC)) == 0) {}; // Do nothing until data have been recieved and is ready to be read from UDR 
      ReceivedByte = UDR; // Fetch the recieved byte value into the variable "ByteReceived" 

      while ((UCSRA & (1 << UDRE)) == 0) {}; // Do nothing until UDR is ready for more data to be written to it 
      UDR = ReceivedByte; // Echo back the received byte back to the computer 
   }    
}

Jemand eine Idee?

Mfg,
Peter

Autor: Gamma.Ray (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmmm code sieht in ordnung aus...

schau doch mal mit dem oszi auf die RXleitung vom Atmega und schau ob da 
die bits ankommen...

an hand des layout bildes kann i net viel erkennen...

LG Gamma.Ray

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

mein letzter UART-Fehler, der mich 2 Stunden gekostet hat, war eine 
feine Zinnbrücke zum Nachbarpin. Flüchtige Signalkontrolle zeigt 
Signale. Die waren nur völlig falsch, je nach Pegel des Nachbarn....

Gruß aus Berlin
Michael

Autor: Peter F. (piet)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo und danke für die Antworten!
Am Pin war alles angekommen aber nicht "im" µC, ich hab mich dann aus 
frust gestern nacht noch entschlossen den µC zu tauschen, nun geht es.

Ich konnte keine Lötfehler finden, ich vermute der IC hatte einen weg 
bekommen beim Löten. Wie weiss ich nicht aber was anderes kanns 
eignetlich nich sein.

Mfg,
Peter

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.