SAM D10 Xplained Mini - 03 SysTick Timer

Zápisník experimentátora

Hierarchy: SAM D10 Xplained Mini

Vykonávanie nejakej činnosti v definovanom intervale patrí k najčastejším úlohám v mikrokontroléri. Najjednoduchšou možnosťou v mikrokontroléri ATSAMD10 je systémový timer. Jediným príkazom ho možno nastaviť a potom už sám v pravidelných intervaloch volá definovanú funkciu.

Definovanie systémového timera

Systémový timer sa zapne príkazom SysTick_Config(system_gclk_gen_get_hz(GCLK_GENERATOR_0));. Funkcia SysTick_Config musí dostať ako parameter počet hodinových tikov medzi prerušeniami. Keďže vývojová doska SAM D10 Xplained Mini je implicitne nastavená na 8 MHz, mohli by sme použiť túto konštantu. Bezpečnejšie ale je použiť funkciu system_gclk_gen_get_hz.

Napojenie funkcie prerušenia

Tu je jedinou možnosťou použiť funkciu s názvom SysTick_Handler. Z nej si potom podľa potreby môžeme volať naše ďalšie funkcie, ktoré môžu vykonávať nejakú činnosť.

#include <asf.h>
#include "arduino.h"

int main (void)
{
system_init();
rurInit();
SysTick_Config(system_gclk_gen_get_hz(GCLK_GENERATOR_0));
  
while (1) {
  }
}

void SysTick_Handler(void)
{
port_pin_toggle_output_level(LED_0_PIN);
nextStep();
}

V tomto príklade som vo funkcii SysTick_Handler najprv prepol internú led a potom som zavolal funkciu nextStep, ktorá postupne animuje 8 LED diód. Zapojenie je identické s predchádzajúcim príkladom LED Rider a funkcia nextStep je iba mierne modifikovanou verziou predchádzajúceho príkladu. Vzhľadom na to, že v tomto prípade nám každú sekundu vygenruje prerušenie systémový timer, nemusíme už vo funkcii používať funkciu delay.



Download

24.03.2016


Menu