This is an old revision of the document!
Таймеры
Данная библиотека таймеров покрывает большую часть функциональности таймеров ATmega128. Так как таймеры AVR в разных чипах различаются, нельзя для их использования написать универсальные функции. Описанные функции ATmega128 в большей степени просто примитивные функции для изменения или чтения регистров, но всё же они читаемы, чем сами регистры.
Типы данных
Funktsioonid
void timer0_overflow_interrupt_enable(bool enable)
void timer2_overflow_interrupt_enable(bool enable)
Taimer 0/2 ületäitumise katkestuse lubamine või keelamine. Katkestuse vektor on TIMERn_OVF_vect kus “n” on 0 või 2. Parameetrid:
void timer1_init_normal(timer1_prescale prescale)
void timer3_init_normal(timer3_prescale prescale)
Taimer 1/3 normaalrežiimi seadistamine. Selles režiimis loendab taimer 65535-ni (kaasa arvatud) ja ainuke tekkiv sündmus on ületäitumine. Parameetrid:
void timer1_init_ctc(timer1_prescale prescale, timer1_ctc_top top)
void timer3_init_ctc(timer3_prescale prescale, timer3_ctc_top top)
Taimer 1/3 CTC (inglise keeles Clear Timer on Compare Match) režiimi seadistamine. Selles režiimis taimer ei loenda mitte 65535-ni, vaid valitud registri väärtuseni ja tekitab soovi korral sinnani jõudes katkestuse. Parameetrid:
prescale - Taktijaguri tegur.
top - Taimeri maksimaalse väärtuse registri valik. Valida saab kahe registri vahel, mille mõlema muutmiseks on omaette funktsioonid. Mõlemad registrid võib loenduri tippu jõudes katkestust tekitama seadistada.
void timer1_init_fast_pwm(timer1_prescale prescale, timer1_fast_pwm_top top, timer1_fast_pwm_output_mode output_a, timer1_fast_pwm_output_mode output_b, timer1_fast_pwm_output_mode output_c)
void timer3_init_fast_pwm(timer3_prescale prescale, timer3_fast_pwm_top top, timer3_fast_pwm_output_mode output_a, timer3_fast_pwm_output_mode output_b, timer3_fast_pwm_output_mode output_c)
Taimer 1/3 kiire PWM tekitamise režiimi seadistamine. Selles režiimis on valitav väärtus, milleni taimer loendab, ehk PWM signaali periood. Taimeril on 3 PWM signaali genereerimise üksust (A, B ja C), millel kõigil on seadistatav väljund. Parameetrid:
prescale - Taktijaguri tegur.
top - Taimeri maksimaalse väärtuse valik. Valida saab konstantide ja kahe registri vahel. Mõlemad registrid võib loenduri tippu jõudes katkestust tekitama seadistada.
output_a - Väljundviigu A seadistus.
output_b - Väljundviigu B seadistus.
output_c - Väljundviigu C seadistus.
unsigned short timer1_get_compare_match_unitA_value(void)
unsigned short timer1_get_compare_match_unitB_value(void)
unsigned short timer1_get_compare_match_unitC_value(void)
unsigned short timer3_get_compare_match_unitA_value(void)
unsigned short timer3_get_compare_match_unitB_value(void)
unsigned short timer3_get_compare_match_unitC_value(void)
Taimeri 1/3 signaali genereerimise üksuse A/B/C võrdlusväärtuse tagastamine. Parameetrid:
void timer1_set_compare_match_unitA_value(unsigned short value)
void timer1_set_compare_match_unitB_value(unsigned short value)
void timer1_set_compare_match_unitC_value(unsigned short value)
void timer3_set_compare_match_unitA_value(unsigned short value)
void timer3_set_compare_match_unitB_value(unsigned short value)
void timer3_set_compare_match_unitC_value(unsigned short value)
Taimeri 1/3 signaali genereerimise üksuse A/B/C võrdlusväärtuse määramine. Parameetrid:
void timer1_overflow_interrupt_enable(bool enable)
void timer3_overflow_interrupt_enable(bool enable)
Taimer 1/3 ületäitumise katkestuse lubamine või keelamine. Katkestuse vektor on TIMERn_OVF_vect, kus “n” on 1 või 3. Parameetrid:
void timer1_compare_match_unitA_interrupt_enable(bool enable)
void timer1_compare_match_unitB_interrupt_enable(bool enable)
void timer1_compare_match_unitC_interrupt_enable(bool enable)
void timer3_compare_match_unitA_interrupt_enable(bool enable)
void timer3_compare_match_unitB_interrupt_enable(bool enable)
void timer3_compare_match_unitC_interrupt_enable(bool enable)
Taimer 1/3 signaali genereerimise üksuse A/B/C võrdluse sündmuse katkestuse lubamine või keelamine. Katkestuse vektor on TIMERn_COMPx_vect, kus on “n” on 1 või 3 ja “x” on A, B või C. Parameetrid:
void timer1_input_capture_interrupt_enable(bool enable)
void timer3_input_capture_interrupt_enable(bool enable)
Taimer 1/3 sündmuste loenduri katkestuse lubamine või keelamine. Katkestuse vektor on TIMERn_CAPT_vect, kus “n” on 1 või 3. Parameetrid:
Näide
Näites seadistatakse taimer 0 tavalisse loendamise režiimi ja lubatakse ületäitumise katkestus.
#include <homelab/timer.h>
#include <avr/interrupt.h>
// Katkestuse programmilõik
ISR(TIMER0_OVF_vect)
{
}
int main(void)
{
// Taimer 0 normaalrežiimi, taktijagur 32
timer0_init_normal(TIMER0_PRESCALE_32);
// Taimer 0 ületäitumise katkestuse lubamine
timer0_overflow_interrupt_enable(true);
// Globaalne katkestuste lubamine
sei();
}