Взять контроллер, у которого столько каналов есть. Из AVR это, например, AT90PWM3.Psych писал(а):Как поступить если столько каналов нету?
Мелкие вопросы по МК и ПЛИС.
- Реклама
Если схемотехника построена на однополярном питании и полных мостах, а требуется полноценный синус-ШИМ, то шестиканального ШИМа с векторным управлением не избежать.Аlex писал(а):В принципе, достаточно будет и 3-х каналов.
Ориентированных на моторные применения контроллеров у всех производителей полным полно.
Тем более, что помимо ШИМа еще требуются специальные входы для аппаратной защиты по току, иначе пожара не избежать.
ЗЫ. Кстати, у всех этих производителей обсуждаемый вопрос терт-перетерт в аппнотах на самый разный вкус и притязания. Со схемотехникой и кодом.
А если к примеру взять вообще один канал ШИМ и коммутировать его на драйвер с 6-ю входами(3 прямых, з инверсных)? Там же вроде как шим пуляет одно и тоже просто в разное время.Аlex писал(а):В принципе, достаточно будет и 3-х каналов. Ведь в одном плече не могут одновременно работать 2 транзистора, вот и переключать каждый канал на ключ, соответствующий текущей полуволне.
Здравствуйте.
Не могу понять как включить непрерывное преобразование АЦП.
Вот код из примеров от производителя:
Как я понимаю за непрерывный цикл отвечает строка:
Так же не работает - преобразование единичное, переменная не меняется со временем, сохраняется первоначальное состояние.
Думал уже раздолбаю этот орешек, но уже готов сдаться.
Не могу понять как включить непрерывное преобразование АЦП.
Вот код из примеров от производителя:
Код: Выделить всё
/* Configure the ADC1 in continuous mode with a resolution equal to 12 bits */
ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Upward;
ADC_Init(ADC1, &ADC_InitStructure);
Однако я пробовал и это:ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
Код: Выделить всё
/* Непрерывный режим АЦП */
ADC_ContinuousModeCmd(ADC1, ENABLE);Думал уже раздолбаю этот орешек, но уже готов сдаться.
В AVRке - источником запуска АЦП отвечает регистр SFIOR (Биты 7-5 ).
Наши проблемы - предмет наших действий .
- Реклама
Есть МК. Атмеловский 51-й, но это не важно. Нужна тактовая частота 22.1184 МГц. Таких кварцев найти не удается. Зато в доступе на 7.3728. Можно ли подключить его к МК так чтоб он работал на 3-й гармонике?
Если бы на станции "Мир" стояли Винды, она бы еще висела и висела...
Во первых, сам кварц должен иметь ВОЗМОЖНОСТЬ возбуждаться на третьей гармонике. Что не факт.
Во вторых, осциллятор МК не рассчитан на возбуждение кварцев на несвойственной им гармонике.
Ну и реализовать задуманное можно путем создания ГЕНЕРАТОРА на третьей гармонике имеющегося кварца и подаче на вход осциллятора МК уже ГОТОВОГО сигнала. Ну а во фьюзах нужно прописать такой тип тактирования, естественно.
Во вторых, осциллятор МК не рассчитан на возбуждение кварцев на несвойственной им гармонике.
Ну и реализовать задуманное можно путем создания ГЕНЕРАТОРА на третьей гармонике имеющегося кварца и подаче на вход осциллятора МК уже ГОТОВОГО сигнала. Ну а во фьюзах нужно прописать такой тип тактирования, естественно.
Внешнюю ФАПЧу замутитьpaskal писал(а):Можно ли подключить его к МК так чтоб он работал на 3-й гармонике?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Ну это понятно что при штатной схеме подключения он генерит на первой. Я спрашиваю, нельзя ли так видоизменить схему подключения чтоб он стал работать на 3-й?КРАМ писал(а):Во вторых, осциллятор МК не рассчитан на возбуждение кварцев на несвойственной им гармонике.
Во вложении одна такая схема, правда для совсем другого кристалла.
- Вложения
-
- third.png
- (18.87 КБ) 358 скачиваний
Если бы на станции "Мир" стояли Винды, она бы еще висела и висела...
- Сообщения: 3
- Зарегистрирован: Чт апр 02, 2015 18:55:53
Подскажите пожалуйста простейшую плату под мегу8, чтоб были кварц, 7805, isp, гребенки и всё. Пересмотрел много вариантов и везде платы большие, куча ненужных мне индикаторов и прочего. Нарисовал бы сам, но - не умею(
Во-первых, она в трёх корпусах.Sola писал(а):плату под мегу8
А во-вторых, самому нарисовать. Не?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
почти всем требованиям отвечает:Sola писал(а):Подскажите пожалуйста простейшую плату под мегу8, чтоб были кварц, 7805, isp, гребенки и всё
http://www.inzarsalfikar.com/2010/10/mi ... c-pcb.html
- Сообщения: 20132
- Зарегистрирован: Чт сен 01, 2011 12:53:27
- Откуда: ТьмуТаракания. Почетный житель подмостовья
"можно даже козу на плацу", так когдато говорил мой ком роты.paskal писал(а): Я спрашиваю, нельзя ли так видоизменить схему подключения чтоб он стал работать на 3-й?
Во вложении одна такая схема, правда для совсем другого кристалла.
если надо стабильность и устойчивость в работе, надо городить внешнюю схему генератора, или утроитель. штатная на такое не расчитана, если вам и удасться, то повторить ее врят ли будет возможно. да и время суровый судья: сегодня работает- завтра жопа в мыле
Шекспир сказал: Судить меня -дано лишь Богу, другим я укажу дорогу... https://natribu.org/
Я его полностью поддерживаю.
Программирую на Fuse AtmelAVR.
Я его полностью поддерживаю.
Программирую на Fuse AtmelAVR.
- Сообщения: 3
- Зарегистрирован: Чт апр 02, 2015 18:55:53
- Сообщения: 118
- Зарегистрирован: Ср фев 05, 2014 18:54:39
вопрос чисто теоретический т.к. наткнулся на такой вопрос в инете - может ли контроллер (в том случае мега16) сбрасываться в случае нехватки RAM. Я думал что не может, но люди пишут что якобы может. Мне казалось что в этом случае(нехватки RAM) он просто начинает затирать старые данные и происходит тоже очень неприятная штука. И если это так, то как так получается, мне не очень понятен тогда как это происходит...ну т.е. что конкретно следит за переполнением озу и сбрасывает instruction pointer в 0x00 ...?
Нехватка ОЗУ для МК приводит к непредсказуемым последствиям(крушение или зависание программы).
Компиляторы обычно подсчитывают размер статических объектов(например массивы фиксированной длины) и при недостаточном размере свободной памяти проект просто не соберётся. По этой причине динамические объекты без особой нужды лучше не использовать.
В более продвинутых МК за работой с памятью может следить MPU или MMU. Соответствующее им исключение может прибить глючный процесс или дать сигнал ОС для разбирательств.
Компиляторы обычно подсчитывают размер статических объектов(например массивы фиксированной длины) и при недостаточном размере свободной памяти проект просто не соберётся. По этой причине динамические объекты без особой нужды лучше не использовать.
В более продвинутых МК за работой с памятью может следить MPU или MMU. Соответствующее им исключение может прибить глючный процесс или дать сигнал ОС для разбирательств.
Представил себе Мегу16 с операционной системой, многозадачным режимом... Кинуло в дрожь.
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
.. если чисто теоретический, то представьте ситуацию, когда затирается стек возвратов. Тогда после первой же инструкции RET или RETI программа улетит в неизвестном направленииjazz393 писал(а):Мне казалось что в этом случае(нехватки RAM) он просто начинает затирать старые данные и происходит тоже очень неприятная штука. И если это так, то как так получается, мне не очень понятен
- Сообщения: 118
- Зарегистрирован: Ср фев 05, 2014 18:54:39
Добрый вечер, читал даташит на stm32 и у меня внезапно возник глупый вопрос - для чего подтягивающие резисторы используются когда порт сконфигурирован на выход(не с открытым коллектором), конкретно регистр PUPDR, это же по сути просто то же что записать в ODR 1 или 0


