This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| et:software:homelab:library:timer_xmega [2014/01/29 16:27] – rellermaa | et:software:homelab:library:timer_xmega [2020/07/20 12:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Taimerid ====== | + | ====== Taimerid |
| Käesolev taimerite teek katab suure osa ATXmega128A1U taimerite funktsionaalsusest. Kuna AVR taimerid on erinevate kiipide vahel päris erinevad, siis ei saa nende kasutamiseks kirjutada universaalseid funktsioone. Ka kirjeldatavad ATXmega128A1U funktsioonid on suures osas lihtsalt primitiivsed registri muutmise või lugemise funktsioonid, | Käesolev taimerite teek katab suure osa ATXmega128A1U taimerite funktsionaalsusest. Kuna AVR taimerid on erinevate kiipide vahel päris erinevad, siis ei saa nende kasutamiseks kirjutada universaalseid funktsioone. Ka kirjeldatavad ATXmega128A1U funktsioonid on suures osas lihtsalt primitiivsed registri muutmise või lugemise funktsioonid, | ||
| Line 6: | Line 6: | ||
| * **//Timer clockSelection// | * **//Timer clockSelection// | ||
| - | * // | + | * // |
| - | * // | + | * // |
| - | * // | + | * // |
| - | * // | + | * // |
| - | * // | + | * // |
| - | * // | + | * // |
| * // | * // | ||
| * // | * // | ||
| Line 17: | Line 17: | ||
| * **//Timer wgm//** \\ Taimer 0/1 režiim. Väärtuste variandid ja tähendused: | * **//Timer wgm//** \\ Taimer 0/1 režiim. Väärtuste variandid ja tähendused: | ||
| * // | * // | ||
| - | * // | + | |
| - | * // | + | * // |
| - | * // | + | * // |
| - | * // | + | * // |
| - | * // | + | * // |
| ~~CL~~ | ~~CL~~ | ||
| * **//Timer katkestuste nimed ja prioriteedid.// | * **//Timer katkestuste nimed ja prioriteedid.// | ||
| * // | * // | ||
| - | | + | |
| - | | + | * //_LO_gc// - Madala prioriteediga katkestus |
| - | | + | * //_MED_gc// - Keskmise prioriteediga katkestus |
| - | | + | * //_HI_gc// - Kõrge prioriteediga katkestus |
| - | * // | + | * // |
| - | * // | + | * // |
| - | * // | + | * // |
| - | * // | + | * // |
| - | | + | * //_OFF_gc// - Katkestus ei ole lubatud |
| - | | + | * //_LO_gc// - Madala prioriteediga katkestus |
| - | | + | * //_MED_gc// - Keskmise prioriteediga katkestus |
| - | | + | * //_HI_gc// - Kõrge prioriteediga katkestus |
| ===== Funktsioonid ===== | ===== Funktsioonid ===== | ||
| - | * **//void TC0_ConfigClockSource( volatile TC0_t * tc, TC_CLKSEL_t clockSelection );//** \\Timer0 taktigeneraatori seadistamine. | + | * **//void TC0_ConfigClockSource( volatile TC0_t * tc, TC_CLKSEL_t clockSelection );//** \\ Timer0 taktigeneraatori seadistamine. |
| * //tc// - Taimeri port | * //tc// - Taimeri port | ||
| - | * // | + | |
| - | * **//void TC0_ConfigWGM( volatile TC0_t * tc, TC_WGMODE_t wgm );//** \\Timer0 režiimi seadistamine. | + | * **//void TC0_ConfigWGM( volatile TC0_t * tc, TC_WGMODE_t wgm );//** \\ Timer0 režiimi seadistamine. |
| * //tc// - Taimeri port | * //tc// - Taimeri port | ||
| - | * //wgm// - režiimi seadistus | + | |
| - | * **//void TC0_EnableCCChannels( volatile TC0_t * tc, uint8_t enableMask );//** \\Timer0 signaaligenereerimis üksuste käivitamine | + | * **//void TC0_EnableCCChannels( volatile TC0_t * tc, uint8_t enableMask );//** \\ Timer0 signaaligenereerimis üksuste käivitamine |
| * //tc// - Taimeri port | * //tc// - Taimeri port | ||
| - | * // | + | |
| - | * **//void TC0_DisableCCChannels( volatile TC0_t * tc, uint8_t disableMask );//** \\Timer0 signaaligenereerimis üksuste seiskamine | + | * **//void TC0_DisableCCChannels( volatile TC0_t * tc, uint8_t disableMask );//** \\ Timer0 signaaligenereerimis üksuste seiskamine |
| * //tc// - Taimeri port | * //tc// - Taimeri port | ||
| - | * // | + | |
| - | * **//void TC0_SetOverflowIntLevel( volatile TC0_t * tc, TC_OVFINTLVL_t intLevel );//** \\Timer0 ületäituvuse katkestuse käivitamine | + | * **//void TC0_SetOverflowIntLevel( volatile TC0_t * tc, TC_OVFINTLVL_t intLevel );//** \\ Timer0 ületäituvuse katkestuse käivitamine |
| * //tc// - Taimeri port | * //tc// - Taimeri port | ||
| - | * // | + | |
| - | * **//void TC0_SetCCAIntLevel( volatile TC0_t * tc, TC_CCAINTLVL_t intLevel );// | + | * **//void TC0_SetCCAIntLevel( volatile TC0_t * tc, TC_CCAINTLVL_t intLevel );//** |
| - | * **//void TC0_SetCCBIntLevel( volatile TC0_t * tc, TC_CCBINTLVL_t intLevel );// | + | * **//void TC0_SetCCBIntLevel( volatile TC0_t * tc, TC_CCBINTLVL_t intLevel );//** |
| - | * **//void TC0_SetCCCIntLevel( volatile TC0_t * tc, TC_CCCINTLVL_t intLevel );// | + | * **//void TC0_SetCCCIntLevel( volatile TC0_t * tc, TC_CCCINTLVL_t intLevel );// |
| - | * **//void TC0_SetCCDIntLevel( volatile TC0_t * tc, TC_CCDINTLVL_t intLevel );//** \\Timer0 signaaligenereerimis viigu D katkestuse seadistamine | + | * **//void TC0_SetCCDIntLevel( volatile TC0_t * tc, TC_CCDINTLVL_t intLevel );//** \\ |
| + | Timer0 signaaligenereerimis viigu A/B/C/D katkestuse seadistamine | ||
| * //tc// - Taimeri port | * //tc// - Taimeri port | ||
| - | * // | + | |
| - | * **//void TC0_Reset( volatile TC0_t * tc );// | + | * **//void TC0_Reset( volatile TC0_t * tc );//** Timer0 taaskäivitus |
| * //tc// - Taimeri port | * //tc// - Taimeri port | ||
| | | ||
| Line 68: | Line 69: | ||
| ===== Makrod ===== | ===== Makrod ===== | ||
| - | * **// | + | * **// |
| * //_tc// - Taimeri moodul | * //_tc// - Taimeri moodul | ||
| * //_count// - seadesuurus | * //_count// - seadesuurus | ||
| - | * **// | + | * **// |
| * //_tc// - Taimeri moodul | * //_tc// - Taimeri moodul | ||
| * //_period// - perioodi seadesuurus | * //_period// - perioodi seadesuurus | ||
| Line 77: | Line 78: | ||
| * **// | * **// | ||
| * **// | * **// | ||
| - | * **// | + | * **// |
| * //_tc// - Taimeri moodul | * //_tc// - Taimeri moodul | ||
| * // | * // | ||
| - | * **// | + | * **// |
| * //_tc// - Taimeri moodul | * //_tc// - Taimeri moodul | ||
| - | * **// | + | * **// |
| * //_tc// - Taimeri moodul | * //_tc// - Taimeri moodul | ||
| * **// | * **// | ||
| * **// | * **// | ||
| * **// | * **// | ||
| - | * **// | + | * **// |
| * //_tc// - Taimeri moodul | * //_tc// - Taimeri moodul | ||
| * **// | * **// | ||
| * **// | * **// | ||
| * **// | * **// | ||
| - | * **// | + | * **// |
| * //_tc// - Taimeri moodul | * //_tc// - Taimeri moodul | ||
| * **// | * **// | ||
| * **// | * **// | ||
| * **// | * **// | ||
| - | * **// | + | * **// |
| * //_tc// - Taimeri moodul | * //_tc// - Taimeri moodul | ||
| Line 125: | Line 126: | ||
| int main(void) | int main(void) | ||
| { | { | ||
| - | Homelab_clock_init(); | ||
| - | |||
| // Seadista roheline LED väljundiks | // Seadista roheline LED väljundiks | ||
| pin_setup_output(led_green); | pin_setup_output(led_green); | ||
| led_off(led_green); | led_off(led_green); | ||
| + | |||
| + | // Seame taimer E0i perioodi | ||
| + | // Seame taimer E0i töötsükli pikkuse | ||
| + | TC_SetPeriod(& | ||
| + | TC_SetCompareA(& | ||
| - | TC_SetPeriod(& | + | // Seame taimer E0i taktsageduse (F_CPU/ |
| - | TC_SetCompareA(& | + | TC0_ConfigClockSource(& |
| + | // Seame taimer E0i töötama normaalrežiimis | ||
| + | TC0_ConfigWGM(& | ||
| - | TC0_ConfigClockSource(& | + | // Lubame ületäituvuse katkestuse kõrge prioriteediga |
| - | TC0_ConfigWGM(& | + | // Lubame värdluskanali A katkestuse keskmise prioriteediga |
| - | + | TC0_SetOverflowIntLevel(& | |
| - | TC0_SetOverflowIntLevel(& | + | TC0_SetCCAIntLevel(& |
| - | TC0_SetCCAIntLevel(& | + | |
| - | + | // Lubame | |
| - | PMIC.CTRL |= PMIC_MEDLVLEN_bm|PMIC_HILVLEN_bm; | + | // Lubame globaalselt katkestused |
| - | sei(); | + | PMIC.CTRL |= PMIC_MEDLVLEN_bm|PMIC_HILVLEN_bm; |
| + | sei(); | ||
| //Tühi tsükkel, programm jookseb katkestuste peal | //Tühi tsükkel, programm jookseb katkestuste peal | ||