Некорректная работа прерываний T1 с двух каналов (CTC)

Обсуждаем контроллеры компании Atmel.
kas1830
Открыл глаза
Сообщения: 46
Зарегистрирован: Ср янв 04, 2017 14:32:28

Re: Некорректная работа прерываний T1 с двух каналов (CTC)

Сообщение kas1830 »

akl,
Команды LDI в прерывании разрешая один канал запрещают другой
Вроде бы похоже на истину, если прерывания включались бы одномоментно, но прерывание по каналу В стартует раньше А и должно хоть что-то успеть хрюкнуть на соответствующей ноге (т.к. по В разрешаем вывод). По каналу А то аналогично. :shock:
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Некорректная работа прерываний T1 с двух каналов (CTC)

Сообщение akl »

Если вернуться обратно к исходному коду, только в прерывании B разрешать канал A и в прерывании A разрешать канал B, то работают оба канала. Но! Картинка крепко меняется. Появляются очень узкие импульсы при сравнении в разрешенном канале перед его отключением. И сами импульсы становятся уже и на приблизительный меандр не похожи.
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

Re: Некорректная работа прерываний T1 с двух каналов (CTC)

Сообщение parovoZZ »

Для шагового двигателя лучше взять что-то другое, что формирует мёртвое время.
kas1830
Открыл глаза
Сообщения: 46
Зарегистрирован: Ср янв 04, 2017 14:32:28

Re: Некорректная работа прерываний T1 с двух каналов (CTC)

Сообщение kas1830 »

akl, прикладываю осциллограммы для иллюстрации:

Изображение Изображение Изображение

Соответственно, там, где каждый канал активен в своем прерывании - тишь да гладь
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

Re: Некорректная работа прерываний T1 с двух каналов (CTC)

Сообщение parovoZZ »

Вот за такие фокусы я и не люблю таймеры древних AVR.
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Некорректная работа прерываний T1 с двух каналов (CTC)

Сообщение akl »

[uquote="kas1830",url="/forum/viewtopic.php?p=4088260#p4088260"]akl, прикладываю осциллограммы для иллюстрации:
...Соответственно, там, где каждый канал активен в своем прерывании - тишь да гладь[/uquote]Обратите внимание на длительность импульсов на первой фотке, которая примерно в 2 раза больше. Фотка работы переключаемых в прерываниях каналов. Видны узкие импульсы.
Изображение
kas1830
Открыл глаза
Сообщения: 46
Зарегистрирован: Ср янв 04, 2017 14:32:28

Re: Некорректная работа прерываний T1 с двух каналов (CTC)

Сообщение kas1830 »

Ребят, всем спасибо за наводку!

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

Re: Некорректная работа прерываний T1 с двух каналов (CTC)

Сообщение akl »

Установил PORTB в 1. Те же фаберже только инверсные.
kas1830
Открыл глаза
Сообщения: 46
Зарегистрирован: Ср янв 04, 2017 14:32:28

Re: Некорректная работа прерываний T1 с двух каналов (CTC)

Сообщение kas1830 »

Все очень и очень странно.
Почему с "0" не заводится? Или есть какой-то секрет.

А главное, какую роль тут играет PORTB, если мы уже ноги переключили на альтернативную функцию OC1A/OC1B
kas1830
Открыл глаза
Сообщения: 46
Зарегистрирован: Ср янв 04, 2017 14:32:28

Re: Некорректная работа прерываний T1 с двух каналов (CTC)

Сообщение kas1830 »

akl,
вот это не очень понял:

Код: Выделить всё

LDI   R16,1<<COM1A1|1<<COM1B1|1<<COM1A0|0<<COM1B0|1<<WGM11;|1<<WGM10
OUT   TCCR1A,R16   ;противофазные импульсы A и B
Не нашел конкретно эту комбинацию в таблице
Изображение
Разве можно выставлять 0 и 1 отдельно для COM1A0 и COM1B0? :shock:
Они же, вроде, парой идут в одном столбике.
Аватара пользователя
Starichok51
Модератор
Сообщения: 19043
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Некорректная работа прерываний T1 с двух каналов (CTC)

Сообщение Starichok51 »

а что, разве трудно понять, что одинаковый функционал можно объединить в один столбик?
или тебе нужно, чтобы было 2 одинаковых таблицы - но отдельно для канала А и отдельно для канала В?
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
kas1830
Открыл глаза
Сообщения: 46
Зарегистрирован: Ср янв 04, 2017 14:32:28

Re: Некорректная работа прерываний T1 с двух каналов (CTC)

Сообщение kas1830 »

Теперь понял.

Это режимы Set и Clear для OC1A и OC1B соответственно.
Просто зациклился ранее, что только Toggle используется для генерации сигнала.
Ответить

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