Arduino. Не работает Serial при установке Таймера

Обсуждаем контроллеры компании Atmel.
NStorm
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Re: Arduino. Не работает Serial при установке Таймера

Сообщение NStorm »

Я так и не понял, 10-битность нужная только для "Вторые два канала, по просто ШИМ" или для этих "первых двух". Потому что у первых двух шаг периода совсем другой заявлен, только вот непонятен шаг "импульса".
Реклама
Аватара пользователя
FuseStart
Открыл глаза
Сообщения: 76
Зарегистрирован: Вт окт 09, 2018 10:01:10

Re: Arduino. Не работает Serial при установке Таймера

Сообщение FuseStart »

Всем спасибо, натолкнули на новые мысли.

Добавлено after 6 minutes 33 seconds:
[uquote="NStorm",url="/forum/viewtopic.php?p=3797667#p3797667"]Я так и не понял, 10-битность нужная только для "Вторые два канала, по просто ШИМ" или для этих "первых двух". Потому что у первых двух шаг периода совсем другой заявлен, только вот непонятен шаг "импульса".[/uquote]
Только для вторые два канала.
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15569
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Arduino. Не работает Serial при установке Таймера

Сообщение BOB51 »

[uquote="Аlex",url="/forum/viewtopic.php?p=3797604#p3797604"]...
Ну ну... Сейчас тут насоветуют всякого, не понимая основной сути проблемы.
Поделите ка 55 us на 1024 и прикиньте какой должен быть квант отчётов.

...[/uquote]

Тактовая частота при 16 МГц = 0,0000000625S (это у адуринки "по умолчанию").
(или 8МГц внутренний RC при сбросе предделителя в 1:1 = 0,000000125S - для 2313)
Она же и шаг квантования для регистров сравнения.
При использовании одного из OCR для задания длительности 1, а ICR для задания периода ...
Аппаратно дрыгать выводами OCnA/OCnB вполне можно (и без прерываний - точка перезагрузки параметров отрабатывается также аппаратно).
Но тогда по таймеру на канал (если и период независимо перестраиваемый).
Либо... пара ШИМов с единым периодом, но разной длительностью импульса на едином общем таймере.
Однако во всех случаях шаг дискретности равен периоду тактовой частоты генератора clkI/O...
:roll:
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: Arduino. Не работает Serial при установке Таймера

Сообщение Demiurg »

Пусть частота 16 МГц. Пусть 8 битный шим. Предделитель 1. 1\16000000=0,00000000625. *256=0,0000016*2(период*2=частота)=0,0000032. 1\0,0000032=312500 Гц.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15569
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Arduino. Не работает Serial при установке Таймера

Сообщение BOB51 »

[uquote="FuseStart",url="/forum/viewtopic.php?p=3797149#p3797149"]Итак, задача.
Надо получить 4 независимых канала , генерирующие прямоугольные импульсы.
Параметры импульсов нужно менять посылкой команды на ардуино через Serial.
Первые два канала:
Длительность импулсов от 55 до 120 мкс.
Период должен меняться от 560 до 13104 мкс с шагом в 128 мкс.
...[/uquote]
При 55мкс/560мкс разве не получится?
единица 0,000055/0,0000000625=880 тактов
период 0,000560/0,0000000625=8960 тактов
нулик как разница 8960-880=8080 тактов
шаг дискретности 0,000128/0,0000000625=2048 тактов
для самого худшего случая 120/560
единица 0,00012/0,0000000625=1920 тактов
период 0,000560/0,0000000625=8960 тактов
нулик как разница 8960-1920=7040 тактов

максималка вот "подкачала" - 0,013104/0,0000000625=209664 тактов
а допустимо без дополнительных извратов только 65535
т.е максимальный период не более 65535*0,0000000625=0,0040959375 - 4095,9мкс

Таймер у нас 16 разрядный (Т1)...
8)
Другое дело, что у топикстартера КАША в планировке задачи...
:wink:
Реклама
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: Arduino. Не работает Serial при установке Таймера

Сообщение Demiurg »

Там не каша, а пустая похлебка. Из одной воды.
Реклама
Ответить

Вернуться в «AVR»