Timer

📅 27. 2. 2024

🇬🇧

Jednoduchá knihovna pro časování v milisekundách, funguje na Atmega328P / Arduino UNO, s drobnými modifikacemi ji lze použít na různých hodinách mikrokontroleru a pro různá podobná AVR (úpravy lze provést podle dokumentace, link dole). K updatování času používá interrupty, může běžet bez přetečení skoro 50 dní.

Kód je dostupný na GitHubu:

Readme Card

Features

Init

void Init(void);

Inicializace, tuto funkci je potřeba zavolat jako úplně první.

Get

unsigned long Get(void);

Vrací čas v ms od inicializace.

Reset

void Reset(void);

Resetuje naměřený čas na nulu.

Ukázka použití

#include "timer.h"
#define DELAY 200 // v ms

Timer timer;
unsigned long lastReading;

int main(void)
{
    // setup timeru
    timer.Init();
    unsigned long lastReading = 0;
    unsigned long currentTime = 0;
    // povoleni interruptu
	sei();

	// hlavni loop
	while (1)
	{
        // cas prave ted
        currentTime = timer.Get();

        // pokud ubehlo dost casu
        if (currentTime - lastReading > DELAY) {
            /* 
            delej neco (treba blikej LED)
            */
           // reset
           lastReading = currentTime;
        }
    }
}

Sources