Interrupt Problem PIC16

Gast #3115364
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
#3115468
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.
Gast #3116244
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?
Gast #3116291
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
Gast #3116998
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.

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.