UART empfangen funktioniert nicht

Gast #2363356
Lesenswert?

Moin Leute,

habe ein Problem ein Zeichen zu empfangen. Ich sende mit dem 
Hypertermial ein zeichen indem ich es in die Plattform über die Tastatur 
eingebe aber mein Programm geht nicht über die Abfrage ob ein Zeichen 
verfügbar ist hinaus. Kann mir jemand bei diesem Problem weiter helfen?

hier der Code:

void inti_uart(){
  UBRR0H  = UBRRH_VALUE >> 8;
  UBRR0L  = UBRRL_VALUE & 0xFF;

  UCSR0B |= (1<<RXEN0);

  // Sendestatus
  UCSR0C  =  (0<<UMSEL00)|    //EinstellungAsynchronmodus
        (0<<UMSEL01)|
        (0<<UCSZ02) |
        (1<<UCSZ01) |
              (1<<UCSZ00) ;

         }

int main(void){

DDRD  &= ~(1<<0);
DDRC   =  (1<<3)|(1<<4);
PORTC  =  (1<<3)|(1<<4);
PORTD &= ~(1<<0);

char led_on=0;

inti_uart();

while (!(UCSR0A & (1<<RXC0))) // wartet bis Zeichen verfügbar ist
  ;
PORTC ^= (1<<3);

led_on = UDR0;

if (led_on == 0)
{PORTC ^= (1<<4);
}


while(1)
    {

    }
}

P.S. Das senden habe ich in einen anderen Programm mit den gleichen 
Einstellungen getestet und es klappt. Also die Verbindung sich Terminal 
und Controller ist in Ordnung.
#2363788
Lesenswert?

Schätze mal du bist über das hier

> Hast du im Hperterminal das Handshake ausgeschaltet

gestolpert.

Im Hyperterminal ist standardmässig als Flusskontrolle (also als 
Handshake) "Hardware" eingestellt. D.h. wenn du dem PC den CLS Eingang 
an der seriellen nicht bedienst, sendet der nix. Flusskontrolle auf 
"keines" umstellen sollte den Spuk beseitigen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren