8. naloga: Časovniki (TC)
1. Napišite podprogram INIT_TC za inicializacijo časovnika (SysTick za STM32H7 in TC0 zaFRI-SMS), ki časovnik nastavi kot enostaven števec period urinih signalov. Pri STM32H7 to pomeni preprosto odštevanje od začetne vrednosti do vrednosti 0. Začetna vrednost štetja se nastavi v registru SYST_RVR. Pri FRI-SMS pa nastavimo časovnik kot generator valnih oblik (waveform mode), izberemo najpočasnejšo uro, ki še dovoljuje dolžino intervala dolgo natančno eno milisekundo in ustrezno nastavitimo vrednost registra RC. Števec naj deluje tako, da šteje do vrednosti, določene z vrednostjo RC, nato naj se ponastavi na 0 in ponovno prične s štetjem. Podprogram mora ohraniti vrednost vseh registrov.
2. Napišite podprogram za zakasnitev DELAY_TC, ki bo imel enako funkcijo kot podprogram DELAY iz naloge s (G)PIO krmilnikom in LED diodo. Za merjenje milisekundnega intervala uporabite časovnik SysTikc za STM32H7 in TC0 za FRI-SMS. V notranji zanki za interval 1ms berite statusni register časovnika in preverjajte ustrezno zastavico. Zanka naj teče, dokler se zastavica ne postavi na 1. Notranjo zakasnilno zanko ponovite toliko krat, kot to določa parameter N. Vrednost parametra N dobi podprogram v registru R0. Podprogram mora ohraniti vrednost vseh registrov razen R0.
3. Napišite tudi kratek glavni program, ki naj kliče vse ustrezne podprograme, tako da bo LED dioda utripala s frekvenco natančno 1Hz. Za zakasnitev uporabite podprogram DELAY_TC0. LED diodo prižigajte in ugašajte s pomočjo podprogramov LED_OFF in LED_ON iz nalog 6. in 7. Za navodila pri delu glejte prosojnice in ustrezne tovarniške listine.
Nalogo lahko rešite tudi na STM32F4 in H7 ploščah. Poglejte ustrezne prosojnice in podobno nastavite časovnik SysTick.