Hallo mensen
Ik heb even een vraagje ik ben een nixie-klok aan het maken en wil voor de tijd clock de netspanning gebruiken. Hiervoor gebruikt ik een interrupt in picbasic. Nu heb ik het wel werkend maar een ding snap ik nog niet. als de uitgang de eerste keer hoog wordt gaat hij de code in de interrupt uitvoeren, maar het probleem is dat hij dan er niet meer uitkomt. Dit gebeurd wel als ik in het begin van de interrupt de interrupt in het register uitzet en als hij verder gaat met de code weer aanzet. De interrupt pin reageert in de loop dus nergens op omdat de interrupt functie uitgezet wordt. Dit moet toch niet horen of wel.
voor alle duidelijkheid mijn code zonder dat ik de interrupt in het register uitzet, deze werkt dus niet.
code:
DEVICE 16F628A ;Gebruik een 16F628A type
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE ;Alle ingangen digitaal
Clear ;Wis alle ram geheugen
Dim loop as byte
loop = 0
dim inter as byte
inter = 0
ON_INTERRUPT GoTo Interrupt_Handler
'Assign some Interrupt associated aliases
Symbol RBIF = INTCON.0 ' RB Port Interrupt Flag
Symbol INTF = INTCON.1 ' RB0 External Interrupt Flag
Symbol T0IF = INTCON.2 ' TMR0 Overflow Interrupt Flag
Symbol RBIE = INTCON.3 ' RB Port Change Interrupt Enable
Symbol INTE = INTCON.4 ' RB0 External Interrupt Enable
Symbol T0IE = INTCON.5 ' TMR0 Overflow Interrupt Enable
Symbol PEIE = INTCON.6 ' Peripheral Interrupt Enable
Symbol GIE = INTCON.7 ' Global Interrupt Enable
RBIF = 0
INTF = 0
T0IF = 0
RBIE = 0
INTE = 1
T0IE = 0
PEIE = 0
GIE = 1
GoTo Init ' Jump over the interrupt subroutine
'Interrupt routine starts here
Interrupt_Handler:
inter = inter + 1
if inter = 50 then
loop = loop + 1
inter = inter - 50
endif
intf = 0
Init:
SYMBOL dta = PORTA.2
SYMBOL strobe = PORTA.3
SYMBOL clk = PORTA.1
while 1=1
while loop < 10
low strobe
shout dta, clk, msbfirst, [loop ]
high strobe
wend
loop = loop - 10
wend
end