Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 04.08.2016, 21:32  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: Спидометр атмега 8

Сообщение от МВА Посмотреть сообщение
miwutka, я что-то никак не пойму, а где у тебя синхронизируется таймер с импульсами?
Ну у меня синхронизации нету вроде. Там просто по входному фронту считает таймер. Первый вход в прерывание - запоминает значение регистра захвата. Второй вход - вичитает разницу. И по разнице показывает время между импульсами. Я уже код изменил. Завтра выложу. Но он не сильно отличается от того, который я использовал для спидометра. Но это делаю тахометр.
Если есть вот тот захват чтобы каждый 4-ый импульс то скажите где там у атмеги8 это есть?
Реклама:
miwutka вне форума  
Непрочитано 04.08.2016, 21:35  
С.М.С
Гражданин KAZUS.RU
 
Аватар для С.М.С
 
Регистрация: 03.07.2010
Сообщений: 843
Сказал спасибо: 156
Сказали Спасибо 378 раз(а) в 190 сообщении(ях)
С.М.С на пути к лучшему
По умолчанию Re: Спидометр атмега 8

Красиво! А на практике по большей части смотрю лишь краем глаза на белые светодиоды, которые специально поставил яркие, они показывают момент переключения следующей передачи, да и то по началу, как привыкаешь ориентируешься уже по динамике авто. Из хороших опций это автоматическая регулировка яркости, по фоторезистору.
С.М.С вне форума  
Непрочитано 04.08.2016, 21:38  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,904
Сказал спасибо: 2,542
Сказали Спасибо 11,816 раз(а) в 5,922 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Спидометр атмега 8

Сообщение от miwutka Посмотреть сообщение
а на больших больше
Надо смотреть что и как сделано. Так трудно сказать что-то определенное. Нужны цивры.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 04.08.2016, 21:43  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,904
Сказал спасибо: 2,542
Сказали Спасибо 11,816 раз(а) в 5,922 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Спидометр атмега 8

Сообщение от С.М.С Посмотреть сообщение
ориентируешься уже по динамике авто
И не только. Еще и динамика потока учитывается. При вялом движении переключаюсь вверх раньше, на меньших оборотах. Зато при динамичном - когда перестает вдавливать в спинку (ускорение упало). Тут светлодиоды не помощники. Так, баловство одно...
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 05.08.2016, 09:51  
МВА
Гражданин KAZUS.RU
 
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 842
Сказал спасибо: 74
Сказали Спасибо 199 раз(а) в 174 сообщении(ях)
МВА на пути к лучшему
По умолчанию Re: Спидометр атмега 8

Сообщение от miwutka Посмотреть сообщение
Ну у меня синхронизации нету вроде. Там просто по входному фронту считает таймер. Первый вход в прерывание - запоминает значение регистра захвата. Второй вход - вичитает разницу. И по разнице показывает время между импульсами. Я уже код изменил. Завтра выложу. Но он не сильно отличается от того, который я использовал для спидометра. Но это делаю тахометр.
Если есть вот тот захват чтобы каждый 4-ый импульс то скажите где там у атмеги8 это есть?
Всем привет. Не нравится мне этот алгоритм. Очень большие вычисления делаются в прерывании. Я бы попробовал другие.
1). Прерывание по захвату. Это значит прошел импульс, забираешь содержимое счетчика, обнуляешь его и подсчет делаешь в главной программе. При следующем прерывании по захвату у тебя буде в счетчике значение соответствующее интервалу между импульсами. Однако есть возможность того, что программа не успеет посчитать, если частота входных импульсов будет высокой и предделитель таймера маленький или 1. Тогда следующий алгоритм.
2). В прерывании по захвату инвертируем какую-то переменную bool и по ней ореентируемся четное или не четное прерывание.
Если bool = 0, то инвертируем ее, забираем переменную, обнуляем счетчик и выходим.
Если bool =1, инвертируем , обнуляем и выходим.
Ну, а если и этого не будет хватать, то вместо bool используем uint8_t. Заносим туда количество пропускаемых импульсов и при входе в прерывание выполняем конструкцию:
___________________________
if(i){
i--;
обнуляем счетчик;
}else{
забираем переменную;
i=колличество пропусков;
}
____________________________
Все. Остальное делаем в главном цикле.
Для спидометра возможно подойдет и первый вариант, так как частота импульсов не большая, а для тахометра может потребоваться второй, а то и со счетчиком.

Последний раз редактировалось МВА; 05.08.2016 в 09:55.
МВА вне форума  
Сказали "Спасибо" МВА
miwutka (05.08.2016)
Непрочитано 05.08.2016, 10:42  
makakus
Почётный гражданин KAZUS.RU
 
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,105
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
makakus на пути к лучшему
По умолчанию Re: Спидометр атмега 8

Сообщение от miwutka Посмотреть сообщение
rpm=((tahom[0]*16)+(tahom[1]*16)+(tahom[2]*16)+(tahom[3]*16)+(tahom[4]*16)+(tahom[5]*16)+(tahom[6]*16)+(tahom[7]*16)+
(tahom[8]*16)+(tahom[9]*16)+(tahom[10]*16)+(tahom[11]*16)+(tahom[12]*16)+(tahom[13]*16)+(tahom[14]*16)+(tahom[15]*16)+
(tahom[16]*16)+(tahom[17]*16)+(tahom[18]*16)+(tahom[19]*16));
};
Тебе что, за буквы платят?!
for (i=0; i‹20; i++) rpm+=tahom[i]; rpm*=16;
или это что было?

Сообщение от miwutka Посмотреть сообщение
ссылка что точнее хочю получить
Уже бы давно мог получить китайча рулит. Там, правда, циферки не бегают как сумасшедшие, а где-то раз в секунду.

Скажите, а это я один такой тупой, что не смотрю на тахометр? Вроде не совсем:
Сообщение от С.М.С Посмотреть сообщение
как привыкаешь ориентируешься уже по динамике авто
Или все меняют машины, как перчатки, что не успевают привыкнуть? Было время - ездил на трёх машинах, в голове образовалось три пресета, сел, поехал - через 10 минут почувствовал динамику, когда переключиться и т.п. Зачем тахометр, как им пользоваться?

Сообщение от МВА Посмотреть сообщение
Не нравится мне этот алгоритм. Очень большие вычисления делаются в прерывании. Я бы попробовал другие.
За вычисления в прерываниях надо сжигать на медленном огне. В прерывании выхватываются значения входов/счётчиков, ставится флаг - и всё. И потом всё успевает.

Здесь алгоритм может быть такой.
В прерывании, значение счётчика таймера прибавляется к аккумулятору (4-байтовая переменная в памяти), наращивается счётчик (1-байтовая переменная), обнуляется счётчик таймера.
В основной программе периодически проверяется счётчик. Если он не нулевой, то аккумулятор делится на счётчик - получаем время между импульсами скорости в попугаях таймера. Счётчик и аккумулятор обнуляем (при запрещённых прерываниях).
Тут есть источник погрешности - обнуление таймера в прерывании. Если вместо этого запоминать предыдущее значение таймера и вычитать его из текущего (с учётом переполнения), погрешность будет меньше.
На высоких оборотах импульсы скорости идут чаще, таймер насчитывает меньше, погрешность больше. Тут можно либо переходить на алгоритм подсчёта кол-ва импульсов скорости за секунду, либо увеличить разрядность таймера, либо увеличить частоту счёта таймера (чтобы он был близок к максимуму на минимальных оборотах)

Последний раз редактировалось makakus; 05.08.2016 в 10:46.
makakus вне форума  
Сказали "Спасибо" makakus
miwutka (05.08.2016)
Непрочитано 05.08.2016, 11:31  
МВА
Гражданин KAZUS.RU
 
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 842
Сказал спасибо: 74
Сказали Спасибо 199 раз(а) в 174 сообщении(ях)
МВА на пути к лучшему
По умолчанию Re: Спидометр атмега 8

Сообщение от makakus Посмотреть сообщение
Если вместо этого запоминать предыдущее значение таймера и вычитать его из текущего (с учётом переполнения), погрешность будет меньше.
А теперь представь, что запомнили предыдущее значение, которое было в конце счета таймера, а следующее прерывание (захват) произошло после переполнения, то получится билиберда какая-то. И не думаю, что обнуление займет больше тактов, чем чтение в буфер. Да, и грузить процессор лишними вычислениями, да еще и двух байтовые переменные, то же не выход. Ему еще надо заниматься индикацией, а может и других функций можно напичкать.
Цитата:
В прерывании, значение счётчика таймера прибавляется к аккумулятору (4-байтовая переменная в памяти)
А разве 16 битный счетчик не двухбайтная переменная?

Последний раз редактировалось МВА; 05.08.2016 в 11:37.
МВА вне форума  
Непрочитано 05.08.2016, 11:34  
Alex9797
Почётный гражданин KAZUS.RU
 
Аватар для Alex9797
 
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,565
Сказал спасибо: 5,041
Сказали Спасибо 10,612 раз(а) в 3,604 сообщении(ях)
Alex9797 на пути к лучшему
По умолчанию Re: Спидометр атмега 8

По поводу разной точности при разных оборотах. Я подобную проблему решаю так. Задаюсь неким минимальным числом, которое гарантированно обеспечивает заданную точность вычислений. Это число должно быть примерно на треть, или на половину меньше максимального значения. Например, для максимального двухбайтового 65535 выберем число 40000. Это количество тиков, заполняющих счетчик таймера. Одновременно надо вести подсчет количества импульсов датчика скорости.

1. Обнуляем таймер и счетчик импульсов.
2. Ожидаем фронт первого импульса датчика скорости.
3. Дождались - запустить таймер на подсчет тиков времени.
4. Ожидаем фронт следующего импульса.
5. Дождались - прибавляем единицу к счетчику импульсов, и считываем счетчик таймера. Сравниваем считанное значение с нашим числом 40000. Если считанное меньше - возврат на п.п.4.
6. Если уже набралось 40000 и более - ожидаем фронт очередного импульса.
7. Дождались - быстренько останавливаем счет таймера, прибавляем единицу к счетчику импульсов, и делим количество тиков таймера на количество импульсов.

Таким способом мы всегда получим точность вычислений в заданных пределах, и минимальную погрешность, так как мы всегда имеем дело с целым количеством импульсов датчика.

Конечно, при ожидании очередного фронта импульса можно его и не дождаться, если двигатель вообще остановился. Поэтому надо контролировать переполнение таймера.
Alex9797 вне форума  
Непрочитано 05.08.2016, 11:37  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,904
Сказал спасибо: 2,542
Сказали Спасибо 11,816 раз(а) в 5,922 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Спидометр атмега 8

Да и вообще, зачем пытаться решать такие сложные задачи на Меге?
Взять обычный православный СТМ32, у которого и таймеров хватает, и таймеры не кастрированные, и за скорострельность можно не переживать... Все решится гораздо проще.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 05.08.2016, 12:36  
makakus
Почётный гражданин KAZUS.RU
 
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,105
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
makakus на пути к лучшему
По умолчанию Re: Спидометр атмега 8

Сообщение от МВА Посмотреть сообщение
а следующее прерывание (захват) произошло после переполнения, то получится билиберда какая-то.
Там я в скобках написал: с учётом переполнения. К белиберде надо прибавить единицу в 17-й бит
Сообщение от МВА Посмотреть сообщение
да еще и двух байтовые переменные
Да можно работать и с одним байтом, чёж. Насчитали 10 импульсов - погрешность 10%. если устраивает.
Сообщение от МВА Посмотреть сообщение
А разве 16 битный счетчик не двухбайтная переменная?
Да. А где я писал "двухбайтная переменная"?


Сообщение от Alex9797 Посмотреть сообщение
. Я подобную проблему решаю так. Задаюсь неким минимальным числом, которое гарантированно обеспечивает заданную точность вычислений.
Конечно же! Эта работа должна выполняться ещё до программирования. Какая погрешность допустима? Какое количество импульсов насчитает таймер на минимальной/максимальной частоте? Всё это оцениваем, отсюда выбираем разрядности-частоты-времена.
Вот только про это в большинстве проектов - ни слова... "Купил ардуину - подключил либу - показывает! Ура-ура!!" А что показывает, он не думал...
makakus вне форума  
Сказали "Спасибо" makakus
Alex9797 (05.08.2016)
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
атмега прошил другой прошивкой bass1981 AVR 17 28.05.2016 19:04
Тахометр и спидометр на Atmega8l GMVM Микроконтроллеры, АЦП, память и т.д 14 05.07.2010 16:29
Атмега 32а, не известно под какую частоту прошита. sae74 Микроконтроллеры, АЦП, память и т.д 1 10.04.2010 19:33
Добрый вечер,люди нужна схема корректора показаний спидометр MAICOM Электроника средств транспорта 5 10.02.2008 19:07
Электронный спидометр на Газель-33021 Gazel37 Информация по радиокомпонентам 1 12.05.2007 00:41


Часовой пояс GMT +4, время: 22:30.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot