Forum: Mikrocontroller und Digitale Elektronik Controller stürzt ab, wenn RS232-Kabel (länger) entfernt ist


von Dennis (Gast)


Lesenswert?

Woran liegt es, daß ein Atmega8 abstürzt, wenn das RS232 Kabel länger 
entfernt wird?

Programmiert ist der Chip mit Bascom. Es wird 1x pro Sekunde über die 
UART Schnittstelle etwas gesendet. Ist der Chip am RS232 Port vom 
Computer angeschlossen, funktioniert er Tagelang. Wird er nur wenige 
Minuten abgezogen, geht er danach auch noch. Wird er aber für einige 
Stunden abgezogen, geht danach gar nichts mehr wie es soll.

Manchmal kommt nur noch Unsinn über RS232 rein. Heute war das Problem, 
daß der Chip zwar noch lief, aber einzelne Unterfunktionen scheinbar 
nicht aufgerufen wurden.

Beispiel:
1
Temperatur = 0 
2
print Temperatur
3
Temperatur = Messe_temperatur(id) // Aktuell Raumtemperatur                    
4
print Temperatur

Hier wurde die Funktion "Messe_temperatur" nur manchmal korrekt 
ausgeführt, manchmal wurde sie komplett übersprungen. Am Computer wurde 
zwei mal die "0" gesendet. Obwohl die Funktion 20° zurückgeben müsste. 
Je nachdem, welche Zahl bei "id" verwendet wird, ging es mal und mal 
nicht. (Eine schleife zählt von 1 bis 5).

Wenn dann kurz der Strom weg genommen wird, geht der Chip wieder.

Woran könnte so ein Fehlverhalten liegen? Versucht Bascom die Daten 
irgendwie zu Puffern, wenn kein Kabel angeschlossen ist, und dieser 
Puffer spinnt? Ich habe in Bascom die RS232 Schnittstelle nicht 
gesondert aktiviert, ich verwende aktuell einfach Print.

von Werner (Gast)


Lesenswert?

Dennis schrieb:
> Versucht Bascom die Daten irgendwie zu Puffern, wenn kein Kabel
> angeschlossen ist, und dieser Puffer spinnt?

Woran soll der µC merken, ob ein Kabel angeschlossen ist, oder nicht.
Das ließe sich nur über entsprechende Programmierung erreichen, indem 
man auf Schnittstelleprotokollebene festlegt, dass der Empfänger der 
Daten immer eine Quittung senden soll.

Was dein Programm macht - keine Ahnung. Vielleicht stimmt mit deinen 
Signalpegeln etwas nicht und/oder der fängt sich über die lange Leitung 
Störungen ein, die das Programm nicht wohlgeordnet verarbeiten kann.

von Purzel H. (hacky)


Lesenswert?

Was geschieht wenn das Kabel weg ist? Der Pin sollte natuerlich mit 
einem kleinen Kondenser geblockt ein, zB 100pF. Ein richtiger RS232 
Empfaenger sieht dann Null Volt, er wird einen 300 Ohm pulldown haben.

von Michael (Gast)


Lesenswert?

Elf von Dreizehn schrieb:
> Ein richtiger RS232 Empfaenger sieht dann Null Volt

Ein richtiger RS232 Empfänger will 0V aber gar nicht sehen. Die 
standardisierten Pegelbereiche für logisch 0 und logisch 1 sind +3..15V 
bzw. -3..-15V

von Dietrich L. (dietrichl)


Lesenswert?

Dennis schrieb:
> Ist der Chip am RS232 Port vom
> Computer angeschlossen,

Welcher Chip? Du hast doch hoffentlich einen RS232-Treiber (z.B. MAX232) 
zwischen ATmega8 und dem Computer.

Gruß Dietrich

von Der Rächer der Transistormorde (Gast)


Lesenswert?

Dennis schrieb:
...
> Woran könnte so ein Fehlverhalten liegen?

Da gibt es x Möglichkeiten. Wenn nach einem Reset alles wieder läuft ist 
z.B. eine unterschiedliche Baudrate eine Möglichkeit (von vielen).

Das würde auch den "Unsinn" besser erklären wie falsche Pegel (was bei 
digitalen Daten eher unwahrscheinlich ist).

Falls keine Pause zwischen den "Print" Befehlen ist, eine einfügen. Dann 
hat die Schnittstelle Zeit sich neu zu syncen.

Dennis schrieb:
> Versucht Bascom die Daten  irgendwie zu Puffern, wenn kein Kabel
> angeschlossen ist,

Kaum, woher soll der Puffer denn kommen? Beim RS232 Standard gibt es nur 
die Möglichkeit über die Statusleitungen (RTS CTS ..) festzustellen ob 
die Verbindung vorhanden ist, was aber kaum noch einer macht. Sonst wird 
ins leere gesendet.

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.