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

  • timer0_prescale
    Taimer 0 taktijaguri tegurite valiku tüüp. Väärtuste variandid ja tähendused:
    • TIMER0_NO_PRESCALE - Jagurit ei kasutata.
    • TIMER0_PRESCALE_8 - Jagamistegur 8.
    • TIMER0_PRESCALE_32 - Jagamistegur 32.
    • TIMER0_PRESCALE_64 - Jagamistegur 64.
    • TIMER0_PRESCALE_128 - Jagamistegur 128.
    • TIMER0_PRESCALE_256 - Jagamistegur 256.
    • TIMER0_PRESCALE_1024 - Jagamistegur 1024.
  • timer2_prescale
    Taimer 2 taktijaguri tegurite valiku tüüp. Väärtuste variandid ja tähendused:
    • TIMER2_NO_PRESCALE - Jagurit ei kasutata.
    • TIMER2_PRESCALE_8 - Jagamistegur 8.
    • TIMER2_PRESCALE_64 - Jagamistegur 64.
    • TIMER2_PRESCALE_256 - Jagamistegur 256.
    • TIMER2_PRESCALE_1024 - Jagamistegur 1024.
    • TIMER2_PRESCALE_T2_FALLING - Taktsignaal tuleb hoopis T2 viigu langeval frondil.
    • TIMER2_PRESCALE_T2_RISING - Taktsignaal tuleb hoopis T2 viigu tõusval frondil.
  • timer1_prescale
  • timer3_prescale
    Taimer 1/3 taktijaguri tegurite valiku tüüp. Väärtuste variandid ja tähendused (“n” tähistab 1 või 3):
    • TIMERn_NO_PRESCALE - Jagurit ei kasutata.
    • TIMERn_PRESCALE_8 - Jagamistegur 8.
    • TIMERn_PRESCALE_64 - Jagamistegur 64.
    • TIMERn_PRESCALE_256 - Jagamistegur 256.
    • TIMERn_PRESCALE_1024 - Jagamistegur 1024.
    • TIMERn_PRESCALE_Tn_FALLING - Taktsignaal tuleb hoopis Tn viigu langeval frondil.
    • TIMERn_PRESCALE_Tn_RISING - Taktsignaal tuleb hoopis Tn viigu tõusval frondil.

 

  • timer1_ctc_top
  • timer3_ctc_top
    Taimer 1/3 CTC-režiimi maksimaalse loenduri väärtuse valiku tüüp. Väärtuste variandid ja tähendused (“n” tähistab 1 või 3):
    • TIMERn_CTC_TOP_OCRA - Maksimaalne väärtus määratakse taimer 1/3 võrdlusregistriga A.
    • TIMERn_CTC_TOP_ICR - Maksimaalne väärtus määratakse taimer 1/3 sündmuste loenduri registriga.
  • timer1_fast_pwm_top
  • timer3_fast_pwm_top
    Taimer 1/3 kiire PWM režiimi maksimaalse loenduri väärtuse valiku tüüp. Väärtuste variandid ja tähendused (“n” tähistab 1 või 3):
    • TIMERn_FAST_PWM_TOP_256 - Maksimaalne väärtus on 255.
    • TIMERn_FAST_PWM_TOP_512 - Maksimaalne väärtus on 511.
    • TIMERn_FAST_PWM_TOP_1024 - Maksimaalne väärtus on 1023.
    • TIMERn_FAST_PWM_TOP_ICR - Maksimaalne väärtus määratakse taimer 1/3 sündmuste loenduri registriga.
    • TIMERn_PAST_PWM_TOP_OCRA - Maksimaalne väärtus määratakse taimer 1/3 võrdlusregistriga A.
  • timer1_fast_pwm_output_mode
  • timer1_fast_pwm_output_mode
    Taimer 1/3 väljundite seadistuste valiku tüüp kiire PWM režiimis. Väärtuste variandid ja tähendused (“n” tähistab 1 või 3):
    • TIMERn_FAST_PWM_OUTPUT_DISABLE - Väljundisse PWM signaal ei jõua.
    • TIMERn_FAST_PWM_OUTPUT_TOGGLE_ON_MATCH - Väljund muutub vastupidiseks, kui loendur omistab võrdlusregistri väärtuse.
    • TIMERn_FAST_PWM_OUTPUT_CLEAR_ON_MATCH - Väljund läheb madalaks, kui loendur omistab võrdlusregistri väärtuse, ja kõrgeks, kui loendur jõuab nulli.
    • TIMERn_FAST_PWM_OUTPUT_SET_ON_MATCH - Väljund läheb kõrgeks, kui loendur omistab võrdlusregistri väärtuse, ja madalaks, kui loendur jõuab nulli.

Funktsioonid

  • void timer0_init_normal(timer0_prescale prescale)
    Taimer 0 normaalrežiimi seadistamine. Selles režiimis loendab taimer 255-ni (kaasa arvatud) ja ainuke tekkiv sündmus on ületäitumine. Parameetrid:
    • prescale - Taktijaguri tegur.
  • void timer2_init_normal(timer2_prescale prescale)
    Taimer 2 normaalrežiimi seadistamine. Selles režiimis loendab taimer 255-ni (kaasa arvatud) ja ainuke tekkiv sündmus on ületäitumine. Kaks taktijaguri tegurit võimaldavad taimeri taktsignaali allikaks seada ka T2 viigu. Parameetrid:
    • prescale - Taktijaguri tegur või taktsignaali allikas.
  • void timer0_stop()
  • void timer2_stop()
    Taimeri 0/2 peatamine.
  • unsigned char timer0_get_value(void)
  • unsigned char timer2_get_value(void)
    Taimer 0/2 loenduri hetkeväärtuse tagastamine. Parameetrid:
    • Tagastab 8-bitise loenduri hetkeväärtuse.
  • void timer0_set_value(unsigned char value)
  • void timer2_set_value(unsigned char value)
    Taimer 0/2 loenduri uue väärtuse määramine. Parameetrid:
    • value - Uus 8-bitine loenduri väärtus.
  • 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:
    • enable - Tõeväärtus katkestuse lubamiseks või keelamiseks. true lubab, false keelab.
  • bool timer0_overflow_flag_is_set(void)
  • bool timer2_overflow_flag_is_set(void)
    Taimer 0/2 ületäitumise toimumise kontrollimine. Parameetrid:
    • Tagastab tõeväärtuse true, kui ületäitumine on toimunud, ja false, kui pole.
  • void timer0_overflow_flag_clear(void)
  • void timer2_overflow_flag_clear(void)
    Taimer 0/2 ületäitumise sündmuse lipukese nullimine.
  • 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:
    • prescale - Taktijaguri tegur.
  • 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.
  • void timer1_stop()
  • void timer3_stop()
    Taimeri 1/3 peatamine.
  • unsigned char timer1_get_value(void)
  • unsigned char timer3_get_value(void)
    Taimeri 1/3 loenduri hetkeväärtuse tagastamine. Parameetrid:
    • Tagastab 16-bitise loenduri hetkeväärtuse.
  • void timer1_set_value(unsigned char value)
  • void timer3_set_value(unsigned char value)
    Taimeri 1/3 loenduri uue väärtuse määramine. Parameetrid:
    • value - Uus 16-bitine loenduri väärtus.
  • 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:
    • Tagastab 16-bitise üksuse võrdlusregistri väärtuse.
  • 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:
    • value - Uus 16-bitine võrdlusväärtus.
  • unsigned short timer1_get_input_capture_value(void)
  • unsigned short timer3_get_input_capture_value(void)
    Taimer 1/3 sündmuste loenduri väärtuse tagastamine. Parameetrid:
    • Tagastab 16-bitise sündmuste loenduri registri väärtuse.
  • void timer1_set_input_capture_value(unsigned short value)
  • void timer3_set_input_capture_value(unsigned short value)
    Taimer 1/3 sündmuste loenduri registri väärtuse määramine. Parameetrid:
    • value - Uus 16-bitine sündmuste loenduri väärtus.
  • 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:
    • enable - Tõeväärtus katkestuse lubamiseks või keelamiseks. true lubab, false keelab.
  • 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:
    • enable - Tõeväärtus katkestuse lubamiseks või keelamiseks. true lubab, false keelab.
  • 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:
    • enable - Tõeväärtus katkestuse lubamiseks või keelamiseks. true lubab, false keelab.
  • bool timer1_overflow_flag_is_set(void)
  • bool timer3_overflow_flag_is_set(void)
    Taimeri 1/3 ületäitumise toimumise kontrollimine. Parameetrid:
    • Tagastab tõeväärtuse true, kui ületäitumine on toimunud, ja false, kui pole.
  • bool timer1_input_capture_flag_is_set(void)
  • bool timer3_input_capture_flag_is_set(void)
    Taimer 1/3 sündmuste loenduri lipukese kontrollimine. Parameetrid:
    • Tagastab tõeväärtuse true, kui sündmus on toimunud, ja false, kui pole.
  • void timer1_overflow_flag_clear(void)
  • void timer3_overflow_flag_clear(void)
    Taimeri 1/3 ületäitumise sündmuse lipukese nullimine.
  • void timer1_input_capture_flag_clear(void)
  • void timer3_input_capture_flag_clear(void)
    Taimer 1/3 sündmuste loenduri lipukese nullimine.

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();
}
et/software/homelab/library/timer.txt · Last modified: 2020/07/20 09:00 by 127.0.0.1
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0