Обсуждаем контроллеры компании Atmel.
Вс сен 12, 2021 19:06:20
Сделал ШИМ на Т1 в режиме 8. Если останавливаю таймер разрядами CS12, CS11 и CS10 в момент когда на ноге OC1A высокий уровень, то на низкий уровень ногу переключить уже не получается. Почему? И как это сделать?
Вс сен 12, 2021 19:24:29
Либо битами FOC, либо отключить ногу от компаратора.
Пн сен 13, 2021 10:32:23
Потому что вы остановили таймер, но не отключили его. Ноги ШИМ все еще управляются значением счетчика. Если хотите отсоединить их, настройте COM1A1 или подобные
Пн сен 13, 2021 13:23:29
Получается отключить таймер от ноги, но тогда при повторном подключении ШИМ начинает работать с того места, на котором была отключена нога от таймера. Т.е. отключили на высоком уровне на ноге, включается с высокого уровня на ноге и наоборот. Пытаюсь сбросить счетчик регистром TCNT1, но не помогает.
Пн сен 13, 2021 14:02:18
перед включением таймера нужно еще сбросить предделитель этого таймера. тогда таймер начнет работу сначала, а не с места остановки.
Пн сен 13, 2021 14:12:28
перед включением таймера нужно еще сбросить предделитель этого таймера
Предделитель ОДИН на ВСЕ таймеры!
Поэтому если у одного таймера предделитель на 8, а у другого на 64, то сбрасывая предделитель по первому таймеру, до второго может не дойти ни одного тика!
Вт сен 14, 2021 02:48:35
Когда настроен шим, и пин мк настроен как выход таймера, его состояние зависит от состояния таймера. Чтобы управлять пином мк, нужно отвязать пин мк от таймера.
Вт сен 14, 2021 08:29:38
parovoZZ, так ты даже не знаешь, сколько предделителей в АТмега8.
общий предделитель только у таймера0 и таймера1. у таймера2 отдельный предделитель.
Вт сен 14, 2021 09:59:06
Фраза
предделитель этого таймера
говорит об однозначности суждения.
Вт сен 14, 2021 13:16:58
parovoZZ писал(а):Предделитель ОДИН на ВСЕ таймеры!
ну, твое-то высказывание вообще безграмотное.
а у таймера1 вполне конкретный предделитель, и я говорил именно о нем.
Вт сен 14, 2021 13:57:52
Предделитель таймеров T0 и T1 сбрасывается битом PSR10, предделитель таймера T2 сбрасывается битом PSR2. Регистр - SFIOR.
Вт сен 14, 2021 15:30:14
Вот и отлично, что почитал даташит.
Пт сен 17, 2021 21:17:14
Starichok51 писал(а):перед включением таймера нужно еще сбросить предделитель этого таймера. тогда таймер начнет работу сначала, а не с места остановки.
В режиме "8" Т1 считает сначала в прямом, а потом в обратном направлении. А можно как-то после останова счетчика и записи в него (TCNT1) нового значения задать счетчику еще направление счета?
Пт сен 17, 2021 22:53:21
не знаю, не пробовал.
Сб сен 18, 2021 17:44:58
задать счетчику еще направление счета?
читай даташит.
Вс сен 19, 2021 20:56:05
У меня первый импульс получается в 2 раза короче, если ШИМ установить как неинвертированную и сбрасывать счетчик в 0. Если ШИМ инвертировать и установить начальную позицию TCNT1 в непосредственной близости от OCR1A (режим таймера "8"), то в зависимости от направления счета, при котором таймер был остановлен, мы получим различный результат при повторном запуске таймера. Либо это будет высокий уровень, либо это будет пауза перед высоким уровнем. Пока не придумал как решить эту особенность, чтобы ШИМ после останова таймера всегда начиналась с полноценного импульса.
Последний раз редактировалось
Kalisnik Пн сен 20, 2021 09:12:25, всего редактировалось 3 раз(а).
Вс сен 19, 2021 21:48:24
а ты сделал сброс предделителя перед повторным запуском?
Пн сен 20, 2021 12:39:52
Да, при отключении таймера делаю так:
- Код:
SFIOR |= (1<<PSR10);
Добавлено after 3 hours 34 minutes 44 seconds:Re: Atmega8, ШИМ - низкий уровень на выводе после остановки ШИМ.Хотя странно, комментирую эту строчку и ни чего не меняется. Может я как-то неправильно предделитель сбрасываю?
Пн сен 20, 2021 18:59:48
предделитель нужно сбрасывать перед запуском таймера, а не при его остановке.
иначе к повторному запуску предделитель окажется в неизвестном состоянии.
Вт сен 21, 2021 13:15:52
Сделал сброс предделителя перед запуском Т1, ни чего не поменялось. А как сбросить предделитель Т1 на ассемблере? Может дело в Си...
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.