UART RX Störungen (Tiny2313)

Gast #3207338
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
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.
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)
Gast
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
@ 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.
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
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

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.