реклама на сайте
подробности

 
 
> Выбираю микроконтроллер, есть несколько вопросов про AVR
motoprogger
сообщение Aug 19 2008, 15:29
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 75
Регистрация: 19-08-08
Из: г. Омск
Пользователь №: 39 697



Электроника - моё второстепенное увлечение, и иногда я уделяю ему немного времени smile.gif
Основное увлечение - программирование, и поэтому в электронике меня больше всего привлекают микроконтроллеры. До этого я работал только с готовыми устройствами на микроконтроллерах - сотовыми телефонами 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
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 14)
haker_fox
сообщение Aug 19 2008, 15:48
Сообщение #2


Познающий...
******

Группа: Свой
Сообщений: 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", это непосредственно управляемые/считываемые выводы микроконтроллера. Если они обычно называются по-другому, пожалуйста, скажите как.

Нет, это общепринятое название.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
motoprogger
сообщение Aug 19 2008, 16:13
Сообщение #3


Частый гость
**

Группа: Новичок
Сообщений: 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-бутлоадер всё равно нужен, чтобы малой кровью менять зашитые характеристики регулировки.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Aug 19 2008, 16:58
Сообщение #4


Познающий...
******

Группа: Свой
Сообщений: 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 действительно встроенный бутлоадер.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
motoprogger
сообщение Aug 19 2008, 17:09
Сообщение #5


Частый гость
**

Группа: Новичок
Сообщений: 75
Регистрация: 19-08-08
Из: г. Омск
Пользователь №: 39 697



Цитата
То, что Вы называете встроенным бутлоадеров в данном случае, является всего лишь внутренним программатором, который занимается неблагодарной работой по программированию флеша (алгоритмы, времянки и тп)

То есть, процессорное ядро у AVR в прошивании по SPI не участвует? Тогда ладно
Цитата
Бутлоадер это штука более высокого уровня, предназначенная для перепрограммирования МК через какой-либо удобный интерфейс (обычно UART) и терминальную программу пользователя (например HyperTerminal)

Имхо неважно, через какой физический интерфейс, с помощью каких программ и по какому протоколу... если это программа, выполняемая процессорным ядром микроконтроллера и служащая для прошивания - это бутлоадер.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Aug 19 2008, 19:58
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Ваша задача (основная) весьма примитивна. С ней справится обычный AVR контроллер. Например atmega8. В тоже время, работа с USB не такая уж простая, и написание соответствующего куска превысит основную задачу в несколько раз. Даже при аппаратном USB. Кроме того они не так уж и дёшевы, а также не так и доступны.

Кроме всего прочего совершенно непонятно зачем автомобилю USB. smile.gif

Там обычно применяют CAN и LIN протоколы. Соответствующие м/х AVR имеются. Например at90can128. Если вам USB необходим просто для "общения" с камнем, то воспользуйтесь переходником USB<>RS232 либо USB<>RS485. Соответствующий интерфейс есть практически в любой AVR (таже mega8).

Следует обратить особое внимание на схемотехнику узла и особенно разводку цепей питания. Автомобиль - не сотовый телефон. smile.gif
Go to the top of the page
 
+Quote Post
UniBomb
сообщение Aug 19 2008, 19:58
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post
GDI
сообщение Aug 20 2008, 06:42
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 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. Кстати в разделе "Проекты" на том же сайте есть и бутлоадеры, которые по ЮСБ загружают программу в контроллер (но любой бутлоадер нужно сперва прошить в контроллер программатором)


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Aug 20 2008, 08:20
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



А все-таки - зачем USB в машине?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
SysRq
сообщение Aug 20 2008, 08:22
Сообщение #10


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



А как же AT90USB* (и еще некоторые)? Atmel же прошивает в них bootloader сам, и через Flip оно должно прошиваться.
Go to the top of the page
 
+Quote Post
uriy
сообщение Aug 20 2008, 09:00
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Цитата
А все-таки - зачем USB в машине?

Читайте внимательней автора! Он же пишет: "Для изучения поведения двигателя на бензине и на газе требуется, чтобы характеристику "фи от эф" можно было менять без остановки двигателя, давая команды с ноутбука." Может быть вам стоить посмотерть на AT91SAM7S64. Это атмеловский ARM7 с аппаратным USB. Стоит баксов 8 если не ошибаюсь. Уже с завода есть бут, заливающий прошивку через USB. Причем этот бут невозможно повредить. Многи из читателей вам сразу скажут что ARM от атмел г**но берите LPC. Дело ваше. Я в настоящий момент понемножку изучаю этот самый SAM7S64 и параллено LPC2378. Ниче положительного об LPC сказать не могу. А с документацией и софтом для программирования у атмел гораздо лучше.
Go to the top of the page
 
+Quote Post
motoprogger
сообщение Aug 20 2008, 12:06
Сообщение #12


Частый гость
**

Группа: Новичок
Сообщений: 75
Регистрация: 19-08-08
Из: г. Омск
Пользователь №: 39 697



Если смотреть на ARM - есть ли ARM-микроконтроллеры в корпусе DIP? Я один видел, но он стоил куда дороже аналога в QSOP...
Цитата
Если скажем взять на 4МГц, то это примерно 1000 тактов мк на один такт генератора

Как так???
Цитата
(f=400 кГц)

Мне кажется, 4 МГц всего в 10 раз больше, чем 400 кГц...
Прошить любой контроллер по USB, UART, SPI для меня не проблема, если знать протокол. Не найду программы - сам запишу. А вообще буду писать бутлоадер под USB, эмулирующий интерфейс Motorola Flash (он уже давно разобран досконально, через него телефоны Motorola прошиваются).
Go to the top of the page
 
+Quote Post
Sergei_Ilchenko
сообщение Aug 20 2008, 12:36
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 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В. Ох как неудобно sad.gif

Ряд вопросов.
Модуль зажигания будет штатный?
Какая машина?
Двигатель?
Прерыватель зажигания установлен контактный или датчик Холла?
Уровни сигналов с прерывателя?
Если контактный - нужно будет делать антидребезг?
Что выбрать в качестве силового ключа для катушки зажигания? (если не модуль)

Вот, что кто-то уже сделал и автолюбители нахваливают smile.gif http://silych.h10.ru/about1.htm

Вот схема Январь 5.1http://www.almisoft.ru/files/janvar51.rar - посмотрите, позновательно.

Может предусмотреть возможность использования датчика детонации (ДД)?
Типовые схемы преобразователей можно срисовать со схемы Января.
Обратить внимание, что применяются два типа датчиков - широкополосный и узкополосный. Ввиду этого используются слегка разные ИС.

Если не будет ДД, то подразумевается ли корректировка УОЗ вручную? Клавиатурка, энкодер?

Вольтметр не хотите-ли smile.gif А тахометр? Дисплейчег опять-же, цифр на 5.

В классику когда-то ставил себе Октан-4. Прямой ссылки на описание не нашел. Встречаются только обрывки. Если поищите, можно подчерпнуть немного информации.
Еще поиском по слову ОКТАН можно найти примеры схемных решений.

Схема стабилизатора питания МК? Линейный или импульсный? В Январе - линейный, думаю не просто так smile.gif Диапазон допустимых входных напряжений должен быть 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/ Зачитаетесь wink.gif
Go to the top of the page
 
+Quote Post
motoprogger
сообщение Aug 20 2008, 13:24
Сообщение #14


Частый гость
**

Группа: Новичок
Сообщений: 75
Регистрация: 19-08-08
Из: г. Омск
Пользователь №: 39 697



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

Сообщение отредактировал motoprogger - Aug 20 2008, 13:28
Go to the top of the page
 
+Quote Post
GDI
сообщение Aug 21 2008, 08:12
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



SPI есть во всех АВР микроконтроллерах, за исключением разве что каких нибудь совсем слабеньких 8и ногих Tiny


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 17:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.01498 секунд с 7
ELECTRONIX ©2004-2016