Вот что было в библиотеке:
Код: Выделить всё
#include "timers.h"
//------------------------------ function, for counting time-------------------------------//
#define clockCyclesPerMicrosecond() ( F_CPU / 1000000L )
#define clockCyclesToMicroseconds(a) ( (a) / clockCyclesPerMicrosecond() )
#define microsecondsToClockCycles(a) ( (a) * clockCyclesPerMicrosecond() )
// Предделитель устанавливается таким образом, что timer0 тик каждые 64 тактов, а обработчик переполнения вызывается каждые 256 тиков.
#define MICROSECONDS_PER_TIMER0_OVERFLOW (clockCyclesToMicroseconds(64 * 256))
// Целое число миллисекунд в переполнение TIMER0
#define MILLIS_INC (MICROSECONDS_PER_TIMER0_OVERFLOW / 1000)
// Дробное число миллисекунд на переполнение TIMER0. мы сдвиг вправо
// На три, чтобы соответствовать эти цифры в байт. (Для тактовой частоты мы заботимся
// О - 8 и 16 МГц - это не потеря точности).
#define FRACT_INC ((MICROSECONDS_PER_TIMER0_OVERFLOW % 1000) >> 3)
#define FRACT_MAX (1000 >> 3)
volatile unsigned long timer0_overflow_count = 0;
volatile unsigned long timer0_millis = 0;
static unsigned char timer0_fract = 0;
ISR(TIMER0_OVF_vect)
{
timer0_millis += 1;
timer0_fract += 3;
if (timer0_fract >= 125)
{
timer0_fract -= 125;
timer0_millis += 1;
}
timer0_overflow_count++;
}
unsigned long millis(void)
{
unsigned long m;
uint8_t oldSREG = SREG;
// Запретить прерывания в то время как мы читаем timer0_millis или мы могли бы получить
// Несовместимым значение (например, в середине записи в timer0_millis)
cli();
m = timer0_millis;
SREG = oldSREG;
return m;
}
void timer0_Init(void)
{
TCCR0 = (1<<CS00)|(1<<CS01); // делитель таймера 64
TIMSK = (1<<TOIE0); // включаем прерывание при переполнении
}
//---------------------------------------millis function end--------------------------------------//
Код: Выделить всё
#ifndef TIMERS_H
#define TIMERS_H
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/atomic.h>
#include <inttypes.h>
void timer0_Init(void);
unsigned long millis(void);
#endif //TIMERS_H
помогите пожалуйста, так как из выше приведенного кода я понимаю лиш процентов 70%
Добавлено after 6 hours 20 minutes 16 seconds:
помогите пожалуйста, как вы реализуете отсчет времени?


