roboforum.ru

Технический форум по робототехнике.

 

МикроКонтроллер AVR начинающим - общие вопросы

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение Michael_K » 02 апр 2010, 16:02

Если вы хотите использовать именно I2C,
то имеет смысл посмотреть в сторону MSP430 (TI), LPC (NXP), STR7 (ST), STM32 - там поддержка i2c
гораздо более "внятная", чем на АВРках, имхо. Есть множество кристаллов с двумя (и больше) i2c на борту.

Вообще, хочу заметить, что протокол I2C не подразумевает гарантированного времени доставки
(несмотря на то, что про это часто "забывают"), и что производительность канала связи и алгоритма
разбора протокола ("упрощенного XML") станет узким местом на верхнем уровне.
(да и на нижних наложит определенные ограничения на проц).

Ну а принципиально - да. все реально :)
Аватара пользователя
Michael_K
 
Сообщения: 6034
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение greyder » 02 апр 2010, 23:57

Michael_K писал(а):Если вы хотите использовать именно I2C

Это то немногое что я успел прочитать. Может есть что лучше для небольших AVR?

Michael_K писал(а): MSP430 (TI), LPC (NXP), STR7 (ST), STM32

Больно много ножек. А если серьезно -- я просто с ними не справлюсь. Хотя камушки очень интересные.

Трафик можно уменьшить за счет частичной обработки данных на промежуточных уровнях (на то они и контролеры). Разбор XML не так сложен как кажется на первый взгляд. В основном это как искать подстроку в строке.
greyder
 
Сообщения: 23
Зарегистрирован: 31 мар 2010, 16:15

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение Michael_K » 03 апр 2010, 01:34

greyder писал(а):
Michael_K писал(а):...I2C

...Может есть что лучше для небольших AVR?


Что лучше... Хммм... Это сииильно от задачи зависит :wink:
Если задача ставится "сделать что-нибудь", то и лучше будет "что-нибудь" :) :pardon: Сорри.

Реализация I2C в аврках с моей точки зрения не очень удачная...
(Например, чтобы слейва сделать на прерывании - там надо неделю с бубном плясать.)

greyder писал(а):
Michael_K писал(а): MSP430 (TI), LPC (NXP), STR7 (ST), STM32

Больно много ножек. А если серьезно -- я просто с ними не справлюсь.

Это все "предрассудки", по-моему :)
MSP430 - вообще мелких много, и в корпусах DIP есть (правда с двумя I2C в ДИП нету).
LPC2101 - чуть ли не самый простой из армов - это всего 48 ног (правда в QFP-корпусе) и два I2C на борту,
и стОит всего пару баксов - однозначно дешевле навороченных АВРок.
Работать с ними - ничуть не сложнее, чем с АВР-ками...
(Я же специально на простые камешки показал, а не на AVR32 и блэкфины какие-нибудь :))

Ну это так - личные ощущения... и оффтопик :wink:
Не хотелось бы холиворов тут разводить. Минусы свои там тоже есть, конечно.

По поводу "всего лишь поиск подстроки"... вы оцените объем памяти, количество элементарных операций и т.д.
Это несложно, конечно - просто, по-моему, достаточно ресурсоемко для мелких чипов.
Впрочем, это тоже зависит от многого, сколько вы данных хотите передавать,
какие подстроки искать, как часто... :pardon:
Аватара пользователя
Michael_K
 
Сообщения: 6034
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение ZuOverture » 03 апр 2010, 19:54

Подскажите, пожалуйста, если в свойствах Unknown USB Device в поле Device Instance ID пишется USB\VID_0000&PID_0000 - это означает, что девайс не прошел enumeration (процедуру состыковки с хабом)? Что в таком случае может означать запись libusb0 в поле Class upper filters (была попытка установить драйвера для USB из комплекта Flip 3.4.1 вручную из *.inf, т.к. стандартная процедура утверждает, что драйвера и так стоят самые подходящие)? Платка на основе AT90USB647 с питанием от USB же, самоделка.
ZuOverture
 
Сообщения: 5
Зарегистрирован: 10 фев 2010, 23:08
Откуда: Екатеринбург

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение greyder » 05 апр 2010, 10:10

Только что у меня была похожая проблема с проводком (преобразователь USB-COM) для Simens S25 на pl2303 пишет Unknown USB Device с примерно таким же ID (после PID_0000 было еще немного мусора на разных машинах разный). Вылечил это отрезав старый USB провод от платы к компьютеру и припаяв другой от мышки. Также имеет смысл проверить соответствие D+ и D- (обычно белый и зеленый проводки).
greyder
 
Сообщения: 23
Зарегистрирован: 31 мар 2010, 16:15

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение Gevorg » 21 апр 2010, 16:20

Привет всем.
Ребят, непонятная ситуация со срабатыванием таймера 1 по совпадению на atmega 8.

Допустим, OCR1A = 0x0008, все работает, счетчик считает, TCNT1 увеличивается. TCNT1 = 8, ничего не происходит. Как только TCNT1 = 9, только тогда! устанавливается бит OCF1A, и соответственно вызывается прерывание.

Вопрос: Так и должно быть? можно ли добиться того, чтобы бит OCF1A выставлялся как только TCNT1 = OCR1A?

Пишу в Code Vision. симулировал в AvrStudio.

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 2000,000 kHz
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: On
// Compare B Match Interrupt: Off

TCCR1A=0x00;
TCCR1B=0x02;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
OCR1AH=0x00;
OCR1AL=0x08;
Gevorg
 
Сообщения: 8
Зарегистрирован: 25 окт 2008, 18:09
Откуда: Moscow City
прог. языки: Си, Pascal

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение avr123.nm.ru » 21 апр 2010, 16:50

Временные диаграммы событий в даташите есть
а по вашему рассказу можно просто число на 1 меньше записывать в OCR
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14200
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение Gevorg » 21 апр 2010, 20:15

Спасибо, попробую посмотреть диаграммы в даташите...
мне просто необходимо, чтобы прерывание иногда вызывалось через такт таймера, сразу по равенству регистров...
Буду искать...
Gevorg
 
Сообщения: 8
Зарегистрирован: 25 окт 2008, 18:09
Откуда: Moscow City
прог. языки: Си, Pascal

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение Gevorg » 22 апр 2010, 00:19

Цитата из Евстифеева:
Регистр OCR1A входит в состав блока сравнения. Во время работы таймера производится непрерывное (в каждом машинном цикле) сравнение этого регистра с TCNT1 В случае равенства в следующем машинном цикле устанавливается флаг OCF1A регистра TIFR и генерируется прерывание.
А на деле флаг устанавливается не спустя 1 машинный цикл, а спустя один таймерный цикл. Так и должно быть? или это глюк AVR Studio? Кода? В Proteuse аналогтчно AVR... :(
Gevorg
 
Сообщения: 8
Зарегистрирован: 25 окт 2008, 18:09
Откуда: Moscow City
прог. языки: Си, Pascal

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение Michael_K » 22 апр 2010, 00:56

Че вы читаете фигню всякую - даташиты читать надо.
Там даже подчеркнуто это место :)
Аватара пользователя
Michael_K
 
Сообщения: 6034
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение ADonis » 22 апр 2010, 14:49

Всем привет, короче, тут такая тема:

Есть тини2313 с заводскими установками.
Есть авр910 по Протоссу
Есть CodeVisionAVR

Создаю проект. Выставляю только 8 МГц частоту ядра (как и есть у тини2313 по дефолту), и портД назначаю выходом все биты.

Генерится проект, в коде пишу только 1 строчку:
PORTD.5=1;
Все, делаю мейк, прошиваю, все компилится и шьется без ошибок. Но блин, НЕ РАБОТАЕТ!
Никак не меняется состояние ноги! Блин, надо сделать шефу срочно одну ерундовину, но не могу сделать :cry:
Хто знает в чем проблема?
Считываю с чипа нормально прошивку, фиг его знает, что это такое.
Помню, что когда-то именно из-за этого отказался от CodeVisiona, но сейчас не могу, т.к. есть только USB.

Плиз, в чем косяк может быть? Уже все истыкал :cry:
В гугле есть все! Даже то, чего еще нет!

Не спорь с холостяком о макаронах!
Аватара пользователя
ADonis
 
Сообщения: 106
Зарегистрирован: 30 дек 2009, 08:16
Откуда: Омск
Skype: hedgehoguse

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение Michael_K » 22 апр 2010, 14:51

Ногу на выход настрой, истыкатель, млин.
Аватара пользователя
Michael_K
 
Сообщения: 6034
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение boez » 22 апр 2010, 15:12

Он же написал, что настроил :)

Не генери нифига вообще. Напиши в main только 2 команды: DDRD = 0x20; PORTD = 0x20; и проверь, что там на ноге - 0, 1 или Z? Если 0 - бред или нога сконфигурена как выход ШИМ (хотя быть такого не может), если 1 - все ОК, копай дальше, если Z - прога видимо не выполняется.
boez
 
Сообщения: 1974
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение avr123.nm.ru » 22 апр 2010, 16:41

ADonis писал(а):Выставляю только 8 МГц частоту ядра (как и есть у тини2313 по дефолту)


Сумлеваюсь.

Рекомендую прожект выложить и PROTEUS использовать ИНТЕНСИВНО !

Добавлено спустя 6 минут 13 секунд:
boez писал(а):Не генери нифига вообще.


Ни в коем случае ! ГЕНЕРАТОРЫ кода это ЗЛОООООООООО !!!

Слушай вот товарища:

boez писал(а):Напиши в main только 2 команды: DDRD = 0x20; PORTD = 0x20;


Конечно этот код компилятор не сможет скомпилировать.
Но всеравно слушай совет !

А генератор кода нетрожь !

Ведь код сделаный генератором обычно работает и кайфа познания не будет.
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14200
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: МикроКонтроллер AVR начинающим - общие вопросы

Сообщение ADonis » 22 апр 2010, 17:47

Вот сейчас только что поменял версии, была 1.24.8b, пробовал 1.25.3. Потом 1.25.8, 1.25.9 у обеих вылетает ошибка при мейке: Error(s) occured during assembly.
Ругается, что вот это:
RJMP _main
андефайнд символ %)
А кто-то говорит, что код генератора работает ;)

Нифига. Теперь я ваще в ступоре.

У тини2313 судя по онлайн-калькулятору действительно 8МГц частота по умолчанию.


Попробовал поменять кристалл, благо в запасе лежит еще один. Такая же ерунда. Что само тупо - 1 раз сработало элементарное выставление 1 на ногу. Поигрался маленько, подал сначала 1, потом переписал, подал 0, затем снова 1, нифига, опять все свалилось и ничего не пашет :(
Не знаю даже, че делать и вообще где может быть косяк. Я же не перегенерировал проект заново, лишь менял одну строку, почему опять ничего не работает, не пойму нифига :(
Последний раз редактировалось ADonis 22 апр 2010, 18:00, всего редактировалось 1 раз.
В гугле есть все! Даже то, чего еще нет!

Не спорь с холостяком о макаронах!
Аватара пользователя
ADonis
 
Сообщения: 106
Зарегистрирован: 30 дек 2009, 08:16
Откуда: Омск
Skype: hedgehoguse

Пред.След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: Yahoo [Bot] и гости: 2

Mail.ru counter