Timer interrupt

Svejk

Senior Member
The following program should interrupt every 1 second and toggle an LED. However it does not.

The board used is AXE401 with an 28x2 [version B.3].

Am I missing something about interrupts?

Code:
#picaxe 28X2
#no_data
#no_table

setfreq M8


' HARDWARE DEFINITITIONS **********************************
  symbol led    = b.3
  

' SYMBOLS *************************************************
  symbol TRUE  = 1
  symbol FALSE = 0
  

' INIT BOARD
OnPowerUp:
  dirsA = %00000000
  dirsB = %00000011
  dirsC = %00100100

' set timer interrupt
  settimer t1s_8 
  setintflags %10000000,%10000000


main:
' APPLICATION IS INTERRUPT DRIVEN
goto main:

' SUBROUTINES *********************************************

interrupt:
  toggle LED

'  re-enable interrupt
  settimer t1s_8
  setintflags %10000000,%10000000
return
 

hippy

Ex-Staff (retired)
SETTIMER sets how quickly the 'timer' will increment, not how often interrupt occurs. The interrupt only occurs when 'timer' overflows from 65535 ($FFFF) to 0. Your code is working but it will only interrupt and toggle the LED every 65636 seconds; every 18 minutes.

Add a "Let timer=65535" and then the overflow will occur one second later.
 
Top