Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
et:software:homelab:library:timer_xmega [2014/01/29 16:27] rellermaaet:software:homelab:library:timer_xmega [2020/07/20 12:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
-====== Taimerid ======+====== Taimerid XMega ======
  
 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, kuid siiski on nad loetavamad kui registrid. 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, kuid siiski on nad loetavamad kui registrid.
Line 6: Line 6:
  
   * **//Timer clockSelection//** \\ Taimer 0/1 taktijaguri tegurite valiku tüüp. Väärtuste variandid ja tähendused:   * **//Timer clockSelection//** \\ Taimer 0/1 taktijaguri tegurite valiku tüüp. Väärtuste variandid ja tähendused:
-    * //TC_CLKSEL_OFF_gc//  - Jagurit ei kasutata. +    * //TC_CLKSEL_OFF_gc//  - Jagurit ei kasutata. 
-    * //TC_CLKSEL_DIV1_gc//  - Jagamistegur 1. +    * //TC_CLKSEL_DIV1_gc//  - Jagamistegur 1. 
-    * //TC_CLKSEL_DIV2_gc//  - Jagamistegur 2. +    * //TC_CLKSEL_DIV2_gc//  - Jagamistegur 2. 
-    * //TC_CLKSEL_DIV4_gc//  - Jagamistegur 4. +    * //TC_CLKSEL_DIV4_gc//  - Jagamistegur 4. 
-    * //TC_CLKSEL_DIV8_gc//  - Jagamistegur 8. +    * //TC_CLKSEL_DIV8_gc//  - Jagamistegur 8. 
-    * //TC_CLKSEL_DIV64_gc//  - Jagamistegur 64.+    * //TC_CLKSEL_DIV64_gc//  - Jagamistegur 64.
     * //TC_CLKSEL_DIV256_gc// - Jagamistegur 256.     * //TC_CLKSEL_DIV256_gc// - Jagamistegur 256.
     * //TC_CLKSEL_DIV1024_gc// - Jagamistegur 1024.     * //TC_CLKSEL_DIV1024_gc// - Jagamistegur 1024.
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:
     * //TC_WGMODE_NORMAL_gc// - Normaal režiim     * //TC_WGMODE_NORMAL_gc// - Normaal režiim
- * //TC_WGMODE_FRQ_gc//  - Sagedus generaator režiim +    * //TC_WGMODE_FRQ_gc//  - Sagedus generaator režiim 
- * //TC_WGMODE_SINGLESLOPE_gc// - PWM režiim ainult üles loendusega +    * //TC_WGMODE_SINGLESLOPE_gc// - PWM režiim ainult üles loendusega 
- * //TC_WGMODE_DSTOP_gc// - PWM režiim üles-alla loendusega, Registrite uuendus TOP väärtusel +    * //TC_WGMODE_DSTOP_gc// - PWM režiim üles-alla loendusega, Registrite uuendus TOP väärtusel 
- * //TC_WGMODE_DSBOTH_gc// - PWM režiim üles-alla loendusega, Registrite uuendus TOP ja BOTTOM väärtusel +    * //TC_WGMODE_DSBOTH_gc// - PWM režiim üles-alla loendusega, Registrite uuendus TOP ja BOTTOM väärtusel 
- * //TC_WGMODE_DSBOTTOM_gc// - PWM režiim üles-alla loendusega, Registrite uuendus BOTTOM väärtusel+    * //TC_WGMODE_DSBOTTOM_gc// - PWM režiim üles-alla loendusega, Registrite uuendus BOTTOM väärtusel
 ~~CL~~  ~~CL~~
   * **//Timer katkestuste nimed ja prioriteedid.//** \\ Kõik katkestused XMega seeria mikrokontrolleritel on prioritiseeritud.   * **//Timer katkestuste nimed ja prioriteedid.//** \\ Kõik katkestused XMega seeria mikrokontrolleritel on prioritiseeritud.
     * //TC_OVFINTLVL// - Ületäituvuse katkestus     * //TC_OVFINTLVL// - Ületäituvuse katkestus
-   * //_OFF_gc// - Katkestus ei ole lubatud +      * //_OFF_gc// - Katkestus ei ole lubatud 
-   * //_LO_gc// - Madala prioriteediga katkestus +      * //_LO_gc// - Madala prioriteediga katkestus 
-   * //_MED_gc// - Keskmise prioriteediga katkestus +      * //_MED_gc// - Keskmise prioriteediga katkestus 
-   * //_HI_gc// - Kõrge prioriteediga katkestus +      * //_HI_gc// - Kõrge prioriteediga katkestus 
- * //TC_CCAINTLVL// - Võrdlusregistri katkestus +    * //TC_CCAINTLVL// - Võrdlusregistri katkestus 
- * //TC_CCBINTLVL// - Võrdlusregistri katkestus +    * //TC_CCBINTLVL// - Võrdlusregistri katkestus 
- * //TC_CCCINTLVL// - Võrdlusregistri katkestus +    * //TC_CCCINTLVL// - Võrdlusregistri katkestus 
- * //TC_CCDINTLVL// - Võrdlusregistri katkestus +    * //TC_CCDINTLVL// - Võrdlusregistri katkestus 
-   * //_OFF_gc// - Katkestus ei ole lubatud +      * //_OFF_gc// - Katkestus ei ole lubatud 
-   * //_LO_gc// - Madala prioriteediga katkestus +      * //_LO_gc// - Madala prioriteediga katkestus 
-   * //_MED_gc// - Keskmise prioriteediga katkestus +      * //_MED_gc// - Keskmise prioriteediga katkestus 
-   * //_HI_gc// - Kõrge 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 
- * //clockSelection// - Kella seadistus +    * //clockSelection// - Kella seadistus 
-  * **//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 +    * //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 
- * //enableMask// - Kanalid, mida käivitada (Võib loogilise OR tehtega käivitada korraga mitu) +    * //enableMask// - Kanalid, mida käivitada (Võib loogilise OR tehtega käivitada korraga mitu) 
-  * **//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 
- * //disableMask// - Kanalid, mida seisata (Võib loogilise OR tehtega seisata korraga mitu) +    * //disableMask// - Kanalid, mida seisata (Võib loogilise OR tehtega seisata korraga mitu) 
-  * **//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 
- * //intLevel// - ületäitumise katkestuse prioriteet +    * //intLevel// - ületäitumise katkestuse prioriteet 
-  * **//void TC0_SetCCAIntLevel( volatile TC0_t * tc, TC_CCAINTLVL_t intLevel );//** \\Timer0 signaaligenereerimis viigu A katkestuse seadistamine +  * **//void TC0_SetCCAIntLevel( volatile TC0_t * tc, TC_CCAINTLVL_t intLevel );//**  
-  * **//void TC0_SetCCBIntLevel( volatile TC0_t * tc, TC_CCBINTLVL_t intLevel );//** \\Timer0 signaaligenereerimis viigu B katkestuse seadistamine   +  * **//void TC0_SetCCBIntLevel( volatile TC0_t * tc, TC_CCBINTLVL_t intLevel );//**  
-  * **//void TC0_SetCCCIntLevel( volatile TC0_t * tc, TC_CCCINTLVL_t intLevel );//** \\Timer0 signaaligenereerimis viigu C katkestuse seadistamine +  * **//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 
- * //intLevel// - Võrdlusregistri katkestuse prioriteet+    * //intLevel// - Võrdlusregistri katkestuse prioriteet
  
-  * **//void TC0_Reset( volatile TC0_t * tc );//** \\Timer0 taaskäivitus+  * **//void TC0_Reset( volatile TC0_t * tc );//** Timer0 taaskäivitus
     * //tc// - Taimeri port      * //tc// - Taimeri port 
      
Line 68: Line 69:
  
 ===== Makrod ===== ===== Makrod =====
-  * **//TC_SetCount( _tc, _count )//** \\ Võimaldab taimeri väärtust käsitsi muuta+  * **//TC_SetCount( _tc, _count )//** Võimaldab taimeri väärtust käsitsi muuta
     * //_tc// - Taimeri moodul     * //_tc// - Taimeri moodul
     * //_count// - seadesuurus      * //_count// - seadesuurus
-  * **//TC_SetPeriod( _tc, _period )//** \\ Seadistab taimeri perioodi+  * **//TC_SetPeriod( _tc, _period )//** Seadistab taimeri perioodi
     * //_tc// - Taimeri moodul     * //_tc// - Taimeri moodul
     * //_period// - perioodi seadesuurus      * //_period// - perioodi seadesuurus
Line 77: Line 78:
   * **//TC_SetCompareB( _tc, _compareValue )//**   * **//TC_SetCompareB( _tc, _compareValue )//**
   * **//TC_SetCompareC( _tc, _compareValue )//**   * **//TC_SetCompareC( _tc, _compareValue )//**
-  * **//TC_SetCompareD( _tc, _compareValue )//** \\ Sea väärtus, millega toimub kanali võrdlus+  * **//TC_SetCompareD( _tc, _compareValue )//** Sea väärtus, millega toimub kanali võrdlus
     * //_tc// - Taimeri moodul     * //_tc// - Taimeri moodul
     * //_compareValue// - seadesuurus     * //_compareValue// - seadesuurus
-  * **//TC_GetOverflowFlag( _tc )//** \\ Kontrolli ületäituvuse lippu+  * **//TC_GetOverflowFlag( _tc )//** Kontrolli ületäituvuse lippu
     * //_tc// - Taimeri moodul     * //_tc// - Taimeri moodul
-  * **//TC_ClearOverflowFlag( _tc )//** \\ Puhasta ületäituvuse lipp+  * **//TC_ClearOverflowFlag( _tc )//** Puhasta ületäituvuse lipp
     * //_tc// - Taimeri moodul     * //_tc// - Taimeri moodul
   * **//TC_GetCCAFlag( _tc )//**   * **//TC_GetCCAFlag( _tc )//**
   * **//TC_GetCCBFlag( _tc )//**   * **//TC_GetCCBFlag( _tc )//**
   * **//TC_GetCCCFlag( _tc )//**   * **//TC_GetCCCFlag( _tc )//**
-  * **//TC_GetCCDFlag( _tc )//** \\ Kontrolli signaaligeneraatori lippu+  * **//TC_GetCCDFlag( _tc )//** Kontrolli signaaligeneraatori lippu
     * //_tc// - Taimeri moodul     * //_tc// - Taimeri moodul
   * **//TC_ClearCCAFlag( _tc )//**   * **//TC_ClearCCAFlag( _tc )//**
   * **//TC_ClearCCBFlag( _tc )//**   * **//TC_ClearCCBFlag( _tc )//**
   * **//TC_ClearCCCFlag( _tc )//**   * **//TC_ClearCCCFlag( _tc )//**
-  * **//TC_ClearCCDFlag( _tc )//** \\ Puhasta signaaligeneraatori lipp+  * **//TC_ClearCCDFlag( _tc )//** Puhasta signaaligeneraatori lipp
     * //_tc// - Taimeri moodul     * //_tc// - Taimeri moodul
   * **//TC_GetCaptureA( _tc )//**   * **//TC_GetCaptureA( _tc )//**
   * **//TC_GetCaptureB( _tc )//**   * **//TC_GetCaptureB( _tc )//**
   * **//TC_GetCaptureC( _tc )//**   * **//TC_GetCaptureC( _tc )//**
-  * **//TC_GetCaptureD( _tc )//** \\ Kontrolli sündmuste loendurit+  * **//TC_GetCaptureD( _tc )//** Kontrolli sündmuste loendurit
     * //_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(&TCE0, 20000);
 + TC_SetCompareA(&TCE0, 15000);
  
- TC_SetPeriod(&TCE0, 20000); // Seame taimer E0i perioodi + // Seame taimer E0i taktsageduse (F_CPU/1024) 
- TC_SetCompareA(&TCE0, 15000); // Seame taimer E0i töötsükli pikkuse+ TC0_ConfigClockSource(&TCE0, TC_CLKSEL_DIV1024_gc);  
 + // Seame taimer E0i töötama normaalrežiimis 
 + TC0_ConfigWGM(&TCE0, TC_WGMODE_NORMAL_gc);
  
- TC0_ConfigClockSource(&TCE0, TC_CLKSEL_DIV1024_gc); // Seame taimer E0i taktsageduse (F_CPU/1024) + // Lubame ületäituvuse katkestuse kõrge prioriteediga 
- TC0_ConfigWGM(&TCE0, TC_WGMODE_NORMAL_gc); // Seame taimer E0i töötama normaalrežiimis + // Lubame värdluskanali A katkestuse keskmise prioriteediga 
- + TC0_SetOverflowIntLevel(&TCE0,TC_OVFINTLVL_HI_gc);  
- TC0_SetOverflowIntLevel(&TCE0,TC_OVFINTLVL_HI_gc); // Lubame ületäituvuse katkestuse kõrge prioriteediga + TC0_SetCCAIntLevel(&TCE0, TC_CCAINTLVL_MED_gc);  
- TC0_SetCCAIntLevel(&TCE0, TC_CCAINTLVL_MED_gc); // Lubame värdluskanali A katkestuse keskmise prioriteediga +  
- + // Lubame keskmised ja kõrge prioriteedika katkestused 
- PMIC.CTRL |= PMIC_MEDLVLEN_bm|PMIC_HILVLEN_bm; // Lubame keskmised ja kõrge prioriteedika katkestused + // Lubame globaalselt katkestused 
- sei(); // Lubame globaalselt katkestused+ 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
et/software/homelab/library/timer_xmega.1391005658.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