Вроде бы похоже на истину, если прерывания включались бы одномоментно, но прерывание по каналу В стартует раньше А и должно хоть что-то успеть хрюкнуть на соответствующей ноге (т.к. по В разрешаем вывод). По каналу А то аналогично.Команды LDI в прерывании разрешая один канал запрещают другой
Некорректная работа прерываний T1 с двух каналов (CTC)
Re: Некорректная работа прерываний T1 с двух каналов (CTC)
akl,
Re: Некорректная работа прерываний T1 с двух каналов (CTC)
Если вернуться обратно к исходному коду, только в прерывании B разрешать канал A и в прерывании A разрешать канал B, то работают оба канала. Но! Картинка крепко меняется. Появляются очень узкие импульсы при сравнении в разрешенном канале перед его отключением. И сами импульсы становятся уже и на приблизительный меандр не похожи.
Re: Некорректная работа прерываний T1 с двух каналов (CTC)
Для шагового двигателя лучше взять что-то другое, что формирует мёртвое время.
Re: Некорректная работа прерываний T1 с двух каналов (CTC)
Вот за такие фокусы я и не люблю таймеры древних AVR.
Re: Некорректная работа прерываний T1 с двух каналов (CTC)
[uquote="kas1830",url="/forum/viewtopic.php?p=4088260#p4088260"]akl, прикладываю осциллограммы для иллюстрации:
...Соответственно, там, где каждый канал активен в своем прерывании - тишь да гладь[/uquote]Обратите внимание на длительность импульсов на первой фотке, которая примерно в 2 раза больше. Фотка работы переключаемых в прерываниях каналов. Видны узкие импульсы.

...Соответственно, там, где каждый канал активен в своем прерывании - тишь да гладь[/uquote]Обратите внимание на длительность импульсов на первой фотке, которая примерно в 2 раза больше. Фотка работы переключаемых в прерываниях каналов. Видны узкие импульсы.
Re: Некорректная работа прерываний T1 с двух каналов (CTC)
Ребят, всем спасибо за наводку!
Оказалось, достаточно было в конце модуля инициализации перед разрешением глобальных прерываний сразу установить PORTB в "1"
Интересная особенность, однако
Оказалось, достаточно было в конце модуля инициализации перед разрешением глобальных прерываний сразу установить PORTB в "1"
Интересная особенность, однако
Re: Некорректная работа прерываний T1 с двух каналов (CTC)
Установил PORTB в 1. Те же фаберже только инверсные.
Re: Некорректная работа прерываний T1 с двух каналов (CTC)
Все очень и очень странно.
Почему с "0" не заводится? Или есть какой-то секрет.
А главное, какую роль тут играет PORTB, если мы уже ноги переключили на альтернативную функцию OC1A/OC1B
Почему с "0" не заводится? Или есть какой-то секрет.
А главное, какую роль тут играет PORTB, если мы уже ноги переключили на альтернативную функцию OC1A/OC1B
Re: Некорректная работа прерываний T1 с двух каналов (CTC)
akl,
вот это не очень понял:
Не нашел конкретно эту комбинацию в таблице

Разве можно выставлять 0 и 1 отдельно для COM1A0 и COM1B0?
Они же, вроде, парой идут в одном столбике.
вот это не очень понял:
Код: Выделить всё
LDI R16,1<<COM1A1|1<<COM1B1|1<<COM1A0|0<<COM1B0|1<<WGM11;|1<<WGM10
OUT TCCR1A,R16 ;противофазные импульсы A и BРазве можно выставлять 0 и 1 отдельно для COM1A0 и COM1B0?
Они же, вроде, парой идут в одном столбике.
- Starichok51
- Модератор
- Сообщения: 19043
- Зарегистрирован: Сб авг 14, 2010 15:05:51
- Откуда: г. Озерск, Челябинская обл.
Re: Некорректная работа прерываний T1 с двух каналов (CTC)
а что, разве трудно понять, что одинаковый функционал можно объединить в один столбик?
или тебе нужно, чтобы было 2 одинаковых таблицы - но отдельно для канала А и отдельно для канала В?
или тебе нужно, чтобы было 2 одинаковых таблицы - но отдельно для канала А и отдельно для канала В?
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Re: Некорректная работа прерываний T1 с двух каналов (CTC)
Теперь понял.
Это режимы Set и Clear для OC1A и OC1B соответственно.
Просто зациклился ранее, что только Toggle используется для генерации сигнала.
Это режимы Set и Clear для OC1A и OC1B соответственно.
Просто зациклился ранее, что только Toggle используется для генерации сигнала.