Помогите с функцией millis()

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
alexval2006
Прорезались зубы
Сообщения: 225
Зарегистрирован: Сб мар 10, 2007 20:05:39
Откуда: валуйки
Контактная информация:

Помогите с функцией millis()

Сообщение alexval2006 »

Помогите реализовать функцию millis() на AVR GCC atmega8 эта функция есть в платформе ARDUINO я хоте лбы реализовать нечто аналогичное в авр студии на си
Вот что написано о ней в описании среды Ардуино
Описание:
Возвращает количество миллисекунд, прошедшее с момента запуска платформой данной программы. Это число переполнится(и счет снова начнется от нуля) примерно через 50 дней.
Входной параметр отсутствует
Следует помнить, что тип возвращаемой переменной unsigned long, и могут возникать ошибки, если программист попытается совершить математическими операции с переменными других типов.
Пример её использования в ардуино
unsigned long time;

void setup(){
Serial.begin(9600);
}
void loop(){
Serial.print("Time: ");
time = millis();
// Отправляем по UART время прошедшее с момента старта программы
Serial.println(time);
// пауза в 1 секунду. Для уменьшения обмена по уарт.
delay(1000);
}
Я так понимаю мне наверно нужно что то с таймером сделать посоветуйте как мне решить эту проблему
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18673
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Помогите с функцией millis()

Сообщение ARV »

настройте таймер на прерывание каждую миллисекунду, заведите переменную volatile uint32_t CNT32, которую инкрементируйте по прерыванию таймера, и тогда ваша функция будет выглядеть элементарно:

Код: Выделить всё

#include <util/atomic.h>
uint32_t millis(void){
   ATOMIC_BLOCK(ATOMIC_RESTORE_STATE){
      return CNT32;
   }
}
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
alexval2006
Прорезались зубы
Сообщения: 225
Зарегистрирован: Сб мар 10, 2007 20:05:39
Откуда: валуйки
Контактная информация:

Re: Помогите с функцией millis()

Сообщение alexval2006 »

спасибо :)
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»