Проект - тахометр +кнопка START-STOP engine

Обсуждаем контроллеры компании Atmel.
Ответить
Вымогатель припоя
Аватара пользователя
Сообщения: 508
Зарегистрирован: Пт фев 22, 2013 18:00:43
Откуда: Беларусь, г. Гомель

Сообщение rxstart1 »

У меня снова ничего не работает ни кнопка ни тахометр, более того тахометр стал неправильно считать, обратите внимание, до 1500 считает нормально, а большее значении частоты не правильно? Я думаю это связано с делителем, но могу и ошибаться((

У меня конечно не такой мощный проц как у Вас, всего лишь CELERON E3400 2,6GHZ на 2 ядра, но судя по описаниям должен тянуть. А программа какого то нагружает его на 97%. Я думаю это неправильно, где то наверное проскакивает деление на ноль или какой нибудь другой баг((
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 508
Зарегистрирован: Пт фев 22, 2013 18:00:43
Откуда: Беларусь, г. Гомель

Сообщение rxstart1 »

Вообще все перестало работать кнопка не работает тахометр не показывает если более 1500 об/мин((
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

Проверяйте в железе!
Вымогатель припоя
Аватара пользователя
Сообщения: 508
Зарегистрирован: Пт фев 22, 2013 18:00:43
Откуда: Беларусь, г. Гомель

Сообщение rxstart1 »

Ок. попробую, только у меня нет генератора частоты. Детали заказал, плату сделал буду ждать.
Я кстати заметил, что где-то спустя 10-15 сек стартер все таки включается, но потом полная каша((
Реклама
Эиком - электронные компоненты и радиодетали
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

У меня тоже стартер не ровно через 5 сек. включается. проходит секунд 7-8. Но это опять-таки проц.. А генератор частоты.. Спаяйте элементарный мультивибратор на двух транзисторах и с подстроечным резистором.
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 508
Зарегистрирован: Пт фев 22, 2013 18:00:43
Откуда: Беларусь, г. Гомель

Сообщение rxstart1 »

Что то типа этого?
Вот только частота неизвестна((

Да и на счет частоты при старой версии предделитель 1 загоралась вся шкала, в новой версии предделитель 256 как Вы зделали есть глюк горят только 2 столбца независимо от входной частоты?
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

есть проще. на 2-х транзисторах. соберите в железе - потом будем про глюки разговаривать
Вымогатель припоя
Аватара пользователя
Сообщения: 508
Зарегистрирован: Пт фев 22, 2013 18:00:43
Откуда: Беларусь, г. Гомель

Сообщение rxstart1 »

Ок. как соберу я Вам в ЛС напишу.
Вымогатель припоя
Аватара пользователя
Сообщения: 508
Зарегистрирован: Пт фев 22, 2013 18:00:43
Откуда: Беларусь, г. Гомель

Сообщение rxstart1 »

Еще один вопрос. Меня тут мысль посетила возможно бредовая :)))

Что, если сделать обработку нажатия кнопки по прерыванию. т. е. пересадить ее на другой пин и скажем вызывать обработчик прерывания по спаду уровня. Таким образом программа будет делится на 2 независимых куска тахометр который будет работать независимо без лишних условий и кнопка запуска, которая будет отрабатывать когда происходит событие? Но возможно я и не прав ведь обработчик должен иметь короткий код?
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

По прерыванию вы можете только отслеживать факт нажатия. Если вы начнете обрабатывать в прерывании события по нажатию - у Вас встанет индикация. т.е. Это не два параллельных процесса. Это один процесс останавливает другой и делает что-то наиболее важное.
Вымогатель припоя
Аватара пользователя
Сообщения: 508
Зарегистрирован: Пт фев 22, 2013 18:00:43
Откуда: Беларусь, г. Гомель

Сообщение rxstart1 »

А какая индикация, если двигатель работает надо все потушить при нажатии, если не работает завести, а потом включить индикацию???

Меня больше интересует аспект сохранения стека при выходе из прерывания (т. е. после выполнения программы обработки прерывания, управление должно передаться в точке прерывания, я так полагаю). Я не знаю как С для АВР отрабатывает этот момент. Я изучал С будучи студентом и нас учили, что прерывания не есть гуд. Учился я еще на 286 машинах в досе, и про реентерабильность можно было говорить только на уровне прерывания принтера :))) Поэтому в программах старались использовать косвенную адресацию и институт указателей С++. Но в АВР все совсем по другому. Очень много моментов, в которые надо вникать и изучать с нуля.

Но в этой задаче мне кажется прерывание - это как раз таки понацея и минимизация затрат процессорного времени на обработку событий? И еще вопрос, можно ли организовать еще одно прерывание по захвату, на другой порт. Смысл в этом есть - это готовый антидребезг при нажатии на кнопку.
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

Си сам организует работу со стеком. Для захвата таймера у вас специально предназначенная нога. Перенести ее на другой порт нельзя. Но можно смоделировать захват программно.
akl
Друг Кота
Сообщения: 4468
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

rxstart1 писал(а):...можно ли организовать еще одно прерывание по захвату, на другой порт. Смысл в этом есть - это готовый антидребезг при нажатии на кнопку.
Не понятно как реализовать антидребезг кнопки с помощью захвата, но помимо специальной лапы ICP1 доступ к модулю захвата возможен через аналоговый компаратор.
Вымогатель припоя
Аватара пользователя
Сообщения: 508
Зарегистрирован: Пт фев 22, 2013 18:00:43
Откуда: Беларусь, г. Гомель

Сообщение rxstart1 »

а если так
есть прерывание по спаду-> взвести триггрер+обнулить счетчик -> обработка событий по удержанию
есть прерывание по наростанию -> проверить счетчик(сколько времени удерживалась кнопка) -> если > 20мс ->сбросить триггер+выполнять программу короткого нажатия

как Вам такой алгоритм?
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

А если Вы нажали и держите? Контроллер умрет в ожидании чего-то?
Вымогатель припоя
Аватара пользователя
Сообщения: 508
Зарегистрирован: Пт фев 22, 2013 18:00:43
Откуда: Беларусь, г. Гомель

Сообщение rxstart1 »

А РАЗВЕ ОН НЕ БУДЕТ ВЫПОЛНЯТЬ ПРОГРАММУ КОТОРАЯ НАПИСАНА В ОБРАБОТЧИКЕ?
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

только 1 раз
Вымогатель припоя
Аватара пользователя
Сообщения: 508
Зарегистрирован: Пт фев 22, 2013 18:00:43
Откуда: Беларусь, г. Гомель

Сообщение rxstart1 »

а если внутри обработчика запретить прерывания? я не совсем понимаю 1 раз это как куда зайдет программа при сл. такте?
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

у вас код в прерывании выполнится 1 раз и далее будет продолжаться основной цикл пока Вы вновь не отпустите и не нажмете кнопку. Причем внутри обработчика опять-таки нужно сделать антидребезг, иначе он может выполниться несколько раз подряд.
Давайте, Вы железо соберете, хотя бы на уровне кнопок и светодиодов. А потом вместе продумаем программу.
Вымогатель припоя
Аватара пользователя
Сообщения: 508
Зарегистрирован: Пт фев 22, 2013 18:00:43
Откуда: Беларусь, г. Гомель

Сообщение rxstart1 »

хорошо))
Ответить

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