mikrocontroller.net

Forum: Compiler & IDEs USART - Senden möglich aber kein Empfangen


Autor: NoName (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
ich will die USART Schnittstelle nutzen.
Senden klappt auch schon.
Leider das Empfangen noch nicht.

Habe den Atmega32 mit einem Takt von 16MHz
und will eine Baudrate von 4800 1 Stopbit und keinem Paritätsbit(8N1)

Hier mal mein Programm:
(es soll eigentlich nur die Leds ausmachen, wenn ein Zeichen empfangen 
wurde)
//----------------------
#include <avr/io.h>
#include <stdint.h>
//----------------------
int main (void)
{
  char zeichen;

  UBRRH = 0;
  UBRRL = 207; //Baudrate von 4800

  UCSRB |= (1<<RXEN) | (1<<TXEN);
  UCSRC |= (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);

  DDRA = 0xff;
  PORTA = 0xff;

  while(1)
  {  
     while (!(UCSRA & (1<<RXC)))
     {
     }
    
     zeichen = UDR;
     PORTA = 0x00;
   }
  return(0);    
}

Ich sende die Zeichen mit dem HyperTerminal von WindowsXP.
Das komische dabei ist, sobald ich die Verbindung mit Hyperterminal 
schließe, gehn die Leds aus.

An was kann das liegen?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du schaltest deinen PORTA unabhämgig von seriellen Daten aus!

Autor: NoName (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
@ falk
die habe ich schon durchgemacht und habe keinen fehler gefunden

@ flo
wieso sollte ich PORTA unabhängig schalten?
der bleibt ja solange in der while schleife bis einmal ein zeichen 
angekommen ist

Autor: magnetus (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
NoName schrieb:
> Das komische dabei ist, sobald ich die Verbindung mit Hyperterminal
> schließe, gehn die Leds aus.

Prüfe auf der PC-Seite mal folgende Punkte:

- die Flussteuerung des COM Ports sollte auf "Keine" stehen
- deaktiviere vorsichtshalber den FIFO des COM Ports

Gruß,
Magnetus

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
NoName schrieb:
> hallo,
> @ falk
> die habe ich schon durchgemacht und habe keinen fehler gefunden
>
> @ flo
> wieso sollte ich PORTA unabhängig schalten?
> der bleibt ja solange in der while schleife bis einmal ein zeichen
> angekommen ist


Wenn du am Port A mehrere Led (zb 8) hängen hast, lass dir mal das 
Zeichen ausgeben.

Oder schalte die LED nach einer kurzen Verzögerungszeit wieder ein.

#define F_CPU 16000000

//----------------------
#include <avr/io.h>
#include <stdint.h>
#include <util/delay.h>

//----------------------
int main (void)
{
  char zeichen;

  UBRRH = 0;
  UBRRL = 207; //Baudrate von 4800

  UCSRB |= (1<<RXEN) | (1<<TXEN);
  UCSRC |= (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);

  DDRA = 0xff;
  PORTA = 0xff;

  while(1)
  {  
     while (!(UCSRA & (1<<RXC)))
     {
     }
    
     zeichen = UDR;
     PORTA = 0x00;

     _delay_ms( 1000 );
     PORTA = 0xff;
   }
  return(0);    
}

Wenns jetzt am Anfang 1 mal blinkt und danach nur bei jedem Tastendruck, 
dann hast du dir beim Hochfahren des Mega irgendein Störzeichen auf der 
UART eingehandelt.

Drück auch im Hyperterminal mehrere Tasten und auch Return. Nicht dass 
da irgendwo noch ein Buffer dazwischen sitzt, der auf das Zeilenende für 
die Übertragung wartet.

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.