khlenar 5 12 июля, 2019 Опубликовано 12 июля, 2019 · Жалоба Здравствуйте все. Хотел сделать генератор на вых. компараторе. Я так понимаю, что счетчик сравнивается с регистром сравнения,после чего происходит событие и перезагрузка счетчика. Но почему счетчик не считает если регистр перезагрузки равен 0. У меня режим счета вверх. Я так думал, что счетчик считает от 0 до значения в регистре сравнения, потом загружается 0 и т.д. Как же это работает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 12 июля, 2019 Опубликовано 12 июля, 2019 · Жалоба 1 час назад, khlenar сказал: Я так думал, что счетчик считает от 0 до значения в регистре сравнения, Трудно сказать, не зная о каком именно контроллере вы говорите. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khlenar 5 12 июля, 2019 Опубликовано 12 июля, 2019 · Жалоба Да. STM32F100C6T6 Ну ладно. Я регистр перезагрузки сделал больше чем сравнения. Ладно, считает. Выход режим переключения. Выход включил. Тактирование включил. Режим компаратора без прерывания. Но на выходе ничего нет. Таймер1. 1. Select the counter clock (internal, external, prescaler). 2. Write the desired data in the TIMx_ARR and TIMx_CCRx registers. 3. Set the CCxIE bit if an interrupt request is to be generated. 4. Select the output mode. For example: – Write OCxM = 011 to toggle OCx output pin when CNT matches CCRx – Write OCxPE = 0 to disable preload register – Write CCxP = 0 to select active high polarity – Write CCxE = 1 to enable the output 5. Enable the counter by setting the CEN bit in the TIMx_CR1 register. все эти процедуры сделаны. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 12 июля, 2019 Опубликовано 12 июля, 2019 · Жалоба 34 minutes ago, khlenar said: Таймер1 На грабли Advanced-control timer должен наступить каждый программист стм-ок, как мне кажется :-) Bit 15 MOE: Main output enable This bit is cleared asynchronously by hardware as soon as the break input is active. It is set by software or automatically depending on the AOE bit. It is acting only on the channels which are configured in output. оно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khlenar 5 12 июля, 2019 Опубликовано 12 июля, 2019 · Жалоба Сейчас посмотрю... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khlenar 5 12 июля, 2019 Опубликовано 12 июля, 2019 · Жалоба Да, оно. Вот ведь собака)). В интернете я , что то про МОЕ не встречал. Вот спасибо! Я уж было хотел в прерывании ножкой дергать)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khlenar 5 12 июля, 2019 Опубликовано 12 июля, 2019 · Жалоба Для меня еще одна загадка осталась.) Почему частота не реагирует на регистр сравнения? Реагирует только на регистр перезагрузки. Хотя если включить прерывание по компаратору, то прерывание происходит по событию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khlenar 5 12 июля, 2019 Опубликовано 12 июля, 2019 · Жалоба Для меня это конечно не критично. Но зачем этот регистр сравнения? или же в каком режиме он работает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 80 12 июля, 2019 Опубликовано 12 июля, 2019 · Жалоба 13 минут назад, khlenar сказал: Для меня это конечно не критично. Но зачем этот регистр сравнения? или же в каком режиме он работает? В режиме сравнения. Можно прерывание от него получить, с помощью OCxM можно различную реакцию настроить. 23 минуты назад, khlenar сказал: Для меня еще одна загадка осталась.) Почему частота не реагирует на регистр сравнения? Реагирует только на регистр перезагрузки. Хотя если включить прерывание по компаратору, то прерывание происходит по событию. Значит у вас настроено так, что TIMx_ARR задаёт период, а TIMx_CCRx - длительность импульса. Там же на картинках в Reference Manual подробно нарисовано какой бит за что отвечает и множество диаграмм работы есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khlenar 5 12 июля, 2019 Опубликовано 12 июля, 2019 · Жалоба У меня в любом случае на выходе меандр. Т.е. ССR1 никак не участвует. В прерывание уходит по компаратору, но я не проверял с какой частотой заходит в прерывание. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 12 июля, 2019 Опубликовано 12 июля, 2019 · Жалоба OC_MODE какой? Если PWM1 или PWM2, то будет ШИМ на частоте переполнения; если TOGGLE, то будет меандр на половинной частоте переполнения. У вас OCxM = 011 - TOGGLE; Попробуйте OCxM = 110 или 111 - будет ШИМ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khlenar 5 12 июля, 2019 Опубликовано 12 июля, 2019 · Жалоба Ну да. У меня TOGGLE 011. Т.е., чтобы у меня работало по регистру сравнения, то нужно режим ШИМ? Ладно, спасибо. Потом попробую. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 12 июля, 2019 Опубликовано 12 июля, 2019 · Жалоба 5 часов назад, khlenar сказал: Т.е., чтобы у меня работало по регистру сравнения, то нужно режим ШИМ? Ага. Причем OC_PWM1 и OC_PWM2 отличаются полярностью. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khlenar 5 16 июля, 2019 Опубликовано 16 июля, 2019 · Жалоба Спасибо всем! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться