B0/INT interrupt crasht microcontroller

Ik ben niet zo'n kei in C, maar test je nu interrupt on change?
Dat betekent dat portB.0, B.1, B.2 of B.3 oorzaak van de interrupt is. Wat heb je aan de poorten zitten die niet de interrupt genereren? Zijn die zwevend?

edit//
sorry heb het mis. ik zie dat je de INT op poortB.0 pakt. Iets te vroeg gereageerd.

[Bericht gewijzigd door DIY op vrijdag 8 juli 2011 21:25:19 (18%)

Op 8 juli 2011 19:07:10 schreef free_electron:
ben je zeker dat de logische nieveaus niet boven de voeding van de pic uit komen ?

zet eens een scoop op de voedingsspanning van de pic en draai eens aan de encoder ...

Yup, scoop ziet nergens wat boven de 5V. Niet op de voeding en niet op de B0/INT poot. Ik zie zelf niks en ik kan er ook niet op triggeren. Zou ook erg sterk zijn, aangezien alles uit een enkele 7805 gevoed word vanuit 3 lion cellen.

@DIY: de INT/B0 staat los van de andere poort B interrupts. Verder word de rest van poort B gebruikt voor het aansturen van een HD44780 display. Alle poten van poort B zijn dus benut, behalve B7.

Hier is het schema, hoeven we niet zo te blijven gokken: http://dl.dropbox.com/u/699251/schema%20gps%20logger.png

Hoe staan die 100nF condensatoren (C8 en C9) daar aan de encoder?
Die staan parallel aan de weerstanden. Ik zie daar het nut niet van in. Ik zou wel kunnen denken dat je telkens als je aan de encoder draait, je daarmee de 5V kortstondig eens kortsluit doordat de 100nF condensator in ongeladen toestand een kortsluiting is.

It is so simple to be happy, but it is so difficult to be simple

Die weerstand is een pulldown weerstand om te voorkomen dat die poten wat staan te zweven. Die 100nF zit er om de dender van de encoder op te vangen.

Die 100nF zit toch zo vol? De hele schakeling word bij de voeding gebufferd via een 220uF elco.

[Bericht gewijzigd door TheCrazyInventor op zaterdag 9 juli 2011 17:00:49 (11%)

EricP

mét CE

Die C8 en C9 zijn k*t zo. Je zet inderdaad een lege C van 100nF op je voeding. Je voeding stuitert dus even. Wat er gebeurt is erg afhankelijk van je PCB layout, of je al dan niet een BOD hebt (geen idee of die dingen van microchip daaraan doen) en het feit dat dat spul van microchip ook relatief trigger-happy is op de reset.

Dat je die 7805 aan de uitgang ontkoppeld hebt met 100nF is leuk, maar schiet natuurlijk niet zo op. Die 100μF is te traag. de voeding van dat microchip ding lijkt ook niet separaat ontkoppeld te zijn. Per saldo zal het mij niet verbazen dat je - afhankelijk van je layout - behoorlijke spikes op de voeding hebt.

Door 5Ω in serie te zetten, wordt de dip zover afgezwakt dat je er in elk geval geen reset meer uit haalt.

Wat geeft het als je héél traag aan je rotary encoder draaid? Als het aan het feit ligt dat de interrupts veel te snel achter elkaar komen en zo een stack overflow genereren, zou dit nu niet mogen gebeuren.
Anders de rotaty encoder eens vervangen door 2 drukknoppen (fase 1 en fase 2) en de encoder manueel simuleren.

Toen ik dit alles las, was mijn eerste gedacht ook dat het om een stack overflow ging door het denderen van de contacten. Heb je je code al eens gesimuleerd? PIC Simulator IDE van Oshonsoft is zeker een aanrader om je code te debuggen.