Страница 69 из 72
Re: Таймеры/счётчики в AVR
Добавлено: Вт апр 15, 2025 03:52:55
Уош
Существует параметрический поиск, о чём как бы можно было догадаться, наверное...
https://www.microchip.com/en-us/paramet ... h.html/716
Re: Таймеры/счётчики в AVR
Добавлено: Вт апр 15, 2025 07:14:00
Starichok51
ATmega328PB имеет 5 таймеров, и все с ШИМ.
Re: Таймеры/счётчики в AVR
Добавлено: Вт апр 15, 2025 11:56:21
Just_Fluffy
Starichok51, откуда в 328 меге 5 таймеров?
Там три, каждый с двумя ШИМ...
Re: Таймеры/счётчики в AVR
Добавлено: Вт апр 15, 2025 12:04:11
veso74
относительно новый тип 328
PB (не 328
P)
Two 8-bit Timer/Counters with Separate Prescaler and Compare Mode
Three 16-bit Timer/Counters with Separate Prescaler, Compare Mode, and Capture Mode
Ten PWM Channels
Re: Таймеры/счётчики в AVR
Добавлено: Вт апр 15, 2025 12:17:52
watchmaker
Интересно, но они опять прожлобили с предделителем - можно делить тактовую частоту только на 8, 64, 256 или 1024.
Re: Таймеры/счётчики в AVR
Добавлено: Вт апр 15, 2025 12:41:22
Adrift
У них даже на ARM у таймеров всего 8 делителей... Берите STM32, будет десяток таймеров и у каждого полноценный 16-ти битный пределитель.
Re: Таймеры/счётчики в AVR
Добавлено: Пт апр 18, 2025 13:10:25
ZyaK
кто мешает в обработчик таймера добавить переменную и сбрасывать по достижении нужного значения и выполнять код?
Re: Таймеры/счётчики в AVR
Добавлено: Пт апр 18, 2025 13:42:13
OKF
А нету обработчика. Тогда что?
Re: Таймеры/счётчики в AVR
Добавлено: Сб апр 19, 2025 20:18:34
Just_Fluffy
OKF, нарисовать.
У АВРок, если прерывание разрешено, то обработчик должен быть. Хотя бы RETI в таблице векторов.
Если на Си, то:
Код: Выделить всё
ISR(INT0_vect, __attribute__((naked))){
asm volatile ("reti" ::);
}
Это минимальный обработчик...
Re: Таймеры/счётчики в AVR
Добавлено: Сб апр 19, 2025 20:33:14
OKF
Нет, ну речь то зашла о делителях.) А мне, к примеру, нужно на пине иметь какую то частоту. И зачем здесь обработчик. Поделил и вперёд!)
Re: Таймеры/счётчики в AVR
Добавлено: Вс апр 20, 2025 20:29:27
watchmaker
кто мешает в обработчик таймера добавить переменную и сбрасывать по достижении нужного значения и выполнять код?
Мне нужно не выполнять код, а выдавать аппаратным ШИМом частоту с точностью до 0.2..0.4%, соответственно на 8-битном таймере делитель нужно держать ближе к верху диапазона. Если имеются предделители только 2⁰ и 2³, это не всегда возможно.
Re: Таймеры/счётчики в AVR
Добавлено: Вс апр 20, 2025 22:35:02
Starichok51
возьми 16-битный таймер, и можешь изменять частоту в широком диапазоне даже без предделителя.
Re: Таймеры/счётчики в AVR
Добавлено: Вс апр 20, 2025 23:18:52
watchmaker
На 88 меге так и делал, но сейчас её брать для этого применения бессмысленно.
Re: Таймеры/счётчики в AVR
Добавлено: Пн апр 21, 2025 10:15:22
Starichok51
watchmaker, тогда расскажи, как ты собрался аппаратным ШИМом формировать нужную тебе частоту?
частоту (меандр) можно формировать таймером без применения аппаратного ШИМа.
шаг 0,2% между соседними частотами на 8-битном таймере ты не получишь никогда.
между числами 250 и 251 (или 249) будет, как раз, 0,4%. с уменьшением числа погрешность будет возрастать.
даже если бы предделители были 1, 2, 4, 8, для любой частоты ты никогда не попадешь в конец записываемого байта.
какие, конкретно, тебе нужны частоты?
Re: Таймеры/счётчики в AVR
Добавлено: Пн апр 21, 2025 11:23:24
watchmaker
220..1760 Гц с соотношением соседних частот 2^(1/12). Конкретное начальное значение 220 Гц не столь важно (+/- 6% не проблема), важно как можно более точное соотношение. 0.4% удаётся добиться в диапазоне делителей 128..256 подбором начального значения, а вот при выходе за этот диапазон 1% в идеале.
Re: Таймеры/счётчики в AVR
Добавлено: Пн апр 21, 2025 15:15:56
Starichok51
watchmaker писал(а):0.4% удаётся добиться в диапазоне делителей 128..256
не надо сочинять.
разница между 128 и 129 дает ошибку 1/128, то есть, около 0,8%.
тебе и самому понятно, что на 8-битном таймере 8-кратное изменение частоты с желаемой точностью ты сделать не можешь. только признаться в этом не хочешь.
так что, бери мегу88 и не морочь голову себе и людям.
Re: Таймеры/счётчики в AVR
Добавлено: Пн апр 21, 2025 17:44:49
Just_Fluffy
Starichok51, можно в прерывании таймера динамически менять 128/129 и получить нужную среднюю частоту. Но будет джиттер.
Re: Таймеры/счётчики в AVR
Добавлено: Пн апр 21, 2025 18:02:44
Starichok51
ему нужны частоты нот, от ля малой октавы до ля третьей октавы. джиттер будет слух резать.
Re: Таймеры/счётчики в AVR
Добавлено: Пн апр 21, 2025 21:07:32
darkkis89
Здравствуйте, помогите пожалуйста разобраться новичку с таймерами в atmega88p, Использую таймер 2 для шим модуляции, а таймер 0 для прерываний по переполнению, при изменение скважности шим с помощью регистра OCR2B почему то меняется время прерывания таймера 0, никак не могу понять причину, как регистр 2 таймера связан с таймером 0?
Re: Таймеры/счётчики в AVR
Добавлено: Пн апр 21, 2025 23:52:38
Just_Fluffy
Starichok51, на самом деле нет. слишком часто будет меняться делитель частоты, да и меняться он будет всего на единицу делителя.
Но это надо пробовать, что б послушал кто то с музыкальным слухом.
darkkis89, фрагмент кода в студию