Создание собственной системы стабилизации

Geniok
Alexsis1109:

Для этого использую счетчик (таймер). с помощью регистра сравнени “завожу” его на нужный мне период. когда регистр сравнения равен 100, таймер тикает с периодом 6,85мкс, т.е. с этой точностью я могу посчитать (измерить) ШИМ.

Признаюсь честно, я не очень силен в АВР, но что-то мне подсказывает, что в регистре сравнения как раз должен лежать период, это то, что вы измеряете, а не задаете.
Например, в СТМ32 для захвата ШИМ я завожу 2 канала. Первый канал ловит фронты, второй - спады. таким образом в первом канале в регистре сравнения у меня будет значение периода, а во втором - значение заполнения.
Это то, что вам нужно.

Alexsis1109:

пока не дошел до генерации, хочу сперва прием наладить…

Советую начать с генерации, там проще тем, что нужен всего 1 канал, да и с регистрами заодно разберетесь, чтобы не путаться какой для чего.
Заводите таймер. В регистр сравнения помещаете величину, до которой хотите чтобы таймер считал. На выходе получаете ШИМ.

Alexsis1109
Geniok:

в регистре сравнения как раз должен лежать период, это то, что вы измеряете, а не задаете.

в АВР по такой формуле счтается частота таймера: f = Fкварца/1+OCR. Где OCR это регистр сравнения. соответсвенно период будет равен 1/f.

Geniok:

Например, в СТМ32 для захвата ШИМ я завожу 2 канала. Первый канал ловит фронты, второй - спады. таким образом в первом канале в регистре сравнения у меня будет значение периода, а во втором - значение заполнения.
Это то, что вам нужно.

к сожалению не перешел еще на STM32, но звучит такое измерение здорово. т.е. вы потом просто из периода вычитаете заполнение и получаете длительность ШИМа? получается вообще без всяких таймеров и подбора дискретности измерения?

oleg70
Alexsis1109:

хочу сперва прием наладить…

Сделайте следующее:
Настройте таймер на 250 Кгц (регистр TCCR)
Запустите его в программе по нарастающему фронту.
Остановите счет по спадающему фронту.
Получите значение длительности из регистра TCNT.
Обнулите TCNT для начала следующего отсчета.
Все!

Alexsis1109
oleg70:

Сделайте следующее:
Настройте таймер на 250 Кгц (регистр TCCR)

спасибо большое за дельный совет! попробую, о результатах отпишусь)

Geniok
Alexsis1109:

к сожалению не перешел еще на STM32, но звучит такое измерение здорово. т.е. вы потом просто из периода вычитаете заполнение и получаете длительность ШИМа? получается вообще без всяких таймеров и подбора дискретности измерения?

Почему без таймеров? таймер себе отлично ведет счет.
Ну вот например, таймер считает с периодом 1 мкс.
Начало отсчета:
CCR1 = 0; (регистра сравнения первого канала - ловит фронты)
CCR2 = 0; (регистр сравнения второго канала - ловит спады)
допустим, через 250 мкс после начала отсчета ловим спад.
Значит в CCR2 заносим число 250.
Через 500 мкс ловим фронт.
Значит в CCR1 заносим число 500.
Скважность будет CCR2/CCR1 = 250/500 = 0,5 = 50%.

Вот у вас есть все данные для измерения ШИМ.

Сбрасываем CCR1 и CCR2 и начинаем счет сначала.

Alexsis1109
Geniok:

Ну вот например, таймер считает с периодом 1 мкс.

вот в этой фразе самое интересное! Не получается у меня завести таймер быстрее чем 5,2 мкс. сегодня 2 часа бился вокруг этого таймера, никак не хочет. хотя теоретически считая по формуле, он вообще с 0,1мкс должен точно тикать.

SergDoc
Alexsis1109:

Не получается у меня завести таймер быстрее чем 5,2 мкс. сегодня 2 часа бился вокруг этого таймера, никак не хочет

а часом не работает ли микросхеа от внутреннего генератора с делителем на 8, или вообще на килогерцах, фьюзы выставлены правильно?

Geniok
Alexsis1109:

вот в этой фразе самое интересное! Не получается у меня завести таймер быстрее чем 5,2 мкс. сегодня 2 часа бился вокруг этого таймера, никак не хочет. хотя теоретически считая по формуле, он вообще с 0,1мкс должен точно тикать.

А можно глянуть код, как вы настраиваете частоту таймера?
Сейчас глянул даташит на Атмегу8, там фиксированные предделители (8, 64, 256, 1024) или без него, той формулы, которую вы писали выше, не нашел.

SergDoc

может AeroQuad32 попробовать? он по идее мне в имеющийся проц влезет…

Alexsis1109
SergDoc:

а часом не работает ли микросхеа от внутреннего генератора с делителем на 8, или вообще на килогерцах, фьюзы выставлены правильно?

фьюзы правильные и микруха настроена на внешний кварц. дело в том, то таймер нормально работает до периода 5,2мкс. т.е. например если я захочу выставить период 10мкс, то его расчет полностью совпадет с формулой. да и другие датчики настроены на частоту внешнего кварца и работаю правильно. Тут именно урунда какая то, почему то не хочет таймер работать быстрее 5.2 мкс, даже если я регистру сравнения присваиваю число, согласно которому период должен быть наприммер 1мкс. и понять в чем дело не могу…

oleg70
Alexsis1109:

Не получается у меня завести таймер

Давайте свою микросхему (марку), частоту кварца, щасс заведем…
(сброшу Вам значения регистров)

Alexsis1109
Geniok:

Сейчас глянул даташит на Атмегу8, там фиксированные предделители (8, 64, 256, 1024) или без него, той формулы, которую вы писали выше, не нашел.

да, полная форула конечно еще в знаменатель нужно предделитель ставить. но так как мне надо наоборот скорость увеличить, то предделители я выключил. формула которую я писал, она в книжке по АВР написана, в разделе таймеров) формула верная. я сегодня ее на осцилле проверял, все норм.

Geniok:

А можно глянуть код, как вы настраиваете частоту таймера?

код сегодня, к сожалению, на работе остался. завтра еще бороться буду, если не получиться, выложу код…

oleg70:

Давайте свою микросхему (марку), частоту кварца, щасс заведем…

микросхема Atmega128, кварц 14.7456МГц…

Geniok
Alexsis1109:

да, полная форула конечно еще в знаменатель нужно предделитель ставить. но так как мне надо наоборот скорость увеличить, то предделители я выключил

Ага, уже нашел что-то похожее… 😃

Alexsis1109
oleg70:

Ой забыл, номер таймера еще и желаемую частоту.

Timer2. Желаемая частота таймера 2МГц)

oleg70
Alexsis1109:

Желаемая частота таймера 2МГц

С Вашим кварцем и аве/эровским “дубовым” делителем можете получить только ближайшее: 1.8432 Mhz.
Пишите следующие значения в регистры:
TCCR2=0x02;
TCNT2=0x00;
OCR2=0x00;
Должно затикать… (не понятно только как Вы меряете результат работы ? )

Alexsis1109
oleg70:

Должно затикать… (не понятно только как Вы меряете результат работы ? )

спасибо, попробую! результат работы меряю с помощью светодиода. просто в тело таймера записал одну команду вкл/выкл светодиода. на осциллографе смотрю

DVE

Не пойму фейк или нет:
www.rcgroups.com/forums/showthread.php?t=1849347

Если нет, то получается довольно-таки интересно - open source проект под YS-X4:

With the aim of creating an autopilot that achieves stability without a lot of tuning, and having a 32-bit processor and still supporting many external devices, ZeroUAV and HeX, together intend to initiate an open source autopilot that is based on the commercial YS-X4. We are not interested to reinvent the wheel, but instead are interested to solve the aforementioned flaws.

Licenses:
Software License: GPL v3
Hardware License: Creative Commons BY-SA

Hardware:
Eva uses a 32 bit ARM processor.
Onboard sensors include 3-axis gyroscope, 3-axis accelerator, barometer, and thermometer.
Eva uses a very precise Analog-to-Digital Converter.
Eva supports GPS and 3 axis digital gyroscope.
Eva supports standalone power sources, and doesn’t need a UBEC connection.

А ведь в принципе гениальная идея: YS раскрывает спецификацию железа, и пусть народ софт пишет. Может получиться вполне интересно. Но что-то в той ветке ни каких-либо деталей ни исходников пока нет.

rual
DVE:

А ведь в принципе гениальная идея: YS раскрывает спецификацию железа, и пусть народ софт пишет. Может получиться вполне интересно. Но что-то в той ветке ни каких-либо деталей ни исходников пока нет.

И железа такого ни у кого нет.
Из существующих ПХ4 вполне достойная железная платформа, если б ещё больше входов/выходов. SergDoc, разрабатывал плату аналогичную ПХ4 с большим количеством входов/выходов, но что то новостей давно нет по ней.

SergDoc
rual:

но что то новостей давно нет по ней.

жду github.com/SergDoc/…/hardware первый комплект плат, где-то в пути… и мультипилот адаптирую к ней потихоньку…

DVE:

Не пойму фейк или нет:

по картинкам похожа, но по моему аксель не тот, может правда с чем путаю, аналоговые датчики через 24-х битный АЦП - круто…

DVE
rual:

И железа такого ни у кого нет.

Насколько я понял, планируется полная совместимость у YS-X4, так что залить прошивку-то не проблема 😃
Остается вопрос отладки конечно, ну и жаль что проц не STM.