|
Выбираю микроконтроллер, есть несколько вопросов про AVR |
|
|
|
Aug 19 2008, 15:29
|
Частый гость
 
Группа: Новичок
Сообщений: 75
Регистрация: 19-08-08
Из: г. Омск
Пользователь №: 39 697

|
Электроника - моё второстепенное увлечение, и иногда я уделяю ему немного времени  Основное увлечение - программирование, и поэтому в электронике меня больше всего привлекают микроконтроллеры. До этого я работал только с готовыми устройствами на микроконтроллерах - сотовыми телефонами Motorola. В них микроконтроллер Neptune LTE на ядре ARM7 Big Endian. Опыт программирования под них у меня достаточный, теперь решил попробовать свои силы в проектировании устройств на микроконтроллерах. В качестве микроконтроллера для начала мой одногруппник мне посоветовал AVR, немного рассказал про их базовые возможности, а в начале сентября даст мне много информации, так что буду учиться. В качестве примера для первого проекта я выбрал электронный регулятор угла опережения зажигания для комбинированного (бензин/газ) карбюраторного двигателя внутреннего сгорания. Принцип действия в том, что импульсы зажигания снимаются с датчика, жёстко связанного с коленвалом (или валом ГРМ, или валом распределителя зажигания, непринципиально), а характеристика "угол от частоты вращения" формируется с помощью микроконтроллера сдвигом импульсов. Для этого нужно измерять время от некоторого условного нуля отсчёта (момента включения зажигания?) до каждого фронта (или спада) сигнала датчика в тактах генератора (f=400 кГц) и выдавать фронт/спад выходного импульса при тактах этого генератора с известным номером. Для изучения поведения двигателя на бензине и на газе требуется, чтобы характеристику "фи от эф" можно было менять без остановки двигателя, давая команды с ноутбука. Сможет ли AVR воспринимать тактовые импульсы, отдавать выходные импульсы и одновременно программно обрабатывать USB? Какая тактовая частота для этого потребуется? (На каждый входной импульс от датчика зажигания - несколько арифметических операций, два чтения GPIO и одно получение данных из таблицы, на каждый тактовый импульс - несколько арифметических операций, несколько сравнений, не более одной выдачи на GPIO). Смогу ли я прошивать микроконтроллер через его встроенный бутлоадер, пользуясь интерфейсом UART? P.S. 1) Под "несколькими арифметическими операциями" я понимаю небольшое, каждый раз постоянное, число операций типа сложения-вычитания. 2) Если кого-то смущает "GPIO", это непосредственно управляемые/считываемые выводы микроконтроллера. Если они обычно называются по-другому, пожалуйста, скажите как.
Сообщение отредактировал motoprogger - Aug 19 2008, 15:38
|
|
|
|
|
Aug 19 2008, 15:48
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(motoprogger @ Aug 20 2008, 00:29)  В качестве микроконтроллера для начала мой одногруппник мне посоветовал AVR Имелось в виду AVR? Цитата(motoprogger @ Aug 20 2008, 00:29)  Для изучения поведения двигателя на бензине и на газе требуется, чтобы характеристику "фи от эф" можно было менять без остановки двигателя, давая команды с ноутбука. Сможет ли AVR воспринимать тактовые импульсы, отдавать выходные импульсы и одновременно программно обрабатывать USB? Какая тактовая частота для этого потребуется? (На каждый входной импульс от датчика зажигания - несколько арифметических операций, два чтения GPIO и одно получение данных из таблицы, на каждый тактовый импульс - несколько арифметических операций, несколько сравнений, не более одной выдачи на GPIO). Хм, не знаком с ругулировкой ОЗ, но могу посоветовать взять AVR с аппартным USB, на всякий случай. Либо использовать переодник USB <-> UART. Цитата(motoprogger @ Aug 20 2008, 00:29)  Смогу ли я прошивать микроконтроллер через его встроенный бутлоадер, пользуясь интерфейсом UART? Встроенного бутлоадера нет. Нужно его туда сначала записать. Масса различных бутлоадеров есть в инете. Наиболее часто для прошивки МК применяют ISP программаторы, протокол - SPI. Т.о. можно зашить бутлоадер, а затем забыть о программаторе. Цитата(motoprogger @ Aug 20 2008, 00:29)  P.S. 1) Под "несколькими арифметическими операциями" я понимаю небольшое, каждый раз постоянное, число операций типа сложения-вычитания. Тогда должен справиться! Цитата(motoprogger @ Aug 20 2008, 00:29)  2) Если кого-то смущает "GPIO", это непосредственно управляемые/считываемые выводы микроконтроллера. Если они обычно называются по-другому, пожалуйста, скажите как. Нет, это общепринятое название.
--------------------
Выбор.
|
|
|
|
|
Aug 19 2008, 16:13
|
Частый гость
 
Группа: Новичок
Сообщений: 75
Регистрация: 19-08-08
Из: г. Омск
Пользователь №: 39 697

|
Цитата Имелось в виду AVR? Да. Именно AVR. Цитата могу посоветовать взять AVR с аппартным USB, на всякий случай А есть ли AVR (не AVR32) микроконтроллеры с аппаратным USB? Или, насколько 8-разрядные AVR отличаются от аналогичных по периферии AVR32? Цитата Встроенного бутлоадера нет. Нужно его туда сначала записать. Масса различных бутлоадеров есть в инете. Наиболее часто для прошивки МК применяют ISP программаторы, протокол - SPI. Т.о. можно зашить бутлоадер, а затем забыть о программаторе. Если бы встроенного бутлоадера реально не было, для прошивания микроконтроллера требовалось бы подключиться ко всем выводам его флеш-памяти напрямую. Получается, встроенный бутлоадер - это тот, который по SPI принимает прошивку. Вообще, у телефона Motorola E398 вроде SPI выведена наружу, даже на 2 слейва, так что можно и по SPI с помощью самопальной программы перекинуть прошивку из оперативы телефона в флеш-память микроконтроллера. Но USB-бутлоадер всё равно нужен, чтобы малой кровью менять зашитые характеристики регулировки.
|
|
|
|
|
Aug 19 2008, 16:58
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(motoprogger @ Aug 20 2008, 01:13)  А есть ли AVR (не AVR32) микроконтроллеры с аппаратным USB? Или, насколько 8-разрядные AVR отличаются от аналогичных по периферии AVR32? Есть. Посмотрите на официальном сайте. А причем здесь 8 разрядные и 32 разрядные МК? Различаются хотябы разрядностью и областью применения. Цитата(motoprogger @ Aug 20 2008, 01:13)  Если бы встроенного бутлоадера реально не было, для прошивания микроконтроллера требовалось бы подключиться ко всем выводам его флеш-памяти напрямую. Неправда Ваша. Цитата(motoprogger @ Aug 20 2008, 01:13)  Получается, встроенный бутлоадер - это тот, который по SPI принимает прошивку. Снова Ваша неправда. То, что Вы называете встроенным бутлоадеров в данном случае, является всего лишь внутренним программатором, который занимается неблагодарной работой по программированию флеша (алгоритмы, времянки и тп). Бутлоадер это штука более высокого уровня, предназначенная для перепрограммирования МК через какой-либо удобный интерфейс (обычно UART) и терминальную программу пользователя (например HyperTerminal). Ну это касается AVR. В ARM действительно встроенный бутлоадер.
--------------------
Выбор.
|
|
|
|
|
Aug 19 2008, 17:09
|
Частый гость
 
Группа: Новичок
Сообщений: 75
Регистрация: 19-08-08
Из: г. Омск
Пользователь №: 39 697

|
Цитата То, что Вы называете встроенным бутлоадеров в данном случае, является всего лишь внутренним программатором, который занимается неблагодарной работой по программированию флеша (алгоритмы, времянки и тп) То есть, процессорное ядро у AVR в прошивании по SPI не участвует? Тогда ладно Цитата Бутлоадер это штука более высокого уровня, предназначенная для перепрограммирования МК через какой-либо удобный интерфейс (обычно UART) и терминальную программу пользователя (например HyperTerminal) Имхо неважно, через какой физический интерфейс, с помощью каких программ и по какому протоколу... если это программа, выполняемая процессорным ядром микроконтроллера и служащая для прошивания - это бутлоадер.
|
|
|
|
|
Aug 19 2008, 19:58
|
Частый гость
 
Группа: Свой
Сообщений: 148
Регистрация: 26-05-05
Пользователь №: 5 416

|
Цитата(motoprogger @ Aug 19 2008, 19:29)  Сможет ли AVR воспринимать тактовые импульсы, отдавать выходные импульсы и одновременно программно обрабатывать USB? А почему бы и нет. Цитата(motoprogger @ Aug 19 2008, 19:29)  Какая тактовая частота для этого потребуется? (На каждый входной импульс от датчика зажигания - несколько арифметических операций, два чтения GPIO и одно получение данных из таблицы, на каждый тактовый импульс - несколько арифметических операций, несколько сравнений, не более одной выдачи на GPIO). В зависимости от количества операций. Если скажем взять на 4МГц, то это примерно 1000 тактов мк на один такт генератора. В принципе по описанию задачи должно хватит. Цитата(motoprogger @ Aug 19 2008, 19:29)  Смогу ли я прошивать микроконтроллер через его встроенный бутлоадер, пользуясь интерфейсом UART? Посредством заводского бутлоадера - нет. Можно поискать в интернете или написать самому и прошивать хоть по USART хоть по 1-wire.
|
|
|
|
|
Aug 20 2008, 06:42
|
Профессионал
    
Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008

|
Цитата Сможет ли AVR воспринимать тактовые импульсы, отдавать выходные импульсы и одновременно программно обрабатывать USB? Если брать обычный АВР без встроенного аппаратного ЮСБ, то можно реализовать программный low speed usb, например вот так http://www.obdev.at/products/avrusb/index.html при этом частота тактирования будет не менее 12МГц(либо 15, 16 или 20МГц) загрузка на обработку юсб зависит от того, что вы конкретно реализуете из юсб (я где то встречал упоминание что мост USB-UART в этой реализации загружает контроллер на 90% при 12МГц, остальные реализации, например HID, загружают меньше). P.S. Кстати в разделе "Проекты" на том же сайте есть и бутлоадеры, которые по ЮСБ загружают программу в контроллер (но любой бутлоадер нужно сперва прошить в контроллер программатором)
--------------------
|
|
|
|
|
Aug 20 2008, 12:06
|
Частый гость
 
Группа: Новичок
Сообщений: 75
Регистрация: 19-08-08
Из: г. Омск
Пользователь №: 39 697

|
Если смотреть на ARM - есть ли ARM-микроконтроллеры в корпусе DIP? Я один видел, но он стоил куда дороже аналога в QSOP... Цитата Если скажем взять на 4МГц, то это примерно 1000 тактов мк на один такт генератора Как так??? Цитата (f=400 кГц) Мне кажется, 4 МГц всего в 10 раз больше, чем 400 кГц... Прошить любой контроллер по USB, UART, SPI для меня не проблема, если знать протокол. Не найду программы - сам запишу. А вообще буду писать бутлоадер под USB, эмулирующий интерфейс Motorola Flash (он уже давно разобран досконально, через него телефоны Motorola прошиваются).
|
|
|
|
|
Aug 20 2008, 12:36
|

Частый гость
 
Группа: Свой
Сообщений: 180
Регистрация: 17-05-05
Из: Санкт-Петербург
Пользователь №: 5 128

|
В контроллере управления зажиганием USB на первый взгляд не нужен. Можно "на время отладки" воспользоваться конвертером USB <-> UART. Наиболее распространены FT232R - http://ftdichip.com/FTProducts.htm#FT232Rили CP2103 - https://www.silabs.com/products/interface/u...es/default.aspxили PL-2303 - http://www.prolific.com.tw/eng/Products.asp?ID=59Все микросхемы преобразователей интерфейсов доступны для покупки и позволят двигаться к цели решая основные задачи, а не браться за освоение USB. Цена 1-2 доллара. Зачастую есть в переходниках от сотовых телефонов к ПК. По быстродействию. В контроллере управления двигателями ВАЗ, аля Январь 5, 7... используется МК Siemens SAF509. Это микроконтроллер семейства 8052 (4 такта на инструкцию). В контроллеры (ЭСУД) устанавливается кварц 16МГц. 16/4=4 MIPS'а. Задачи решаемые контроллером и рядом не стояли с Вашей. Т.е. порядок сложности их намного выше. Т.е. быстродействия AVR будет достаточно. AVR32 - равно как и ARM для решения задачи - избыточны. По питанию. Лучше выбрать 5 Вольтовое питание. И хотя сейчас повсеместно принято использовать 3,3В в данном случае 5В наиболее удобно. Мотивация? Большинство переферийных, автомобильных ИС к сожалению с питанием 5В. Ох как неудобно  Ряд вопросов. Модуль зажигания будет штатный? Какая машина? Двигатель? Прерыватель зажигания установлен контактный или датчик Холла? Уровни сигналов с прерывателя? Если контактный - нужно будет делать антидребезг? Что выбрать в качестве силового ключа для катушки зажигания? (если не модуль) Вот, что кто-то уже сделал и автолюбители нахваливают http://silych.h10.ru/about1.htmВот схема Январь 5.1http://www.almisoft.ru/files/janvar51.rar - посмотрите, позновательно. Может предусмотреть возможность использования датчика детонации (ДД)? Типовые схемы преобразователей можно срисовать со схемы Января. Обратить внимание, что применяются два типа датчиков - широкополосный и узкополосный. Ввиду этого используются слегка разные ИС. Если не будет ДД, то подразумевается ли корректировка УОЗ вручную? Клавиатурка, энкодер? Вольтметр не хотите-ли  А тахометр? Дисплейчег опять-же, цифр на 5. В классику когда-то ставил себе Октан-4. Прямой ссылки на описание не нашел. Встречаются только обрывки. Если поищите, можно подчерпнуть немного информации. Еще поиском по слову ОКТАН можно найти примеры схемных решений. Схема стабилизатора питания МК? Линейный или импульсный? В Январе - линейный, думаю не просто так  Диапазон допустимых входных напряжений должен быть 40В + снижение шума для всяких там АЦП. В Вашем случае может быть все проще. Входные цепи с датчиков делаются согласно спецификациям (слышал где-то)... Если будет переходник USB <-> UART то его разумнее выполнить в виде отдельного блока. И дабы поберечь ноутбук от всяких там... можно применить ADuM1201 http://www.analog.com/en/interface/digital...ts/product.htmlВпрочем к стандартным блокам управления стыкуются зачастую непосредственно. Интерфейс правда там K-Line или K-L-Line. Погуглите. Очень хороший форум для автолюбителей/диагностов/программистов http://oktja.ru/forum/За поиском идей сходите сюда http://chiptuner.ru/ Зачитаетесь
|
|
|
|
|
Aug 20 2008, 13:24
|
Частый гость
 
Группа: Новичок
Сообщений: 75
Регистрация: 19-08-08
Из: г. Омск
Пользователь №: 39 697

|
Автомобиль - ВАЗ-21011. с её родным двигателем  Датчик Холла от "Нивы" не знаю какой, но его придётся маленько переставить, чтобы на него не влиял центробежный регулятор. Коммутатор - вроде от "восьмёрки" или "девятки". USB нужно, чтобы с ноутбука на лету менять характеристику и на месте следить за двигателем... USB осваивать рано или поздно всё равно надо, так как неумение им пользоваться маленько ограничивает возможности в проектировании Тахометр - предполагался возможным на самую отдалённую перспективу, если процессорной мощности микроконтроллера хватит, чтобы потянуть ещё и ЖК-дисплей (хотя можно поискать контроллеры на SPI или ещё чёмнить, тогда от микроконтроллера много не надо). Насчёт того, сколько надо от процессора. Если у микроконтроллера есть счётчик, увеличивающийся на 1 c устанавливаемой частотой (нужно, чтобы можно было установить близко к 400 кГц), его в любой момент можно читать и можно генерировать прерывание в момент, когда значение счётчика станет равным определённому числу - от процессора потребуется порядка 20 тысяч операций в секунду (наверняка даже меньше). Если такового нет - придётся вешать прерывание на осциллятор 400 кГц, а это загрузит проц куда сильнее.
Сообщение отредактировал motoprogger - Aug 20 2008, 13:28
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|