UART RX Störungen (Tiny2313)

Gast #3207338
Lesenswert?

Hi,

mein µC wertet jede kleine Störung am RX Pin als Daten aus.

Ich arbeite mit dem ATTiny2313 und einem RX Interrupt. Somit hängt mein 
Programm ewig in der ISR fest wenn ich den RX Pin berühre bzw. eine 
Störung darauf ankommt.

Ich könnte natürlich den Input in der ISR filtern und nur bei "echten" 
Zeichen den Code ausführen lassen, aber das kann ja nicht die Lösung 
sein.

Hat jemand eine Ahnung woher das Verhalten kommen könnte? Vielleicht ein 
defekter µC?

btw:
Eine Litze (Antenne) an dem RX Pin und eine blinkende LED in der ISR ist 
übrigens ein super Bewegungs- bzw. Berührungsmelder :-D
Moderator (Firma: Titel) Persönliche Seite #3207346
Lesenswert?

Benedikt schrieb:
> Ich arbeite mit dem ATTiny2313 und einem RX Interrupt. Somit hängt mein
> Programm ewig in der ISR fest wenn ich den RX Pin berühre bzw. eine
> Störung darauf ankommt.
Das unbekannte Programm ist fehlerhaft geschrieben. Und zudem ist die 
Schaltung fehlerhaft, denn ein offener Eingang darf nicht möglich sein, 
sondern mit einem Pullup/down auf einen inaktiven Pegel gezogen werden.

> Hat jemand eine Ahnung woher das Verhalten kommen könnte?
Offene CMOS-Eingänge sind extrem hochohmig. Ihre Eingangstransistoren 
laden sich so auf, dass sich die halbe Versorgungsspannung einstellt und 
der kleinste "Mückenfurz" daraus einen High- oder Low-Pegel machen kann.

> Vielleicht ein defekter µC?
Wenn du den offenen Eingang noch ein paarmal anfasst, dann ja.
Gast #3207395
Lesenswert?

Lothar Miller schrieb:
> Das unbekannte Programm ist fehlerhaft geschrieben.

Das Programm läuft problemlos und so wie es soll.

Problematisch ist meine Denkfähigkeit bei der Hitze. (nein sonst ist sie 
in Ordnung)

RX braucht (natürlich) einen Pullup auf 5V, dann klappt alles.

Mal wieder unnötig eine Frage gestellt :-P
#3207429
Lesenswert?

Benedikt schrieb:
> Somit hängt mein
> Programm ewig in der ISR fest wenn ich den RX Pin berühre bzw. eine
> Störung darauf ankommt.

Wer macht denn bloß sowas?
Eine ISR macht ihr Ding und geht sofort wieder zurück.

Im Falle der UART liest die ISR genau ein Byte ein.
Und bis zum nächsten Byte (riesige 10 Bitzeiten lang) ist das Main 
wieder am Zuge.
Gast #3207478
Lesenswert?

Mein UART hängt zu 99% frei auf einem Pinhead, nur wenn man etwas 
konfigurieren will wird ein USB-UART Kabel angeschlossen.

Ein Pullup auf 5V ist hier die Lösung. Jedoch braucht es keinen 
externen, denn hier kann der interne verwendet werden.

Mit
1
 PORTD |= (1<<PIND0)
ist das Problem behoben.

Siehe:
http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen#Pullup-Widerstand

[/Problem]

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