Jump to content

    

Вопрос по таймерам.

Здравствуйте все. 

Хотел сделать генератор на вых. компараторе. Я так понимаю, что счетчик сравнивается с регистром сравнения,после чего происходит событие и перезагрузка счетчика. Но почему счетчик не считает если регистр перезагрузки равен 0. У меня режим счета вверх.  Я так думал, что счетчик считает от 0 до значения в регистре сравнения, потом загружается 0 и т.д. Как же это работает?

Share this post


Link to post
Share on other sites
1 час назад, khlenar сказал:

Я так думал, что счетчик считает от 0 до значения в регистре сравнения,

Трудно сказать, не зная о каком именно контроллере вы говорите.

Share this post


Link to post
Share on other sites

Да. 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.

все эти процедуры сделаны.

Share this post


Link to post
Share on other sites
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.
 

оно?

Share this post


Link to post
Share on other sites

Сейчас посмотрю...

Share this post


Link to post
Share on other sites

Да, оно. Вот ведь собака)). В интернете я , что то про МОЕ не встречал. Вот спасибо! Я уж было хотел в прерывании ножкой дергать))

Share this post


Link to post
Share on other sites

Для меня еще одна загадка осталась.) Почему частота не реагирует на регистр сравнения?  Реагирует только на регистр перезагрузки. Хотя если включить прерывание по компаратору, то прерывание происходит по событию.

Share this post


Link to post
Share on other sites

Для меня это конечно не критично. Но зачем этот регистр сравнения? или же в каком режиме он работает?

Share this post


Link to post
Share on other sites
13 минут назад, khlenar сказал:

Для меня это конечно не критично. Но зачем этот регистр сравнения? или же в каком режиме он работает?

В режиме сравнения. Можно прерывание от него получить, с помощью OCxM  можно различную реакцию настроить.

23 минуты назад, khlenar сказал:

Для меня еще одна загадка осталась.) Почему частота не реагирует на регистр сравнения?  Реагирует только на регистр перезагрузки. Хотя если включить прерывание по компаратору, то прерывание происходит по событию.

Значит у вас настроено так,  что TIMx_ARR задаёт период,  а TIMx_CCRx  - длительность импульса.

Там же на картинках в Reference Manual подробно нарисовано какой бит за что отвечает и множество диаграмм работы есть.

Share this post


Link to post
Share on other sites

У меня в любом случае на выходе меандр. Т.е. ССR1 никак не участвует. В прерывание уходит по компаратору, но я не проверял с какой частотой заходит в прерывание.

Share this post


Link to post
Share on other sites

OC_MODE какой? Если PWM1 или PWM2, то будет ШИМ на частоте переполнения; если TOGGLE, то будет меандр на половинной частоте переполнения.

У вас OCxM = 011 - TOGGLE;

Попробуйте OCxM = 110 или 111 - будет ШИМ.

Share this post


Link to post
Share on other sites

Ну да. У меня TOGGLE 011. Т.е., чтобы у меня работало по регистру сравнения, то нужно режим ШИМ? Ладно, спасибо. Потом попробую.

Share this post


Link to post
Share on other sites
5 часов назад, khlenar сказал:

Т.е., чтобы у меня работало по регистру сравнения, то нужно режим ШИМ?

Ага. Причем OC_PWM1 и OC_PWM2 отличаются полярностью.

Share this post


Link to post
Share on other sites

Спасибо всем!:drinks:

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this