#include "global-conf.h"
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
#include <avr/interrupt.h>
#include <avr/io.h>
#include <avr/sfr_defs.h>

#include "clock-arch.h"

// カウンター
clock_time_t clock_datetime = 0;

ISR(TIMER0_OVF_vect)
{
    clock_datetime += 1;
    TIFR0 |= (1 << TOV0);
}

/**
 * @brief 
 * clockの初期化
 */
void clock_init()
{
    // timer0のオーバーフロー割り込みを有効化
    TIMSK0 |= (1 << TOIE0);

    // プリスケーラを1024とする
    TCCR0B |= ((1<<CS12)|(1<<CS10));

    // 割り込み許可
    sei();
}

/**
 * @brief 
 * timeを返却
 * @return clock_time_t 
 */
clock_time_t clock_time()
{
    clock_time_t time;

    cli();
    time = clock_datetime;
    sei();

    return time;

}