Forum: Mikrocontroller und Digitale Elektronik Interrupt Problem PIC16


von Flosn (Gast)


Lesenswert?

Hallo,

wir schalten mit unserem Gerät ein kleines Ventil, dass mit einem PWM 
Signal angesteuert wird. In dem Gerät arbeitet ein PIC16F677 (I/ML 
Gehäuse) wofür der Timer1 für diverse Zeiten und der andere Timer0 zur 
PWM Erzeugung zuständig ist. Angetrieben wird der uC vom internen RC 
Glied mit 8 MHz.
Die Geräte mit der Software arbeiten seit Jahren ohne Probleme. Doch 
seit ein paar Tagen fallen mehrere Geräte aus. Nach ein paar Stunden im 
Dauertest hängt sich die Software auf. Manche Geräte laufen 1 Tag durch, 
manche fallen schon nach ein  paar minuten aus. Völlig willkürlich. Das 
kuriose ist das weder die Software noch das Platinenlayout in den 
letzten Jahren geändert wurde.

Nach ein paar Testprogrammen (Pin durch Timer toggeln lassen) fanden wir 
heraus, dass im Fehlerfall der Timer0 zur PWM Erzeugung im Interrupt 
hängen bleibt aber die Hauptschleife durchläuft. Das Gerät lässt sich 
nicht mehr bedienen. Erst wenn man den Netzstecker vom Gerät trennt und 
wieder verbindet funktioniert das Gerät wieder normal.
Die Frage ist kann dieser Fall( Timer hängt, aber Hauptschleife läuft) 
überhaupt auftreten?

Wurde jemand mit so einem oder ähnlichn Problem schonmal konfrontiert?
Für jeden Rat bin ich sehr dankbar.

Beste Grüße
Flosn

von Jürgen D. (poster)


Lesenswert?

Die Geräte die ausfallen sind das die alten oder neu bestückte?
Wenn sie neu sind muß sich ja was geänder haben gegenüber den alten.
Irgendein Bestückungsfehler?
Oder die PICs sind anders. Microchip macht da immer mal Änderungen am 
Herstellungsprozes. Meist wird das Silizium verkleinert.
Am besten da mal ein neues Datenblatt besorgen ob es da Änderungen gab.

Es sollen auch schon mal Chinaclone von manchen PICs im Umlauf sein. 
Frech als Orginal bedruckt. Ich weis aber nicht ob das euren Typ 
betrifft.

von Flosn (Gast)


Lesenswert?

Hallo Jürgen,
also die Drahtbauteile werden bei uns im Haus bestückt (20 %), der Rest 
vom Leiterplattenhersteller. 200 neue, fertig zusammengebeute Geräte 
durchliefen den Dauertest problemlos. Doch auf einmal fallen mehrere 
Geräte im Dauertest mit dem o.g. Fehler aus. auf allen geräten befinden 
sich die gleiche Soft- und (vermutlich) Hardware.

Was kann der Grund sein? Wirklich fehlerhafte PIC's?

von Erich (Gast)


Lesenswert?

Die Pic Typen haben eine "Revision ID", die bei Aufschalten des 
Programmers ausgelesen und angezeigt wird (mit ICD3, PicKit3).
Die ID ist quasi die fortlaufende Maskennummer.
Über die GGOGLE Suche <Bauteiltyp> "errata", hier also "PIC16F677" 
"errata" findet sich ein Dokument, in welchem die jeweiligen Änderungen 
des Bauteils bzgl. der "Revision ID" drinstehen.

Zunächst sollte ermittelt werden, ob sich die ID überhaupt verändert 
hat, von deinen "alten" auf die "neuen" Bauteile bzw. Platinen.
Wenn gleichgebleiben, so ist eher ein Effekt abseits des uC zu suchen.
Das könnte unsaubere Spannungsversorgung sein; vielleicht hat sich was 
im Bereichs des (Schalt- ?) Netzteils verändert.
Kondensatoren mit falschem Wert oder grenzlastiger Kapazität ergeben 
höheren Ripple usw., sowas suchen.

Ich hatte schinmal ein Problem an einem (anderen) Pic die nur bei 
extremen Temperaturen auftrat ; da musste die Art der Initialisierung 
geändert werden. Z.B. in Hauptschleife oder bei "timeout Fehlerfall" neu 
initialisieren oder die Watchdog Funktionalität entsprechend nutzen.
Letztendlich führte das auch zu einer neuen Ausgabe der "errata" meines 
verwendeten uC Typs (bzw. der ganzen Typfamilie...)

Ohne Veröffentlichung der SW und des Schaltbilds kann man nur 
Vermutungen anstellen.

Gruss

von W.S. (Gast)


Lesenswert?

Flosn schrieb:
> fanden wir
> heraus, dass im Fehlerfall der Timer0 zur PWM Erzeugung im Interrupt
> hängen bleibt aber die Hauptschleife durchläuft.

Könntest du dich zu diesem Punkt mal etwas weniger schwammig ausdrücken?

Wie bleibt ein Timer im Interrupt denn hängen? Also, wenn ein Timer 
nicht 'disabled' wird, dann läuft er ohne Unterlaß. Was im Interrupt 
hängen bleiben kann, ist ein unklug geschriebenes Stückchen Programm.

Ich vermute einen Softwarebug, der bloß bisher noch nie so richtig 
aufgefallen ist. Einen einzigen "Hardware-Strohhalm" hab ich noch im 
Ärmel: Neuere PIC's sind i.d.R. schneller als die älteren und sie 
reagieren manchmal auch etwas zickiger auf Spikes in der VCC und am 
MCLR. Also mal an VCC direktemang 100 nF dran und an MCLR 10 nF jeweils 
gegen Massepin und gucke, ob der Spuk weg ist.

W.S.

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.