как запускать Timer1 по int0 и совпадению
- Войдите на сайт для отправки комментариев
Вс, 01/12/2019 - 10:40
Здравствуйте! Прошу программистов помочь с кодом. Собираю регулятор мощности с плавным пуском.
Требуется от внешнего прерывания int0 запускать Таймер1 на заданное время, но IDE 1.8.10 выдаёт в строке ISR (INT0_vect) ошибку "expected unqualified-id before string constant". Может кто подскажет как написать код и в чём причина ошибки? Таймер2 работал.
Moderator : пожалуйста, вставьте код правильно (возможно, новым сообщением в тему), как описано в http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
Еще одного от гугла отключили.
http://www.cyberforum.ru/arduino/thread2386030.html
Еще одного от гугла отключили.
http://www.cyberforum.ru/arduino/thread2386030.html
В этой ссылке нет ни слова о таймерах и прерываниях.....
А поиск не помог найти решение.
Сейчас код выглядит так (часть setup):
Благодарю. Попробую
Можете ещё уточнить по Таймер1? ISR по прерыванию int0 будет запускать Таймер1 по имеющемуся коду и настройке таймера? И Флаг FlagSIM для подачи импульса на симистор по прерыванию будет срабатывать в таком случае? Требуется, чтобы флаг сработал по срабатыванию таймера после отсчёта заданного интервала.
С 34 по 41 строки вынесите и поставьте перед сетапом
Можете ещё уточнить по Таймер1? ISR по прерыванию int0 будет запускать Таймер1 по имеющемуся коду и настройке таймера?
ISR - это функция обработчик. Зачем Вы засунули её в setup известно одному Вам. Ваш код не компилируется, а потому Ваш вопрос будет ли он что-то запускать выглядит странно. Не будет уже потому, что не скомпилируется и не зальётся.
С 34 по 41 строки вынесите и поставьте перед сетапом
Но строки 23-26 аналогичны, там также ISR и ошибок не давал компилятор
Можете ещё уточнить по Таймер1? ISR по прерыванию int0 будет запускать Таймер1 по имеющемуся коду и настройке таймера?
ISR - это функция обработчик. Зачем Вы засунули её в setup известно одному Вам. Ваш код не компилируется, а потому Ваш вопрос будет ли он что-то запускать выглядит странно. Не будет уже потому, что не скомпилируется и не зальётся.
Евгений, благодарю!
Убрал ISR из setup - компилятор скушал без ошибки.
Осталось разобраться формированием импульса по совпадению с заданным интервалом.
Вот так сейчас выглядит код
Вы сами себя в комментариях обманываете
COMPA- это прерывание по совпадению.
Код уже переделал. Прерывание int0 и таймер1и2 работают,однако заметил странность в работе таймера1. Сейчас импульсы на вход подаю от внешнего генератора (имитация сигнала датчика нуля). Если включать импульс управления симистором по срабатыванию внешнего прерывания функция attachInterrupt, то фаза этого импулса точно совпадает с импульсом генератора. А теперь о таймере1. Когда же я запускаю тамер1 по совпадению на заданный интервал, то фаза импульса управления симистором скачет в пределах 20мкс! Это странно особенно если учесть то, что loop почти не загружен. Код размещу позже, сейчас пишус телефона.
Всё разобрался сам. Нашёл косяк. Не устанавливал регистр GTCCR поэтому фаза импульса плавала.
Всё разобрался сам. Нашёл косяк. Не устанавливал регистр GTCCR поэтому фаза импульса плавала.
обычно рабочий код скетча выкладывают )))
обычно рабочий код скетча выкладывают )))
По моим наблюдениям, обычно выкладывают как раз нерабочие в #0 ))