Forum: Mikrocontroller und Digitale Elektronik UART RX Störungen (Tiny2313)


von Benedikt (Gast)


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

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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.

von Stefan P. (form)


Lesenswert?

Hängt der RX-Pin sonst nirgenswo dran? Wozu hast Du dann den Interrupt 
dafür freigeschaltet?
Wenn es aber so empfindlich trotz angeschlossenem "Sender" ist, würde 
ich den Fehler eher bei ihm suchen. (zu Hochohmig - Da könnte dann ein 
Pull-Up helfen)

von Benedikt (Gast)


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

von Falk B. (falk)


Lesenswert?

@ Benedikt (Gast)

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

Der UART Eingang braucht im Normalfall keinen Pull-Up. Denn schließlich 
wird dieser von einem IC, oft MAX232 getrieben. Aber ohne deine 
Schaltung zu kennen kann man das nicht beurteilen.

von Peter D. (peda)


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.

von Benedikt (Gast)


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]

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.