Falling edge interrupt - driving me mad :(

MartinM57

Moderator
I want to run the interrupt code once on each falling edge on the hint1/pinB.1/leg 22 of a 28X2...
..so set up and enable hint1 on falling edge using hintsetup...
..and set hint1 to call an interrupt routine on hint1 occurring

Input to hint1 is the SQW output of a DS1307 - verified on scope to be a completely clean square wave of period 1.000 seconds....so interrupt should be called once per second

Code:
#picaxe 28x2
#NO_DATA
#NO_TABLE
#TERMINAL 38400

setfreq em32
sertxd("...started", CR, LF)

'interrupt on falling edge of hint1/pinB.1/leg 22
hintsetup %00000010
' enable hint1
setintflags %00000010,%00000010

do
	'print pinB.1 value
	sertxd("do loop...pinB.1 = ",#pinB.1, CR, LF)
loop

interrupt:
	'print pinb.1 value
	sertxd("interrupt...pinB.1 = ",#pinB.1, CR, LF)
	'reset interrupts
	setintflags %00000010,%00000010	' enable hint1
	return
..and the output is...
Code:
...started
do loop...pinb.1 = 0
do loop...pinb.1 = 0
do loop...pinb.1 = 0
do loop...pinb.1 = 0
do loop...pinb.1 = 0
do loop...pinb.1 = 0
do loop...pinb.1 = 0
do loop...pinb.1 = 0
do loop...pinb.1 = 0
do loop...pinb.1 = 0
do loop...pinb.1 = 0
do loop...pinb.1 = 0
do loop...pinb.1 = 0
do loop...pinb.1 = 0
do loop...pinb.1 = 0
do loop...pinb.1 = 0
do loop...pinb.1 = 0
do loop...pinb.1 = 0
do loop...pinb.1 = 0
do loop...pinb.1 = 0
do loop...pinb.1 = 0
do loop...pinb.1 = 0
do loop...pinb.1 = 0
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 1
do loop...pinb.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 0
interrupt...pin b.1 = 1
interrupt...pin b.1 = 1
interrupt...pin b.1 = 1
interrupt...pin b.1 = 1
interrupt...pin b.1 = 1
interrupt...pin b.1 = 1
interrupt...pin b.1 = 1
interrupt...pin b.1 = 1
interrupt...pin b.1 = 1
etc
i.e. waits for first falling edge, interrupt is called and then interrupt is continually called whatever state hint1 is at - steady at low, rising edge etc

Been staring at this for a couple of hours now - must be something completely stupid - help :)
 

hippy

Ex-Staff (retired)
hint1flag = 0

That clears the interrupt bit otherwise it remains set and interrupt keeps getting called.

The SetIntFlags causes interrupt on the 'hint1flag'. HIntSetup determines what sets 'hint1flag'.
 
Last edited:
Top