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
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.
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?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.