Timers¶
Timer hardware¶
The ATmega128 has 4 timers/counters:
| TC name |
Bits |
# Output compare registers |
# Output compare pins |
| TC0 |
8 |
1 |
1 |
| TC1 |
16 |
3 |
3 (one shared with TC2) |
| TC2 |
8 |
1 |
1 (shared with TC1) |
| TC3 |
16 |
3 |
3 |
All timers support:
- Overflow and compare match interrupts
- Clear timer on compare match (Auto reload, CTC)
- Phase correct PWM
- Fast PWM
Dragonfly timer pin connections¶
| Pin function |
Pin name |
Alternate functions |
Net name |
Function |
Comments |
| OC0 |
PB4 |
-- |
!IR_EN |
Rangefinders power switch |
|
| OC1A |
PB5 |
-- |
PWM_HB1 |
Motor |
|
| OC1B |
PB6 |
-- |
PWM_HB1 |
Motor |
|
| OC1C/OC2 |
PB7 |
-- |
PWM_BUZZ |
Da Beep |
|
| OC3A |
PE3 |
AIN1 |
DIO1 |
DIO pin 3 |
Analog comperator |
| OC3B |
PE4 |
INT4 |
DIO2/SCL_B |
DIO pin 5 |
External Interrupt |
| OC3C |
PE5 |
INT5 |
DIO3/SDA_B |
DIO pin 7 |
External Interrupt |
Timer to function allocation¶
Functions:
- The motors have to use TC1, because they are connected to OC1A/OC1B (and hardware PWM should be used).
- The Buzzer has to use TC2 because it is connected to OC2 (and hardware frequency generation should be used).
- The orbs cannot be shared with the motors because the motors (hardware PWM) require a PWM mode of the time, while the orbs (software PWM) require a non-PWM mode to allow for immediate OCR update (this is due to the implementation of the AVR timer modes)
Current plan:
| Function |
Timer |
| Motors |
TC1 |
| Buzzer |
TC2 |
| Time base |
|
| Orbs |
TC0 |
Timer Uses (Old)¶
| Timer 1 |
motor.c |
| Timer 2 |
buzzer.c (odometry also seems to use this) |
| Timer 3 |
time.c, orb.c |
Also available in:
HTML
TXT