Taimerid
Käesolev taimerite teek katab suure osa ATmega128 taimerite funktsionaalsusest. Kuna AVR taimerid on erinevate kiipide vahel päris erinevad, siis ei saa nende kasutamiseks kirjutada universaalseid funktsioone. Ka kirjeldatavad ATmega128 funktsioonid on suures osas lihtsalt primitiivsed registri muutmise või lugemise funktsioonid, kuid siiski on nad loetavamad kui registrid.
Andmetüübid
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();
}