|
Выбираю микроконтроллер, есть несколько вопросов про 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
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 25)
|
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
|
|
|
|
|
Aug 21 2008, 09:12
|
Частый гость
 
Группа: Свой
Сообщений: 148
Регистрация: 26-05-05
Пользователь №: 5 416

|
Цитата(motoprogger @ Aug 20 2008, 16:06)  Мне кажется, 4 МГц всего в 10 раз больше, чем 400 кГц... Ошибся)) Цитата(motoprogger @ Aug 20 2008, 16:06)  Прошить любой контроллер по USB, UART, SPI для меня не проблема, если знать протокол. Не найду программы - сам запишу. А вообще буду писать бутлоадер под USB, эмулирующий интерфейс Motorola Flash (он уже давно разобран досконально, через него телефоны Motorola прошиваются). Тогда идём сюда и читаем следующие документы: AVR060: JTAG ICE Communication Protocol AVR061: STK500 Communication Protocol AVR109: Самопрограммирование AVR230: DES Bootloader AVR231: AES Bootloader AVR910: In-System Programming AVR911: AVR Open Source Programmer AVR309: Программная реализация универсальной последовательной шины (USB)
|
|
|
|
|
Aug 22 2008, 03:43
|
Участник

Группа: Свой
Сообщений: 68
Регистрация: 29-12-06
Из: Омск
Пользователь №: 23 999

|
Цитата(motoprogger @ Aug 19 2008, 18:29)  В качестве примера для первого проекта я выбрал электронный регулятор угла опережения зажигания для комбинированного (бензин/газ) карбюраторного двигателя внутреннего сгорания. О! Молодец, земляк! Какая машина? Я собирал такую бодягу. С индикатором и клавиатурой для управления. Очень долго мучился с помехами: мега слетала после включения любого потребителя. Принцип управления в том, чтобы менять задержку подачи импульса на катушку в зависимости от частоты вращения КВ. Опорным датчиком импульсов служит ДХ на трамблере в положении 0град (или ДПКВ, что сложнее). Для точного регулирования угла нужна неплохая тактовая. Используй Mega88. Для связи с компом м/сх MAX232. Управление - на "тазиковский" коммутатор. 0 - накачка, 1-искра, длительность импульса мин. 3 мс. Генератор тактов внешний 20 МГц. по ВСЕМ задействованным входам меги и RESET конденсаторы 0.1 мкф на землю и резисторы 100 Ом последовательно Для графика УОЗ я использовал 6 опорных точек с интерполяцией между ними. Отдельных вход от газового клапана для переключения таблиц. Задержка делается так: INT0 - прерывание от ДХ. Вычисляется частота между интами, и из таблицы берется задержка и записывается в OCR1А со сбросом TCNT1. Включается накачка катушки зажигания. Второе прерывание на Timer1Compare - Включает искру. Все операции с компом можно делать в главном цикле.
|
|
|
|
|
Aug 22 2008, 06:16
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(uriy @ Aug 20 2008, 13:00)  Может быть вам стоить посмотерть на AT91SAM7S64. ... Уже с завода есть бут, заливающий прошивку через USB. Причем этот бут невозможно повредить. Повредить загрузчик невозможно, зато в какой-то момент начинает отваливаться процедура восстановления загрузчика на некоторых кристаллах. Цитата(uriy @ Aug 20 2008, 13:00)  Многи из читателей вам сразу скажут что ARM от атмел г**но берите LPC. Серия S именно это. X получше.
|
|
|
|
|
Aug 22 2008, 06:22
|

Частый гость
 
Группа: Свой
Сообщений: 186
Регистрация: 14-01-06
Из: Украина, г.Харьков
Пользователь №: 13 168

|
Цитата(aaarrr @ Aug 22 2008, 09:16)  Повредить загрузчик невозможно, зато в какой-то момент начинает отваливаться процедура восстановления загрузчика на некоторых кристаллах. Вот у меня такое произошло с SAM7S128 (SAMBA перестала нормально восстанавливаться и при этом еще перестал нормально работать J-TAG - постоянные сбои, которые лечатся только выключением). Это как-то лечится ?
|
|
|
|
|
Aug 22 2008, 06:45
|

Частый гость
 
Группа: Свой
Сообщений: 186
Регистрация: 14-01-06
Из: Украина, г.Харьков
Пользователь №: 13 168

|
Цитата(aaarrr @ Aug 22 2008, 09:34)  Нет. Разве что можно попробовать стереть кристалл через пин ERASE и увеличить время подачи TST. Если не поможет - в морг. Да, именно так и пробовал. Иногда самба восстанавливается... но j-tag-у это не помогает. Придется видимо покупать другой и перепаивать...
|
|
|
|
|
Aug 22 2008, 12:56
|
Частый гость
 
Группа: Новичок
Сообщений: 75
Регистрация: 19-08-08
Из: г. Омск
Пользователь №: 39 697

|
Цитата О! Молодец, земляк! Какая машина? Читай выше. ВАЗ-21011. Цитата Опорным датчиком импульсов служит ДХ на трамблере в положении 0град Не знаешь, на пусковых (0-800) оборотах какой УОЗ лучше всего? Установочный, нулевой или между ними? Если делать установочный, то ставить на него ДХ и уже от установочного формировать характеристику. Цитата Для точного регулирования угла нужна неплохая тактовая. Я выше написал: f=400 кГц, что на частоте 6000 об/мин даёт погрешность 0,09 градуса. Плюс прочие факторы - не думаю, что больше 0,2 градуса. Тактовая процессора - выше я прикидывал, сколько операций надо. Цитата Используй Mega88. Для связи с компом м/сх MAX232. Контроллер себе как-нибудь подберу, а для связи с компом придётся юзать PL2303, т. к. на ноутбуках нет COM-портов. Цитата Для графика УОЗ я использовал 6 опорных точек с интерполяцией между ними. Отдельных вход от газового клапана для переключения таблиц. Насчёт графика УОЗ - информацию беру из "Радиоежегодника" за 1990-й год, там, кроме наброска характеристики из 5 точек с квадратичной интерполяцией, ещё довольно интересный коммутатор и принцип управления энергией искры. Только аналоговый блок управления заменю на микроконтроллер. Цитата Управление - на "тазиковский" коммутатор. 0 - накачка, 1-искра, длительность импульса мин. 3 мс. Хотел оставить прежний, ВАЗовский, на перспективу - собрать и поставить вышеупомянутый Вход - намерен брать с обоих клапанов, если оба закрыты - выдавать характеристику для последнего открытого. Если при включении оба были закрыты - вообще не давать искру.
Сообщение отредактировал motoprogger - Aug 22 2008, 13:01
|
|
|
|
|
Aug 25 2008, 04:10
|
Участник

Группа: Свой
Сообщений: 68
Регистрация: 29-12-06
Из: Омск
Пользователь №: 23 999

|
Цитата(AHTOXA @ Aug 22 2008, 16:00)  куча характеристик УОЗ под разные авто. Вот именно, что такая куча...  поди найди под свой Я делал по вот такой штуке:
|
|
|
|
|
Aug 25 2008, 05:02
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(Syberian @ Aug 25 2008, 10:10)  Вот именно, что такая куча...  поди найди под свой Надо просто знать, как называется твоя машина  Цитата Я делал по вот такой штуке: А где зависимость от нагрузки (разрежения)?
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|