Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
ru:software:homelab:library:timer [2013/08/14 21:10] – создано eduardtlmkru:software:homelab:library:timer [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1
Line 1: Line 1:
-====== Таймеры ====== 
- 
-Данная библиотека таймеров покрывает большую часть функциональности таймеров 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. 
-~~PB~~ 
-  * **//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. 
- 
-<code c> 
-#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(); 
-} 
-</code> 
  
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