Перейти к содержанию
    

Выбор нового микроконтроллера. На чём остановиться.

Здравствуйте. Переделываю сейчас преобразователь интерфейсов. Программка простая, всё просто.

Раньше там стояла ATtiny4313 с кварцем на 20 МГц. Её вполне хватало.

 

В процессе работы потребовалось вдвое увеличить частоту передачи данных. И её скорости уже не хватает.

 

Посоветуйте, что бы мне туда поставить? Чтобы и по скорости с запасом хватало и по цене приемлемо.

 

Думал вначале LPC2101 использовать. Но это уже как-то несовременно.

Или кортексы семейства LPC17ХХ может?

Или может PIC-контроллеры?

 

Одним словом, хотелось что-нибудь среднее между AVR и AM-ом. Посоветуйте, что лучше выбрать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Из Вашего сообщения не ясно: скорости чего Вам не хватает в МК ?

Одно дело - например, USART не может физически передавать данные со скоростью вдвое больше, чем в настоящее время. Совсем другое - ядро МК загружено на 100% обработкой первичных данных, снятых с датчиков...

 

Очень часто я наблюдал, как неправильная организация вычислительного процесса в МК приводит к замедлению его работы. "Правильная" программа ускорялась в разы ! :rolleyes:

ИМХО, "фишка" МК в том, что отдельные его части могут (и должны!) работать впараллель. Например, пока АЦП производит преобразование сигнала в цифровой вид, в это время производится обработка предыдущего преобразования, а USART выдаёт "наружу" предыдущие обработанные данные.

Примерно такая организация программы - классика "правильной" программы. По сравнению с простым линейным алгоритмом (замер - обрабка - передача) вполне можно ускорить выполнение вдвое.

Это - не Ваш ли случай ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ИМХО, "фишка" МК в том, что отдельные его части могут (и должны!) работать впараллель. Например, пока АЦП производит преобразование сигнала в цифровой вид, в это время производится обработка предыдущего преобразования, а USART выдаёт "наружу" предыдущие обработанные данные.

 

У ARM есть преимущество перед AVR в наличии DMA на всех интерфейсах, поэтому преобразователи интерфейсов типа

UART<->USB, SSC<->SDIO и т.д. вообще не грузят ядро если данные перекидываются без преобразования.

Другое дело что индусы разводившие кристаллы запитали все блоки от частоты ядра и если вам нужен UART->SPI на 10MГц, то ядро будет пахать рядом на 20МГц и кушать питание, особенно у кортексов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не хватает именно скорости. А именно скорости реакции на внешние прерывания. Т.е. в AVR-ках время отклика на внешние прерывания достигает ~6 тактов (минимальное). Плюс ещё прочесть состояние порта, выставить состояние порта. А собственно программка простая: в зависимости от очерёдности внешних прерываний и состояния одного пина на второй пин подаём 1 или 0 согласно таблицы. Там по осциллографу видно, что сдвиг между изменением уровня на входе (внешним сигналом) и реакцией на выходе составляет 1,5 мкс. Этого уже много. Вот я и думаю что делать. Смотрел в сторону FPGA, но это пока для меня тёмный лес. Конечно, в будущем придётся их ставить.

А пока, действительно, посмотрел LPC11XX. Очень хорошие. Спасибо за совет. Думаю, они от LPC2000 не сильно отличаются.

 

P.S.

 

Смотрю LPC1102. До чего прогресс дошёл...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

берите CPLD

 

гораздо проще и понятливо

http://www.ami.ac.uk/courses/ami4460_fpga/...s/Screen001.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Смотрел в сторону FPGA, но это пока для меня тёмный лес. Конечно, в будущем придётся их ставить.

 

Смотрите в сторону CPLD. Я как-то даже на ATF1504 подобные поделки делал, сейчас наверно надо на Lattice смотреть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

До чего прогресс дошёл...

Приходили недавно в гости представители AD и авторитетно заявили, что ихние кортексы ADuCM3xx рвут наш любимый MSP430 по всем показателям, в т.ч. и по потреблению.

Так что, имхо, нынче нет смысла применять что-то мельче СМ3, если только нет экстремальных требований к цене.

Кстати, они и по цене могут многих уделать.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так что, имхо, нынче нет смысла применять что-то мельче СМ3, если только нет экстремальных требований к цене.

Разве что CM0, CM0+.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да. Похоже, пока не освоил CPLD, буду Cortex M0-M3 использовать. Скажите, а в CPLD есть аналог Power-Down и Wake-Up по внешнему прерыванию?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да. Похоже, пока не освоил CPLD, буду Cortex M0-M3 использовать.

если конечная цель CPLD то зачем промежуточный шаг ? Если только ради ознакомления.

 

Скажите, а в CPLD есть аналог Power-Down и Wake-Up по внешнему прерыванию?

 

Standby current as low as 25 μA and fast power-down/reset operation

http://www.altera.com/literature/hb/max-v/max5_handbook.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пошёл читать документацию. Всем большое спасибо за исчерпывающие ответы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...