Hardware PWM stört Hardware USART

Gast #4364104
Lesenswert?

Hallo Forum,

ich bin grade dabei auf einem ATmega2560 zu programmieren.
Dieser kommuniziert mittels USART über einen FTDI mit dem Rechner (kein 
eigenes USART programmiert, sondern eingebautes USART0 benutzt).
Gleichzeitig spreche ich per SPI mehrere Peripherie geräte an (wieder 
das eingebaute SPI benutzt, kein eigenes Programmiert).

Dies klappt wunderbar und funktioniert ohne Zwischenfall stundenlang.

Doch dann setze ich den fast-pwm auf Pin L5 ein (Hardware-PWM), der auch 
funktioniert (Periodendauer = 8s wie gewünscht), und wir haben das 
Problem: Nach unvorhersehbaren Zeitabständen zwischen 1s und 2min bricht 
die USART Kommunikation vorrübergehen zusammen, PuTTY sagt das Lesen am 
Port funktionierte nicht mehr, MATLAB sagt das gleiche.
Dabei ist das globale Interrupt bit deaktiviert.

Hatte jemand schonmal so ein Problem?
#4364108
Lesenswert?

@Niklas Rpunkt (hobbycoder)

>Doch dann setze ich den fast-pwm auf Pin L5 ein (Hardware-PWM), der auch
>funktioniert (Periodendauer = 8s wie gewünscht),

ACHT Sekunden Periodendauer? Das ist eher ein langsames Blinken als PWM.

> und wir haben das
>Problem: Nach unvorhersehbaren Zeitabständen zwischen 1s und 2min bricht
>die USART Kommunikation vorrübergehen zusammen, PuTTY sagt das Lesen am
>Port funktionierte nicht mehr, MATLAB sagt das gleiche.
>Dabei ist das globale Interrupt bit deaktiviert.

>Hatte jemand schonmal so ein Problem?

Nö, aber es ist mit hoher Wahrscheinlichkeit ein Programmierfehler und 
kein Hardwaredefekt. Poste vollständigen Code als Anhang.
Gast #4364117
Lesenswert?

Felix A. schrieb:
> Was soll "Dabei ist das globale Interrupt bit deaktiviert" bedeuten?
> Steuert ihr alles aus einem Hauptprogramm ohne Interrupts?

Das bedeutet im SREG ist das Interrupt bit auf 0 gesetzt. Die 
Kommunikation über USART und die Kommunikation erfolgt beide male via 
polling. Sprich wir fragen so lange ab, ob wie senden können, bis wir 
senden können. Beim Empfang das gleiche. Aber da die latenz zwischen 
Senden und Empfangen via SPI so gering ist, ist dies kein Nachteil. Und 
USART benutzen wir eh nur unidirektional.
Gast #4364181
Lesenswert?

"PuTTY sagt das Lesen am Port funktionierte nicht mehr"
Das hört sich eher danach an als ob der FTDI die Grätsche macht..
Ist das USB-Gerät in dem Zustand noch da? Kannst du die USB-Verbindung 
mal trennen und wieder herstellen? Geht es dann wieder?
Gast #4364187
Lesenswert?

Chris schrieb:
> "PuTTY sagt das Lesen am Port funktionierte nicht mehr"
> Das hört sich eher danach an als ob der FTDI die Grätsche macht..
> Ist das USB-Gerät in dem Zustand noch da? Kannst du die USB-Verbindung
> mal trennen und wieder herstellen? Geht es dann wieder?

Wenn ich PuTTY direkt wieder öffne, dann empfange ich auch wieder die zu 
erwartenden Daten. Das geht ein paar Sekunden gut und dann bricht sie 
wieder zusammen.
#4364266
Lesenswert?

Ohne das Layout rauszugeben, könntest du den Verlauf der Leitung 
kontrollieren. Läuft diese dicht am USART entlang oder an dessen 
Leitungen? Oder sehr dicht am FTDI? Was hängt an dieser PWM-Leitung?

Hintergrund ist, dass hier steile Flanken auftreten, die eventuell 
kapazitiv in den USART oder FTDI einkoppeln.
Gast #4364333
Lesenswert?

Die beiden USART Leitungen und die Leitung mit PWM laufen so weit 
auseinander wie irgend möglich auf dem Board :/

Am Ende der PWM Leitung liegt ein Relais das angeblich im worst case max 
9mA zieht.
#4364340
Lesenswert?

Niklas Rpunkt schrieb:
> Am Ende der PWM Leitung liegt ein Relais das angeblich im worst case max
> 9mA zieht.

Dann ersetze das Relais doch mal durch einen passenden Widerstand ud 
prüfe nochmals. Deine Fehlerbeschreibung deutet darauf hin, dass auf der 
seriellen Schnitte Störungen sind, die den Treiber im PC zum Absturz 
bringen. Und eine Relaisspule, passend beschaltet, kann da durchaus 
interessante Effekte bringen.
Gast #4364385
Lesenswert?

Bauteiltöter schrieb:
> Hast du den TEST-Pin am FTDI beschaltet? Bleibt der offen ergibt sich so
> ziemlich das gleiche Fehlerbild.

TEST ist auf GND

Felix A. schrieb:
> Gibt es eine Freilaufdiode am Relais? Wird dieses über einen Transistor
> betrieben oder wirklich direkt über den Pin?

Darüber weiß ich leider nichts, da das relais in einem weiteren Bauteil 
versteckt ist, über das ich keine großartigen Daten habe außer welchen 
Pin ich high bzw. low machen muss

Georg G. schrieb:
> Dann ersetze das Relais doch mal durch einen passenden Widerstand ud
> prüfe nochmals.

Das werde ich tun, sobald ich den Aufbau entsprechend umgebaut habe.
#4364397
Lesenswert?

Hallo,

es scheint ja so, als ob der FTDI kurz "verschwindet". Wie wird der 
betreiben? Bus-powered? Eigentlich sind die Teile nicht sehr 
empfindlich.
Welche Baudrate wird denn benutzt? Die UART-Leitungen mit Störungen auf 
dem Weg zum FTDI so zu versauen daß der FTDI sich abmeldet ist garnicht 
so einfach.

Wenn das Relais eine Rolle spielt müßte der Fehler ja zu provozieren 
sein, der Absturz käme dann beim Schalten des Relais, das sollte doch zu 
beobachten sein.

Wenn es nur bei Einsatz der fastPWM passiert würde ich eher ein 
Softwareproblem vermuten.

Gruß aus Berlin
Michael
Gast #4364420
Lesenswert?

Was ist denn jetzt mit dem Schaltplan?
Fällt der - genauso wie manchmal das Ohmsche Gesetz - unter "STRENG 
GEHEIM"?

Ein Relais mit 9mA kommt mir schon etwas exotisch vor. Handelt es sich 
vielleicht um ein SSR?
Gerne ist auch falsche Sparsamkeit bei Abblockkondensatoren der Grund 
für solche merkwürdigen Fehler.

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