This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| ru:software:homelab:library:timer [2013/08/14 21:10] – создано eduardtlmk | ru:software:homelab:library:timer [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Таймеры ====== | ||
| - | |||
| - | Данная библиотека таймеров покрывает большую часть функциональности таймеров ATmega128. Так как таймеры AVR в разных чипах различаются, | ||
| - | |||
| - | ===== Типы данных ===== | ||
| - | |||
| - | * **// | ||
| - | * // | ||
| - | * // | ||
| - | * // | ||
| - | * // | ||
| - | * // | ||
| - | * // | ||
| - | * // | ||
| - | |||
| - | * **// | ||
| - | * // | ||
| - | * // | ||
| - | * // | ||
| - | * // | ||
| - | * // | ||
| - | * // | ||
| - | * // | ||
| - | |||
| - | * **// | ||
| - | * **// | ||
| - | * // | ||
| - | * // | ||
| - | * // | ||
| - | * // | ||
| - | * // | ||
| - | * // | ||
| - | * // | ||
| - | ~~PB~~ | ||
| - | * **// | ||
| - | * **// | ||
| - | * // | ||
| - | * // | ||
| - | |||
| - | * **// | ||
| - | * **// | ||
| - | * // | ||
| - | * // | ||
| - | * // | ||
| - | * // | ||
| - | * // | ||
| - | |||
| - | * **// | ||
| - | * **// | ||
| - | * // | ||
| - | * // | ||
| - | * // | ||
| - | * // | ||
| - | |||
| - | ===== Funktsioonid ===== | ||
| - | |||
| - | * **//void timer0_init_normal(timer0_prescale prescale)// | ||
| - | * // | ||
| - | |||
| - | * **//void timer2_init_normal(timer2_prescale prescale)// | ||
| - | * // | ||
| - | |||
| - | * **//void timer0_stop()// | ||
| - | * **//void timer2_stop()// | ||
| - | |||
| - | * **// | ||
| - | * **// | ||
| - | * 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 " | ||
| - | * //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)// | ||
| - | * 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)// | ||
| - | |||
| - | * **//void timer1_init_normal(timer1_prescale prescale)// | ||
| - | * **//void timer3_init_normal(timer3_prescale prescale)// | ||
| - | * // | ||
| - | |||
| - | * **//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: | ||
| - | * // | ||
| - | * //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)// | ||
| - | * // | ||
| - | * //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. | ||
| - | * // | ||
| - | * // | ||
| - | * // | ||
| - | |||
| - | * **//void timer1_stop()// | ||
| - | * **//void timer3_stop()// | ||
| - | |||
| - | * **// | ||
| - | * **// | ||
| - | * 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. | ||
| - | |||
| - | * **// | ||
| - | * **// | ||
| - | * **// | ||
| - | * **// | ||
| - | * **// | ||
| - | * **// | ||
| - | * 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. | ||
| - | |||
| - | * **// | ||
| - | * **// | ||
| - | * 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, | ||
| - | * //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, | ||
| - | * //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 // | ||
| - | * //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)// | ||
| - | * 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)// | ||
| - | * 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)// | ||
| - | |||
| - | * **//void timer1_input_capture_flag_clear(void)// | ||
| - | * **//void timer3_input_capture_flag_clear(void)// | ||
| - | |||
| - | ===== Näide ===== | ||
| - | |||
| - | Näites seadistatakse taimer 0 tavalisse loendamise režiimi ja lubatakse ületäitumise katkestus. | ||
| - | |||
| - | <code c> | ||
| - | #include < | ||
| - | #include < | ||
| - | |||
| - | // Katkestuse programmilõik | ||
| - | ISR(TIMER0_OVF_vect) | ||
| - | { | ||
| - | } | ||
| - | |||
| - | int main(void) | ||
| - | { | ||
| - | // Taimer 0 normaalrežiimi, | ||
| - | timer0_init_normal(TIMER0_PRESCALE_32); | ||
| - | |||
| - | // Taimer 0 ületäitumise katkestuse lubamine | ||
| - | timer0_overflow_interrupt_enable(true); | ||
| - | |||
| - | // Globaalne katkestuste lubamine | ||
| - | sei(); | ||
| - | } | ||
| - | </ | ||