Записывание даных скорости ветра на ATmega16

Обсуждаем контроллеры компании Atmel.
Ответить
stm
Открыл глаза
Сообщения: 46
Зарегистрирован: Пн янв 28, 2013 18:25:46
Откуда: Мукачево

Записывание даных скорости ветра на ATmega16

Сообщение stm »

Пишу прогу в CVAVR для анемометра за основу была взята статья http://avr-start.ru/?p=883 про внешные прерывания
Дополнительно добавил часовой кварц для точного счета времени,кнопку , а также временно подключил LCD 1602 для отладки.
Собрал в железе работает показывает скорость нажатия на кнопку за сек, теперь хочу добавить среднюю скорость но незнаю как это зделать програмно чтоб вычислить среднюю скорость за 24 часа ну а вычислиную скорость ветра записывать на sd карту но до этого еще далеко...

Прошу подсказать как это можна реализовать
Буду благодарен за любую информацию :)
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Записывание даных скорости ветра на ATmega16

Сообщение pyzhman »

stm писал(а):показывает скорость нажатия на кнопку за сек

Не понятно. Скорость ветра вроде как должна показываться?
А среднее ищется по простой формуле. Берем несколько отсчетов и делим на количество этих отсчетов. Будет среднее арифметическое. Если за сутки, т.е. 24 часа, и отсчеты каждую секунду, то сохраненные предварительно отсчеты в буфере размером 60*60*24 складываем и делим на 86400.
Docendo discimus
stm
Открыл глаза
Сообщения: 46
Зарегистрирован: Пн янв 28, 2013 18:25:46
Откуда: Мукачево

Re: Записывание даных скорости ветра на ATmega16

Сообщение stm »

Спасибо за ответ
Да мерять хочу ветер

С средним значением понятно но ветер есть не всегда и тогда делить наверно надо на время когда анемометр был в работе, мне интересно как подсчитать робочее время использовать отдельный таймер или что
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Записывание даных скорости ветра на ATmega16

Сообщение pyzhman »

Секунду назад ветер был 4м/с, сейчас 0м/с. (4+0)/2= 2м/с. И т.д.
Рабочее время и всё остальное можно считать одним таймером. Организовать разные счётчики. Например

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

void timer0(void)
{
if(++countTime1 > 100)
    {
    countTime1= 0;
// прошло N времени
// делаем необходимое
    }
if(++countTime2 > 75)
    {
    countTime2= 0;
// прошло K времени
// делаем необходимое
    }
}
Docendo discimus
stm
Открыл глаза
Сообщения: 46
Зарегистрирован: Пн янв 28, 2013 18:25:46
Откуда: Мукачево

Re: Записывание даных скорости ветра на ATmega16

Сообщение stm »

Спасибо попробую
stm
Открыл глаза
Сообщения: 46
Зарегистрирован: Пн янв 28, 2013 18:25:46
Откуда: Мукачево

Re: Записывание даных скорости ветра на ATmega16

Сообщение stm »

Написал так как в вашем примере возник ло несколько вопросов
-В какой части программы должен быть код.
-В строчке void timer0(void) писать названия таймера за которым будут работать счетчики в моем случае timer2_comp.
-Надо ли обявлять countTime1 countTime2 потому что CVAVR выдает ошибки Error: m.c(86): undefined symbol 'countTime1' Error: m.c(92): undefined symbol 'countTime2', весь код счетчиков у меня стоит сразу за прерыванием второго таймера
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Записывание даных скорости ветра на ATmega16

Сообщение pyzhman »

-В какой части программы должен быть код.
В той, где обрабатывается таймер. Предполагается подпрограмма обработки прерывания таймера0.


-В строчке void timer0(void) писать названия таймера за которым будут работать счетчики в моем случае timer2_comp.
timer0 написан для примера. Вы должны использовать свой, хоть нулевой, хоть первый, хоть второй.


-Надо ли обявлять countTime1 countTime2 потому что CVAVR выдает ошибки Error: m.c(86): undefined symbol 'countTime1' Error: m.c(92): undefined symbol 'countTime2', весь код счетчиков у меня стоит сразу за прерыванием второго таймера
Конечно надо.
Docendo discimus
stm
Открыл глаза
Сообщения: 46
Зарегистрирован: Пн янв 28, 2013 18:25:46
Откуда: Мукачево

Re: Записывание даных скорости ветра на ATmega16

Сообщение stm »

С этим разобрался теперь надо придумать как измеряные даные записать на SD карту в файл txt или csv пробовал впихнуть библиотеку FatFs но невлезла, попробую поставить Petit FAT
Вопрос как сделать запись чтоб даные записывались попорядку согласно смене переменной "d" у меня она добавляется кадждые 24 часа
Например: d1-12
d2-7
...... и т.д
stm
Открыл глаза
Сообщения: 46
Зарегистрирован: Пн янв 28, 2013 18:25:46
Откуда: Мукачево

Re: Записывание даных скорости ветра на ATmega16

Сообщение stm »

Пробую Petit fat не компилируется выбивает ошибку Error: diskio.c(47): declaration 'enum DRESULT' is incompatible with the previous one: 'flash enum DRESULT' from file: 'diskio.h', line: 33

и выделяет DRESULT disk_writep {

кто работал с pff мож подскажете что делать?
stm
Открыл глаза
Сообщения: 46
Зарегистрирован: Пн янв 28, 2013 18:25:46
Откуда: Мукачево

Re: Записывание даных скорости ветра на ATmega16

Сообщение stm »

Никто незнает с чем связана ошибка?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Записывание даных скорости ветра на ATmega16

Сообщение ARV »

вам же нормально компилятор сообщает: определение enum DRESULT в файле diskio.c не совпадает с ранее сделанным определением flash enum DRESULT в файле diskio.h

задвоение определений у вас - сами исходники правили или откуда они взялись?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Ответить

Вернуться в «AVR»