PIC som gav problem

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Icecap
Inlägg: 26660
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

PIC som gav problem

Inlägg av Icecap »

För allmänt kännedom:
Jag har tillverkad några enheter som i essens består av en PIC16F628A, ett Easy Radio modul, spänningsregulator och lite småkrafs.

Deras funktion:
Ena enheten mätar en puls-tid och skickar den i ett textformat via radion, det finns lite grejar med att pulsen bildas av 2 ingångar och att dessa BÅDA ska vara aktiva vid pulsavslut osv.

Den andra enheten skickar ut det inkommande meddelande på ett display, i detta fall med 320mm stora tecken.

Det första modulen fungerar ganska bra nu, det var en aning dumheter med att det spolade vissa mätningar men det var en klantig tanke som gjorde det.

Mottagaren har varit desto mer besvärlig! Den har låst sig lite hur som helst, enda sätt att "få loss den" har varit att kunden brytar strömmen.

Essentiellt är funktionen att PIC'en tar emot ett datablock, kollar adressen mot den adress som enheten har (hex omkopplare) och skickar ut själva datadelen vid adress-match.

Tyvärr är det olika baudrates för sändning och mottagning, 2K4 hhv. 19K2. Efter en massa test och bökande hos kunde framkom det att PIC'en satt fast i interruptdelen pga. en (okänd vilken) interrupt som inte blev rensat.

Jag nollade PIR1 (enda aktiva interrupt) som första steg i interrupten men det hjälpte inte ett skvatt, först då jag AND'ade INTCON med 0xC0 släppte det, vi fick iaf. inte fler låsningar på de testar vi gjorde.

Jag ändrade baudrate via SPBRG & TXSTA, thats it. På något jävla vis aktiverades en av de interrupts som ligger med IF i INTCON och orsakade en aldrig nollad interrupt.

Jag har som sagt löst problemet (nåja, 99,9999999% säker :pray:) och jag ville bara informera om att det inte alltid är något som är säkert i denna värld, kan det jävlas kommer det att göra det!

Edit: Just det: programmet är gjort i MikroC, jag har inte än dekodad det för att se om det är det som ställer till det och jag vetefan om jag ids, det kör nu så pilla inte!
Användarvisningsbild
RasmusB
Inlägg: 1006
Blev medlem: 24 augusti 2006, 23:32:13
Ort: Södertälje

Inlägg av RasmusB »

Skumt!

Du lyckades inte klura ut vilken interrupt det var som triggades felaktigt?
Användarvisningsbild
björn
EF Sponsor
Inlägg: 2570
Blev medlem: 29 mars 2004, 23:09:55

Inlägg av björn »

Såna fel är inte roliga, särskilt inte innan man VET varför det blir så :(
Användarvisningsbild
Icecap
Inlägg: 26660
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Nej. Jag satt hos min kund och ville bara därifrån illa kvickt så jag sket i att kolla vad exakt det var som ställde till det, det var också svårt att få enheten att låsa sig och att bränna 6 timmer på en grej jag har såld för 900:- suger fett.

Det måste vara antingen Timer0, INTF (Int på PORTB.0) eller PORTB-change interrupt men jag sket faktisk i vilket, ingen av dessa interrupt är enablad ändå så jag misstänkar att det kan vara kompilern som glömmer en BANKSEL någonstans.

Men men, nu verkar det fungera (peppar peppar) och jag pillar inte mer i det om inte jag måste.
Skriv svar