Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Посоветуйте МК
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
CombaSoft
Подскажите пожалуйста подходящий микроконтроллер.
Задача у контроллера такая - за короткий цикл ( 100 кГц ++ ) посчитать несколько значений синусов + небольшие арифметические расчеты. Желательно, что бы у МК было относительно большое число портов ввода-вывода ( 40+ ножек ). Обязательно наличие I2C, SPI. Если на борту будет несколько ЦАПов разрядностью 10-12 бит - будет совсем хорошо. Так же хотелось бы увидеть линки на ПО для написания программ под этот МК (лучше на С), схему программатора...
До этого сидел только на Atmega 16 и Atiny 2313, так что ищу полный комплект для ухода на новую платформу.
Dog Pawlowa
Цитата(CombaSoft @ Aug 2 2008, 19:33) *
Подскажите пожалуйста подходящий микроконтроллер.
Задача у контроллера такая - за короткий цикл ( 100 кГц ++ ) посчитать несколько значений синусов + небольшие арифметические расчеты...

Я выбрал для такой задачи dsPIC30/PIC24 с внешними ЦАПами. Вся инфа и софт на сайте микрочипа.
Ну а необходимость расчета синусов может быть сильно преувеличена - я собираюсь использовать таблицы и целочисленную арифметику.
CombaSoft
В первом варианте предполагалось использовать Atiny2313 в качестве ЦАПа - туда я зашил табличный синус. Была возможность угрублять отсчеты - в 1, 2,4 и 8 раз. На контроллер шло четыре управляющие ножки - step+, step-, div_0, div_1. 16-я мега управляла несколькими такими ЦАПами на 2313. И получалась довольно-таки неплохая скорость и ног 16-й меги хватало.
Однако пока я делал этот вариант изменилось ТЗ - теперь нужно именно считать синус, т.к. требовалось получать его значение практически для любого угла ( в пределах разрешения 10 бит ЦАПа ).
SIA
Цитата(CombaSoft @ Aug 2 2008, 22:14) *
В первом варианте предполагалось использовать Atiny2313 в качестве ЦАПа - туда я зашил табличный синус. Была возможность угрублять отсчеты - в 1, 2,4 и 8 раз. На контроллер шло четыре управляющие ножки - step+, step-, div_0, div_1. 16-я мега управляла несколькими такими ЦАПами на 2313. И получалась довольно-таки неплохая скорость и ног 16-й меги хватало.
Однако пока я делал этот вариант изменилось ТЗ - теперь нужно именно считать синус, т.к. требовалось получать его значение практически для любого угла ( в пределах разрешения 10 бит ЦАПа ).

При 10-бит ЦАП более чем достаточно линейной интерполяции по не очень мелкой таблице синусов, длина четверти периода - 128 отсчетов. Если оптимизировать значения в таблице и применить 16-битную арифметику, можно обойтись 96, а то и 64 отсчетами. При этом ошибка будет меньше 1/2 МЗР 10 бит.
Mik174
Посмотрите на АРМ7 от NXP:
http://www.terraelectronica.ru/catalog.php...e=2&PageS=1

В отношении озвученной задачи:
- насчет вычислений - проц 32 разрядный, встроенное PLL дает тактовую частоту 60 МГц, скорость выполнения примерно 1:1 от тактовой
- насчет табличной реализации синуса если делать "в лоб" - есть кристаллы с памятью от 16 до 512 кБ - можно засунуть не напрягаясь нужное количество констант.
- есть один встроенный 10 разрядный ЦАП
- есть SPI и i2c
есть чипы с разным числом ног, я сейчас играюсь с LPC2148 - у него 46 ног портов ввода/вывода
на работе делается проект на LPC2378 - 144 выводный корпус и 104 ноги портов ввода/вывода

ПО - Кейл или ИАР, при желании достаточно легко находятся.
Программируется через последовательный порт или отладчик.

Весьма приятная вещь, сам сейчас осваиваю, пока все нравится.
CombaSoft
У меня сейчас 675 отсчетов на четверть ( так по ТЗ надо). Интерполяция это хорошо конечно, но математика... это уже скорость минус, а я добивался максимальной скорости - у меня там сейчас алгоритм с ветвлениями, основная часть которого реализована без условных переходов - за счет организации данных. Впрочем, я попробую сделать интерполяцию - пока что есть "окно" примерно на 100 команд.
И еще придется как-то передавать значение угла, которого надо получить. Т.е. одно из решений - на ножки "div_0" & "div_1" повесить I2C.
Спасибо за подсказку.
Но у меня все еще осталось желание освоить что-либо такое не мелкое, вроде предложенного выше пика 24-й серии. Еще подобные этому МК есть ? - хотелось бы, что бы было из чего выбрать.


Цитата(Mik174 @ Aug 2 2008, 23:41) *
.... LPC2148 ....


ПО - Кейл или ИАР, при желании достаточно легко находятся.
Программируется через последовательный порт или отладчик.

Весьма приятная вещь, сам сейчас осваиваю, пока все нравится.


Бегло посмотрел документацию - вцелом приятные впечатления, но смущает то, что она CISC
и не нашел там хотя бы примерного определения производительности - 60мГц тактировки это хорошо,
но за сколько тактов выполняется "средняя" команда ?
Mik174
Цитата(CombaSoft @ Aug 2 2008, 23:52) *
Бегло посмотрел документацию - вцелом приятные впечатления, но смущает то, что она CISC
и не нашел там хотя бы примерного определения производительности - 60мГц тактировки это хорошо,
но за сколько тактов выполняется "средняя" команда ?


система команд там RISC
места в даташите сейчас не покажу - не помню, но что-то вспоминается что в среднем одна команда на такт
т.е. при 60 МГц, по-идее, получится 60 миллионов операций в секунду
LamerMan
Для arm также очень много хорошего бесплатного по для разработки и отладки. Я использую gcc + gdb + openocd + netbeans для nxp и отладочный интерфейс olimex arm-usb-tiny. Это для linux, для виндовса по моему есть портированные версии, вроде winarm называется. Получается очень качественная среда разработки за 0 рублей smile.gif
zltigo
Цитата(Mik174 @ Aug 3 2008, 00:17) *
..что в среднем одна команда на такт

Ну не в среднем smile.gif, но регистровые команды естественно за такт. С обращеним к Flash, естественно начинаются waitstates (их компенсация через MAM - только у LPC). Есть и очень длиные команды - типа сохранения всех регистров в стек. Но массовка однотактовая.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.