8. naloga: Časovniki (TC)

1. Napišite podprogram INIT_TC0 za inicializacijo časovnika TC0, ki časovnik nastavi kot generator valnih oblik (waveform mode). Izberite najpočasnejšo uro, ki še dovoljuje dolžino intervala dolgo natančno eno milisekundo in ustrezno nastavite 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_TC0, ki bo imel enako funkcijo kot podprogram DELAY iz naloge s PIO krmilnikom in LED diodo. Za merjenje milisekundnega intervala uporabite časovnik TC0. V zanki berite statusni register časovnika in preverjajte ustrezno zastavico. Zanka naj teče, dokler se zastavica ne postavi na 1. 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 tovarniško listino za AT91SAM9260!