This is an old revision of the document!


Таймеры

Данная библиотека таймеров покрывает большую часть функциональности таймеров ATmega128. Так как таймеры AVR в разных чипах различаются, нельзя для их использования написать универсальные функции. Описанные функции ATmega128 в большей степени просто примитивные функции для изменения или чтения регистров, но всё же они читаемы, чем сами регистры.

Типы данных

  • timer0_prescale
    Тип выбора коэффициента делителя в такте таймера 0. Варианты значений и обозначения:
    • TIMER0_NO_PRESCALE - Делитель не используется.
    • TIMER0_PRESCALE_8 - Коэффициент деления 8.
    • TIMER0_PRESCALE_32 - Коэффициент деления 32.
    • TIMER0_PRESCALE_64 - Коэффициент деления 64.
    • TIMER0_PRESCALE_128 - Коэффициент деления 128.
    • TIMER0_PRESCALE_256 - Коэффициент деления 256.
    • TIMER0_PRESCALE_1024 - Коэффициент деления 1024.
  • timer2_prescale
    Тип выбора коэффициента делителя в такте таймера 2. Варианты значений и обозначения:
    • TIMER2_NO_PRESCALE - Делитель не используется.
    • TIMER2_PRESCALE_8 - Коэффициент деления 8.
    • TIMER2_PRESCALE_64 - Коэффициент деления 64.
    • TIMER2_PRESCALE_256 - Коэффициент деления 256.
    • TIMER2_PRESCALE_1024 - Коэффициент деления 1024.
    • TIMER2_PRESCALE_T2_FALLING - Тактовый сигнал идёт по падающему фронту вывода T2.
    • TIMER2_PRESCALE_T2_RISING - Тактовый сигнал идёт по нарастающему фронту вывода T2.
  • timer1_prescale
  • timer3_prescale
    Тип выбора коэффициента делителя в такте таймера 1/3. Варианты значений и обозначения („n“ обозначает 1 или 3):
    • TIMERn_NO_PRESCALE - Делитель не используется.
    • TIMERn_PRESCALE_8 - Коэффициент деления 8.
    • TIMERn_PRESCALE_64 - Коэффициент деления 64.
    • TIMERn_PRESCALE_256 - Коэффициент деления 256.
    • TIMERn_PRESCALE_1024 - Коэффициент деления 1024.
    • TIMERn_PRESCALE_Tn_FALLING - Тактовый сигнал идёт по спадающему фронту вывода Tn.
    • TIMERn_PRESCALE_Tn_RISING - Тактовый сигнал идёт по нарастающему фронту вывода Tn.

 

  • timer1_ctc_top
  • timer3_ctc_top
    Тип выбора максимального значения у счётчика режима CTC таймера 1/3. Варианты значений и обозначения („n“ обозначает 1 или 3):
    • TIMERn_CTC_TOP_OCRA - Максимальное значение назначается регистром сравнения А таймера 1/3.
    • TIMERn_CTC_TOP_ICR -  TIMERn_CTC_TOP_ICR – Максимальное значение назначается регистром счётчика событий таймера 1/3.
  • timer1_fast_pwm_top
  • timer3_fast_pwm_top
    Тип выбора максимального значения у счётчика быстрого режима ШИМ таймера 1/3. Варианты значений и обозначения („n“ обозначает 1 или 3):
    • TIMERn_FAST_PWM_TOP_256 - Максимальное значение 255.
    • TIMERn_FAST_PWM_TOP_512 - Максимальное значение 511.
    • TIMERn_FAST_PWM_TOP_1024 - Максимальное значение 1023.
    • TIMERn_FAST_PWM_TOP_ICR - Максимальное значение назначается регистром счётчика событий таймера 1/3.
    • TIMERn_PAST_PWM_TOP_OCRA - Максимальное значение назначается регистром сравнения А таймера 1/3.
  • timer1_fast_pwm_output_mode
  • timer1_fast_pwm_output_mode
    Тип выбора выходов таймера 1/3 в быстром режиме ШИМ. Варианты значений и обозначения („n“ обозначает 1 или 3):
    • TIMERn_FAST_PWM_OUTPUT_DISABLE - Сигнал ШИМ не доходит до вывода.
    • TIMERn_FAST_PWM_OUTPUT_TOGGLE_ON_MATCH - Вывод становится обратным, когда счётчик приобретает значение регистра сравнения.
    • TIMERn_FAST_PWM_OUTPUT_CLEAR_ON_MATCH - Вывод становится низким, когда счётчик приобретает значение регистра сравнения и высоким, когда счётчик достигает нуля.
    • TIMERn_FAST_PWM_OUTPUT_SET_ON_MATCH - Вывод становится высоким, когда счётчик приобретает значение регистра сравнения, и низким, когда счётчик достигает нуля.

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();
}
ru/software/homelab/library/timer.1376503810.txt.gz · Last modified: (external edit)
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