Introduction.

This discussion deals with the use of the 16-bit counter (TMR1) in the PICAXE-28X, and I assume the -40X as well. This may be used to count external events in the background. One application that comes to mind is a rainfall tipping bucket counter, where the user doesn't really care to devote an entire PICAXE to this task.

Another appication might be to use the counter as a primitive indication to monitor that an event happened, again, without camping on a pin.

The X series of PICAXE devices are implemented using Microchip PICs which all include a 16-bit counter which may be externally accessed. Unfortunately, on the PICAXE-18X (PIC16F88) the T1CKI input is associated with PORTB which are fixed as output pins. However for the -28X, T1CKI is on terminal 6 which may be used as an input. Note that this is bit0 of PICAXE PortC.

The Timer1 is configured by poking register T1CON (at location $10). The clock source is selected as external by clearing the TMR1CS bit and the counter is turned on by setting TMR1ON bit.

At any time, TMR1H and TMR1L at locations $0F and $0E.

A simple routine which first clears the 16-bit counter value, pokes the T1CON register to configure the counter and then reads and displays the high and low bytes of the counter appears below.


' T1COUNT.Bas  (PICAXE-28X)
'
'
' clock source ------------ PICAXE-28X (term 6) (T1CKI)
'
' copyright, Peter H Anderson, Baltimore, MD, April, '04

Symbol T1CONVal = B0
Symbol CounterH = B3
Symbol CounterL = B2
Symbol Counter = W1

     Poke $0F, 0	' clear high and low bytes of Timer1
     Poke $0E, 0

     Poke $10, $03	' Configure T1CON for Timer1 On, External Clock

Top:

     High 0
     Pause 100
     Low 0
     Peek $10, T1CONVal
     Peek $0F, CounterH
     Peek $0E, CounterL
     SerTxD (#T1CONVal, "  ", #CounterH, "  ", #CounterL, 13, 10)
     SerTxD (#Counter, 13, 10)
     Pause 1000
     GoTo Top