Перейти к содержанию
    

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, khlenar сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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.
 

оно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

У вас OCxM = 011 - TOGGLE;

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 часов назад, khlenar сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...