InitTimer1

Syntax:

    InitTimer1 source, prescaler

Command Availability:

Available on all microcontrollers with a Timer 1 module.

Explanation:

InitTimer1 will set up timer 1.

Parameters are required as detailed in the table below:

Parameter Description

source

The clock source for this specific timer. Can be either Osc, Ext or ExtOsc where:
Osc is an internal oscillator.
Ext is an external oscillator.


Osc - Selects the clock source in use, as set by the microcontroller specific configuration (fuses or #config).  This could be an internal clock or an external clock source ( external clock sources are typically attached to the XTAL pins).

Ext - Selects the clock source attached to a specific exernal interrupt input port.  This allows a different clock frequency than the main clock to be used, such as 32.768 kHz crystals commonly used for real time circuits.

ExtOsc is an external oscillator and only available on a Microchip PIC microcontroller.

Enhanced Microchip PIC microcontrollers with a dedicated TMRxCLK register support additional clock sources. This includes, but limited to, the following devices: 16F153xx, 16F16xx, 16F188xx and 18FxxK40 Microchip PIC microcontroller series. On these devices the clock source can be one of the following:

Osc is an internal oscillator which is the same source as FOSC4.
Ext is an external oscillator which is the same source as TxXKIPPS.
ExtOsc is an external oscillator which is the same source as SOSC.
FOSC is an internal oscillator which is the Frequency of the OSCillator.
FOSC4 is an internal oscillator which is the Frequency of the OSCillator divided by 4.
SOSC is an external oscillator which is the same source as SOSC.
MFINTOSC is an internal 500KHz internal clock oscillator.
LFINTOSC is an internal 31Khz internal clock oscillator.
HFINTOSC is an oscillator as specified within the datasheet for each specific microcontroller.
TxCKIPPS is an oscillator input on TxCKIPPS Pin.

prescaler

The value of the prescaler for this specific timer. See the tables below for permitted vales for Microchip PIC or the Atmel AVR microcontrollers.

When the timer overflows an interrupt event will be generated. This interrupt event can be used in conjunction with On Interrupt to run a section of code when the interrupt event occurs.



Microchip PIC microcontrollers:

On Microchip PIC microcontrollers prescaler must be one of the following constants:

Prescaler Value Primary GCB Constant Constant Equates
to value

1:1

PS1_1

0

1:2

PS1_2

16

1:4

PS1_4

32

1:8

PS1_8

48

These correspond to a prescaler of between 1:2 and 1:8 of the oscillator (FOSC/4) speed. The prescaler will apply to either the oscillator or the external clock input.



Atmel AVR microcontrollers:

On the majority of Atmel AVR microcontrollers prescaler must be one of the following constants:

The prescaler will only apply when the timer is driven from the Osc the internal oscillator - the prescaler has no effect when the external clock source is specified.

Prescaler Value Primary GCB Constant Secondary GCB Constant Constant Equates
to value

1:0

PS_0

PS_1_0

0

1:1

PS_1

PS_1_1

1

1:8

PS_8

PS_1_8

2

1:64

PS_64

PS_1_64

3

1:256

PS_256

PS1_256

4

1:1024

PS_1024

PS_1_1024

5




On Atmel AVR ATtiny15/25/45/85/216/461/861 microcontrollers prescaler must be one of the following constants:

The prescaler will only apply when the timer is driven from the Osc the internal oscillator - the prescaler has no effect when the external clock source is specified.

Prescaler Value Primary GCB Constant Constant Equates
to value

1:0

PS_1_0

0

1:1

PS_1_1

1

1:2

PS_1_2

2

1:4

PS_1_4

3

1:8

PS_1_8

4

1:16

PS_1_16

5

1:32

PS_1_32

6

1:64

PS_1_64

7

1:128

PS_1_128

8

1:256

PS_1_256

9

1:512

PS_1_512

10

1:1024

PS_1_1024

11

1:2048

PS_1_2048

12

1:4096

PS_1_4096

13

1:8192

PS_1_8192

14

1:16384

PS_1_16384

15



Example 1 (Microchip):

This example will measure that time that a switch is depressed (or on) and will write the results to the EEPROM.

    #chip 16F819, 20
    #define Switch PORTA.0

    Dir Switch In
    DataCount = 0

    'Initilise Timer 1
    InitTimer1 Osc, PS1_8

    Dim TimerValue As Word

    Do
        ClearTimer 1
        Wait Until Switch = On
        StartTimer 1
        Wait Until Switch = Off
        StopTimer 1

        'Read the timer
        TimerValue = Timer1

        'Log the timer value
        EPWrite(DataCount, TimerValue_H)
        EPWrite(DataCount + 1, TimerValue)
        DataCount += 2
    Loop



Example 2 (Atmel AVR):

This example will flash the yellow LED on an Arduino Uno (R3) once every second.

#Chip mega328p, 16  'Using Arduino Uno R3
#define LED PORTB.5
Dir LED OUT
Inittimer1  OSC, PS_256
Starttimer 1
Settimer 1, 3200  ;Preload Timer
On Interrupt Timer1Overflow Call Flash_LED
Do
    'Wait for interrupt
loop
Sub Flash_LED
   Settimer 1, 3200   'Preload timer
   pulseout LED, 100 ms
End Sub

Supported in <TIMER.H>