посоветуйте микроконтроллер

Тема в разделе "WASM.ELECTRONICS", создана пользователем cupuyc, 14 дек 2009.

  1. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    решаю задачу, в которой нужно выполнять довольно много операций с числами с плавающей точкой. сейчас используется atmega32 на частоте 16мгц. рассчёт по формуле она делает около 30ms. нужно, чтобы было ~1..3ms, т.е. производительность нужно поднять раз этак в 30. понятно, что увеличение тактовой частоты здесь много не даст. думаю, имеет смысл заюзать какой-нибудь 32х арм.
    проблема в том, что не могу найти ни одного арма в DIP корпусе. можно было бы заюзать и TQFP/MLF, но я не умею паять ножки на расстоянии 0.5 мм, да и плату с таким плотным монтажом в моих условиях вытравить не удастся.
    1. посоветуйте, если есть, контроллер, подходящий для моей задачи, желательно, в DIP корпусе
    2. если мощных DIP'ов не бывает - посоветуйте выход, как в домашних условиях распаять TQFP/MLF.
     
  2. KingT

    KingT Member

    Публикаций:
    0
    Регистрация:
    12 янв 2006
    Сообщения:
    205
    32 bit в dip не встречал.
    http://easyelectronics.ru/pajka-planarnyx-mikrosxem-samodelnoj-mikrovolnoj.html#more-99
    Плату делай лутом.Сам юзаю фоторезист.0.3мм без проблем.
     
  3. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    build STM32 evaluation board for less than $20
     
  4. bohdant

    bohdant New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    22
    Вот ссылочка, я думаю тебе подойдет:
    http://www.evodbg.com/index.php?option=com_content&task=view&id=19&Itemid=46

    У нас например на радиобазаре их платы продаются, качество хорошое. Но например в плате USB-FIFO подписи не правильные.
     
  5. bohdant

    bohdant New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    22
    а еще, можно ж утюгом разводить :)
     
  6. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    АРМов в ДИП-корпусах не существует, насколько мне известно. Проще взять готовый процессорный модуль, на котором распаян сам проц, ОЗУ и ПЗУ. Ну и разъёмы для подсоединения всего, что нужно.
     
  7. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    ру
    http://www.evodbg.com/index.php?option=com_content&task=blogsection&id=5&Itemid=38
    http://starterkit.ru/html/index.php?name=shop&cat=6
    http://www.ldm-systems.ru/price_konstructors.htm

    уа
    http://www.flycont.com/html/prog_kit.html

    есть и дешевле. тут главное поискать
     
  8. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    по поводу плат. есть один сайтик - http://starterkit.ru/. вот не знаю - имеет ли смысл вообще юзать такие мозги для моей задачи.. зато всё просто. пишешь прогу (!!! не прошивку) под линь, закидываешь на флешку - делаешь почти любые вычисления, генерируешь любые сигналы.. красота :)))
     
  9. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    cupuyc
    есть смысл. разве только вы умеете травить и распаивать многослойные платы с шагом 0.5 мм. это в лучшем случае.
    кстати, если вам надо не один, то можно заказать разводку/сборку. раз в несколько дешевле может выйти.

    ЗЫ отладочную можно и дешевле найти
     
  10. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    похоже, нашёл то, что нужно. http://www.terraelectronica.ru/pdf/PROPOX/MMSAM7S256-2.pdf контроллер at91sam7s256 может работать на тактовой частоте до 55Мгц. на плате установлен кварц 18.432MHz. Могу ли я для разгона просто поменять кварц - вместо 18.432MHz поставить на 50мгц (ну, ещё если нужно, установить фузы) или не всё так просто?
     
  11. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    cupuyc
    Это надо вникать. АРМ -- это не АТмега, там далеко не так просто. В частности, надо смотреть, какая периферия (память, в частности) подключена к процессору и что будет твориться с частотами для неё.
     
  12. letopisec

    letopisec New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2004
    Сообщения:
    228
    cupuyc
    Там PLL умеет умножать частоту.
     
  13. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    letopisec
    Угу, но вроде как есть ограничения. Я в АРМ только начал вникать, поэтому утверждать не буду, но пока сложилось именно такое впечатление (что частоты будут подстроены автоматом только в определённых пределах).

    Правда, применительно к этой задаче есть другой вопрос: а нужен ли разгон вообще? АРМ -- достаточно мощный процессор, так что и на 18,5 МГц может сделать очень многое...
     
  14. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    SII letopisec
    большое спасибо за советы. я сам ещё не вникал, да и плата придёт ещё только через 2 недели.
    что касается разгона - я не могу даже предположить насколько эффективно арм будет справляться с моей задачей. критерий тут один - скорость вычисления тригонометрических функций, логарифмов и пр. операций с плавающей точкой. в своём первом посте я указал время вычислений: atmega32 на частоте 16мгц рассчитывает выражение ~ 30мс, нужно в 10 раз меньше. + возникли проблемы с нехваткой памяти. в арме с памятью проблем точно не будет. надеюсь, что с производительностью тоже :))
     
  15. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    cupuyc
    http://www.atmel.com/dyn/resources/prod_documents/6175s.pdf
    В этом документе написано что ядро может работать на частотах до 55МГц, а flash с программой без циклов ожидания на частотах до 30МГц.
     
  16. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    cupuyc
    ну чтож вы тогда спешите так деньги выбрасывать? арм - это ж ядро только. целочисленное. а обвеска может быть любая. в том числе и достаточно серьезное фпу
    http://en.wikipedia.org/wiki/Texas_Instruments_OMAP
    внизу там смотрите.

    (и неужели заказать плату дешевле и проще, чем заюзать старый смарт/покет? учитывая, что под последние есть тулчейны, мастера, эмули, отладчики, примеры, дока, комунити? камень то один, потом перенести несложно будет (ээмм, тут сильно зависит от непользования непереносимыми "удобствами"). ну и частоты в них >> 50мгц)
     
  17. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    А формулу не пробовал упростить?
    Если можно, формулу в студию.
    Мне стало интересно, что там за... "Сложная формула" и какая нужна точность расчета?
     
  18. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    Код (Text):
    1. static const t_double paw_lever_width = 18.0;
    2. static const t_double paw_lever_height = 19.0;
    3. static const t_double draft_len = 28.0;
    4. static const t_double servo_lever = 9.0;
    5. static const t_double paw_opt_1 = 12.0;
    6. static const t_double paw_opt_2 = 24.0;
    7. static const t_double paw_opt_3 = 8.75;
    8. static const t_double paw_opt_4 = 30.0;
    9. static const t_double paw_opt_5 = 12.94;
    10.  
    11. static const t_double phi_1_offset = - 90.0 * M_PI / 180.0;
    12. static const t_double phi_2_offset = 90.0 * M_PI / 180.0;
    13.  
    14. static const t_double paw_hand_1 = 107.0;
    15. static const t_double paw_hand_2 = 197.0;
    16. static const t_double paw_eta_angle = GRAD_TO_RAD(90.0);
    17.  
    18. struct t_paw_pos
    19. {
    20.     t_double height;
    21.     t_double azimuthal_angle;
    22. };
    23.  
    24. inline void calc_servo_angle(t_double *p_servo_angle, const t_paw_pos *p_paw)
    25. {
    26.     *p_servo_angle = calc_servo_angle(p_paw->azimuthal_angle, height_to_polar_angle(p_paw->height));
    27. }
    28.  
    29. inline t_double height_to_polar_angle(t_double height)
    30. {
    31.     double a, b, c;
    32.  
    33.     a = paw_hand_2 * cos(paw_eta_angle) - paw_hand_1;
    34.     b = paw_hand_2 * sin(paw_eta_angle);
    35.     c = - height;
    36.  
    37.     return  acos( (- b * c - a * sqrt(a * a + b * b - c * c)) / (a * a + b * b) );
    38. }
    39.  
    40. t_double calc_servo_angle(t_double psi, t_double theta)
    41. {
    42.     t_double    a, b, c, x, y, z;
    43.  
    44.     x = paw_lever_width * sin(psi) + paw_lever_height * sin(theta) * cos(psi) -
    45.         paw_opt_2 * cos(theta) * cos(psi) - paw_opt_1 * cos(psi) - paw_opt_3;
    46.     y = - paw_lever_width * cos(psi) + paw_lever_height * sin(theta) * sin(psi) -
    47.         paw_opt_2 * cos(theta) * sin(psi) - paw_opt_1 * sin(psi) + paw_opt_5;
    48.     z = paw_lever_height * cos(theta) + paw_opt_2 * sin(theta) - paw_opt_4;
    49.  
    50.     a = 2.0 * servo_lever * y;
    51.     b = 2.0 * servo_lever * x;
    52.     c = x * x  + y * y + z * z  + servo_lever * servo_lever - draft_len * draft_len;
    53.  
    54.     return acos( (- b * c + a * sqrt(b * b + a * a - c * c)) / (b * b + a * a));
    55. }
     
  19. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    cupuyc
    а точность в градусах какая? нельзя ли все эти cos/acos свести к таблице 0-45o?
    (если в спец к вашему камню не указан фпу, то его нет и он будет эмулироваться. в этом случае может быть стоит перейти на фиксед пойнт? скам, 32 бита после запятой. не хватит?)
     
  20. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    cupuyc
    Зачем тебе такие жуткие формулы? Мне кажется что они не будут описывать положение ног таракана даже в статике - ноги ведь не абсолютно жёсткие?! А в динамике точность позиционирования будет вообще наверно не лучше одной десятой диапазона перемещения. Твоя жуткая формула не влезла в таблицу? - это не страшно: можно сделать сетку таблицы с переменным шагом, или вообще сплайны использовать. Про (би)кубические сплайны слышал? Для твоего случая их должно быть более чем достаточно. А таракана точное положение его ног вообще мало волновать должно, три ноги стоят? - стоят, значит можно перемещать другие три.