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

 
 
 
Reply to this topicStart new topic
> Посоветуйте МК
CombaSoft
сообщение Aug 2 2008, 16:33
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 2-08-08
Пользователь №: 39 386



Подскажите пожалуйста подходящий микроконтроллер.
Задача у контроллера такая - за короткий цикл ( 100 кГц ++ ) посчитать несколько значений синусов + небольшие арифметические расчеты. Желательно, что бы у МК было относительно большое число портов ввода-вывода ( 40+ ножек ). Обязательно наличие I2C, SPI. Если на борту будет несколько ЦАПов разрядностью 10-12 бит - будет совсем хорошо. Так же хотелось бы увидеть линки на ПО для написания программ под этот МК (лучше на С), схему программатора...
До этого сидел только на Atmega 16 и Atiny 2313, так что ищу полный комплект для ухода на новую платформу.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Aug 2 2008, 17:50
Сообщение #2


Гуру
******

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



Цитата(CombaSoft @ Aug 2 2008, 19:33) *
Подскажите пожалуйста подходящий микроконтроллер.
Задача у контроллера такая - за короткий цикл ( 100 кГц ++ ) посчитать несколько значений синусов + небольшие арифметические расчеты...

Я выбрал для такой задачи dsPIC30/PIC24 с внешними ЦАПами. Вся инфа и софт на сайте микрочипа.
Ну а необходимость расчета синусов может быть сильно преувеличена - я собираюсь использовать таблицы и целочисленную арифметику.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
CombaSoft
сообщение Aug 2 2008, 18:14
Сообщение #3





Группа: Новичок
Сообщений: 5
Регистрация: 2-08-08
Пользователь №: 39 386



В первом варианте предполагалось использовать Atiny2313 в качестве ЦАПа - туда я зашил табличный синус. Была возможность угрублять отсчеты - в 1, 2,4 и 8 раз. На контроллер шло четыре управляющие ножки - step+, step-, div_0, div_1. 16-я мега управляла несколькими такими ЦАПами на 2313. И получалась довольно-таки неплохая скорость и ног 16-й меги хватало.
Однако пока я делал этот вариант изменилось ТЗ - теперь нужно именно считать синус, т.к. требовалось получать его значение практически для любого угла ( в пределах разрешения 10 бит ЦАПа ).
Go to the top of the page
 
+Quote Post
SIA
сообщение Aug 2 2008, 18:53
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 462
Регистрация: 26-06-07
Пользователь №: 28 723



Цитата(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 бит.
Go to the top of the page
 
+Quote Post
Mik174
сообщение Aug 2 2008, 19:11
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 357
Регистрация: 6-01-07
Пользователь №: 24 139



Посмотрите на АРМ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 ноги портов ввода/вывода

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

Весьма приятная вещь, сам сейчас осваиваю, пока все нравится.
Go to the top of the page
 
+Quote Post
CombaSoft
сообщение Aug 2 2008, 19:52
Сообщение #6





Группа: Новичок
Сообщений: 5
Регистрация: 2-08-08
Пользователь №: 39 386



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


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


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

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


Бегло посмотрел документацию - вцелом приятные впечатления, но смущает то, что она CISC
и не нашел там хотя бы примерного определения производительности - 60мГц тактировки это хорошо,
но за сколько тактов выполняется "средняя" команда ?
Go to the top of the page
 
+Quote Post
Mik174
сообщение Aug 2 2008, 22:17
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 357
Регистрация: 6-01-07
Пользователь №: 24 139



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


система команд там RISC
места в даташите сейчас не покажу - не помню, но что-то вспоминается что в среднем одна команда на такт
т.е. при 60 МГц, по-идее, получится 60 миллионов операций в секунду
Go to the top of the page
 
+Quote Post
LamerMan
сообщение Aug 3 2008, 03:42
Сообщение #8


Участник
*

Группа: Новичок
Сообщений: 44
Регистрация: 9-03-08
Пользователь №: 35 755



Для arm также очень много хорошего бесплатного по для разработки и отладки. Я использую gcc + gdb + openocd + netbeans для nxp и отладочный интерфейс olimex arm-usb-tiny. Это для linux, для виндовса по моему есть портированные версии, вроде winarm называется. Получается очень качественная среда разработки за 0 рублей smile.gif

Сообщение отредактировал LamerMan - Aug 3 2008, 03:43
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 3 2008, 07:55
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Mik174 @ Aug 3 2008, 00:17) *
..что в среднем одна команда на такт

Ну не в среднем smile.gif, но регистровые команды естественно за такт. С обращеним к Flash, естественно начинаются waitstates (их компенсация через MAM - только у LPC). Есть и очень длиные команды - типа сохранения всех регистров в стек. Но массовка однотактовая.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

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

 


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


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