Обсуждаем контроллеры компании Atmel.
Вт сен 07, 2021 23:37:12
akl,
Команды LDI в прерывании разрешая один канал запрещают другой
Вроде бы похоже на истину, если прерывания включались бы одномоментно, но прерывание по каналу В стартует раньше А и должно хоть что-то успеть хрюкнуть на соответствующей ноге (т.к. по В разрешаем вывод). По каналу А то аналогично.
Ср сен 08, 2021 05:11:17
Если вернуться обратно к исходному коду, только в прерывании B разрешать канал A и в прерывании A разрешать канал B, то работают оба канала. Но! Картинка крепко меняется. Появляются очень узкие импульсы при сравнении в разрешенном канале перед его отключением. И сами импульсы становятся уже и на приблизительный меандр не похожи.
Ср сен 08, 2021 09:37:30
Для шагового двигателя лучше взять что-то другое, что формирует мёртвое время.
Ср сен 08, 2021 15:10:36
akl, прикладываю осциллограммы для иллюстрации:
Соответственно, там, где каждый канал активен в своем прерывании - тишь да гладь
Ср сен 08, 2021 20:19:10
Вот за такие фокусы я и не люблю таймеры древних AVR.
Чт сен 09, 2021 05:07:39
akl, прикладываю осциллограммы для иллюстрации:
...Соответственно, там, где каждый канал активен в своем прерывании - тишь да гладь
Обратите внимание на длительность импульсов на первой фотке, которая примерно в 2 раза больше. Фотка работы переключаемых в прерываниях каналов. Видны узкие импульсы.
Пт сен 10, 2021 00:17:36
Ребят, всем спасибо за наводку!
Оказалось, достаточно было в конце модуля инициализации перед разрешением глобальных прерываний сразу установить PORTB в "1"
Интересная особенность, однако
Пт сен 10, 2021 09:17:29
Установил PORTB в 1. Те же фаберже только инверсные.
Пт сен 10, 2021 11:26:13
Все очень и очень странно.
Почему с "0" не заводится? Или есть какой-то секрет.
А главное, какую роль тут играет PORTB, если мы уже ноги переключили на альтернативную функцию OC1A/OC1B
Пн сен 27, 2021 12:30:13
akl,
вот это не очень понял:
- Код:
LDI R16,1<<COM1A1|1<<COM1B1|1<<COM1A0|0<<COM1B0|1<<WGM11;|1<<WGM10
OUT TCCR1A,R16 ;противофазные импульсы A и B
Не нашел конкретно эту комбинацию в таблице
Разве можно выставлять 0 и 1 отдельно для COM1A0 и COM1B0?
Они же, вроде, парой идут в одном столбике.
Пн сен 27, 2021 13:11:47
а что, разве трудно понять, что одинаковый функционал можно объединить в один столбик?
или тебе нужно, чтобы было 2 одинаковых таблицы - но отдельно для канала А и отдельно для канала В?
Пн сен 27, 2021 14:13:01
Теперь понял.
Это режимы Set и Clear для OC1A и OC1B соответственно.
Просто зациклился ранее, что только Toggle используется для генерации сигнала.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.