А вот это странно. По адресу регистра первым лежит младший байт. Похоже на то, что вы совершенно запутались в коде.
И где пример?
Крутой вывод ![]()
Ну покажите ошибку, раз вы такой знающий.
И да, в DS на МК есть табличка, показывающая как байты из 8 бит памяти переносятся на 32 бита периферии, думаю сами найдёте ![]()
Более вероятно, что в TIM надо подкрутить.
Update: в DS табличка, описывающая различную ширину передаваемых данных для случая, когда увеличиается и адрес периферии и памяти, в моем случае адрес периферии фиксированный.
Так что непонятно как это реализовано в CubeMX ![]()
STM32, таймеры.
Очень интересно (пока только читаю, разбираюсь), но появились вопросы на которые не смог сам найти ответы:
- Внешнее тактирование таймеров, как я понял, всё равно «привязывается» к системной шине. В чем тогда смысл внешнего тактирования? Нет, я понимаю, что например, можно определять ширину (длительность) импульса и тп, но как по мне это не совсем тактирование….
- Внешние источники тактирования для каждого таймера свои (то есть выведены на определенные «лапы»). Общего внешнего тактирования не бывает? То есть общим может быть только системная шина?
Что-то еще было, пока писал - забыл. Вспомню - напишу…
Диаграмма внешнего тактирования. Мода 1 привязки к внутреннему такту нет.
Зачем нескольким таймерам внешнее тактирование с одной ноги? У каждого может быть своё, а хочешь общее объедини ноги снаружи.
Вот только за 20 с лишним лет работы с МК внешнее тактирование не использовал ни разу. В моих задачах такой нужды не возникло.
Аналогично. Любопытно, для чего это кому-то бы понадобилось…
Я так считаю - если такая возможность имеется, да еще на аппаратном уровне - значит кем-то довольно хорошо используется.
Просто хотелось разобраться в особенностях внешнего тактирования таймера.
Но я всё больше разбираясь в этом прихожу к выводу, что это не совсем тактирование.
Внешняя тактовая частота должна быть в два раза ниже частоты шины (ну и где тут не привязка?), ну и так далее - много “особенностей”.
к фразе “внешнее тактирование” таймеров думаю надо относиться не как тактирование, а просто как подача таймерам управляющих сигналов.
Типичный пример - таймер в режиме энкодера.
Вот и я, читая, пришел к подобному выводу…
А что есть тактирование для таймера? Тем более внешнее. Что оно вообще делает?
а я не знаю ![]()
в документации на МК есть ну наверное десяток картинок как работаеют таймеры в различных режимах, и на диаграммах нарисовано что происходит в зависимости от внешнего сигнала.
ЗЫ. Предлагаю запинать того, кто вообще придумал фразу “тактирование таймера” ![]()
Это все от не понимания того, что это НЕ ТАЙМЕР, а ТАЙМЕР-СЧЁТЧИК.
Тактировать можно откуда угодно. Я, допустим, как то, позиционирование делал шагового двигателя по импульсам step, этого же самого двигателя.
писать не охота, инфы навалом в тырнете
кратко
- Захвата сигнала.
- Сравнения.
- Генерации ШИМ.
- Генерации одиночного импульса.
или
Осознал глупость написанного выше когда нажал кнопку отправить.
Видимо это когда на счетный вход подаются внешние импульсы. В Пиках есть режим асинхронного счета и синхронного - как в stm32 примерно. Можно юзать для измерения частоты, если она высокая.
А вот выдачу частоты/периода можно только с дискретностью в 16бит сделать, а не 32. Например.
Если действительно хорошо знаешь - расскажи что это такое?
Асинхронный счет это тупо как обычный аппаратный счетчик считает. При его считывании надо предусматривать что счетный импульс придет в момент чтения. Или записи. Это сбивало часы в старых Пиках, например.
Синхронный синхронизируется с частотой процессора. Для чего это надо смотреть. Соотв. макс частота счета меньше.
В стм32 по ср с Пиками таймеры чертовски навороченные. Пики мне только аппаратно больше нравятся: питание 1,8 - 5в, жрут микроамперы, вроде не так горят как другие.
Энкодер на таймере стм32 кто-нибудь юзал? В чем его плюсы?
То есть асинхронный просто считает +1 и не важно успевает ли за это время цп такт сделать или нет? Интересная технология (для меня, по крайней мере, это новинка).
Именно. Как простая микросхема-счетчик. Не помню в стм32 есть ли такой режим таймера. Для считывания обычно использует «теневой» регистр, куда можно скопировать счетчик, а потом оттуда неторопливо читать.
И так же его перезагружать при достижении опр. значения - те получим выдачу импульсов заданной длительности.
В стм32 шикарный прескалер, генератор от 0,1гц до 10кгц делал с 15битной точностью. Хотел 32бита, но тогда только 1 импульс получалось такой выдать, а не непрерывно.
