Jump to content

    

_pv

Свой
  • Content Count

    2788
  • Joined

  • Last visited

Community Reputation

0 Обычный

About _pv

  • Rank
    Гуру

Контакты

  • Сайт
    http://
  • ICQ
    199070155

Recent Profile Visitors

9597 profile views
  1. не работает оно исключительно из-за своеобразного (как всегда впрочем) понимания микрософтом стандартов. гцц и шланг знают что 1.0/0.0 == INF, а msvc почему-то нет. не уверен точно, но вроде бы IAR и visualDSP умели в 16ти битные floatы. Ваш constPNaN им скорее всего тоже не понравится. тем более что у ТС не float, а вообще long double с непонятной разрядностью.
  2. может потому что это ещё хуже, так как "The value representation of floating-point types is implementation-defined" в коде похоже как раз разбирается арифметическое выражение, и автор просто переложил на компилятор расхлёбывать деление на 0, тем же образом как плавучка в этом компиляторе и реализована.
  3. инициализация значения в inf? чтобы отличать "неинициализированную" переменную от числа
  4. LPC4370 про sleep&stop немного не понял, но у блэкфинов(bf592 или bf700 если usb надо) параллельный порт по-человечески сделан, по сравнению с DCMI. да и у пиков32 ещё вроде бы выглядит неплохо. это что за обработка такая, среднее значение посчитать? 20% от 160МГц и 7 MSPS это аж целых четыре такта на отсчёт. по потреблению у небольших дсп, C55 или блэкфинов, мВт/МГц может поменьше в результате выйти чем у stm32. а учитывая что они за такт могут сделать, так тем более. но те процессоры что могут что-то осмысленное сделать с потоком 20мспс спят обычно довольно плохо, тревожно, потребляя при этом довольно много, иногда наверное проще какую-нибудь "8ми битную" мелочь рядом поставить которая будет усыплять рубильником по питанию.
  5. За продукцией атмела идти теперь надо на сайт микрочипа. Причём уже года три как.
  6. Не, не отдельный мем2мем, а тот дма который в external port (стр. 4-125), он во внешнюю память вроде умеет читать/писать с какими попало смещениями. Но я мануал сильно по диагонали поглядел, просто интересно стало чем отличаются. А для обычного дма массивы дескрипторов под каждый отсчёт заготавливать дольше будете, что просто по всем данным пройтись и четные/нечетные данные в отдельные буфера раскидать. Да и памяти это сожрёт.
  7. у шарка там этих спортов, как говна за баней, 8(16) штук (половинок), ну займёте 2(4) для нормального двунаправленного общения с кодеком. я не знаю что там у вас за кодек, но насколько понимаю в multichannel режиме sport умеет брать только данные с определённым оффсетом от начала синхронизации. с передачей, правда, может оказаться сложнее, просто так запараллелить возможно не получится. так что либо руками массив перелопачивайте, тоже не велика потеря, полтакта/такт на отсчёт потратить. либо отправьте во внешнюю память, там scatter/gather DMA вроде умеет, но имхо быстрее будет руками.
  8. тогда проще, наверное, распараллелить приём на два (две половины) порта, и настроить синхронизацию так, чтобы один хватал только левые, а другой - только правые данные. ну и ещё там у контроллера внешней памяти dma вроде умеет данные собирать/разбирать как попало. так что если протащить через буфер во внешней памяти, можно и силами дма управиться, без создания дескрипторов на каждый сэмпл.
  9. ну не знаю тогда, натравить ещё один dma чтобы четные/нечетные данные раскидал по разным буферам из одного? а вообще чем плохо, что данные перемешанные в буфере лежат? брать их с инкрементом адреса 2 с четного/нечетного адреса.
  10. в DMA 2D по X выставить инкремент N (размер буфера, ну или расстояние между началами буферов, если они не подряд) и количество 2, а по Y поставить инкремент 1-N, он тогда будет туда-сюда скакать раскладывая данные в два буфера.
  11. +1, можно в песочницу посадить, чтобы os.execute("rm -rf *") случайно в "формулу" не подсунули. #include "lua.hpp" int main(){ lua_State * L = luaL_newstate(); luaL_requiref(L, "math", luaopen_math, 1); luaL_dostring(L, "cos = math.cos; sin = math.sin; pi = math.pi; exp = math.exp"); luaL_dostring(L, "return 42 * exp(-1.5) + cos(pi/2)"); printf("result: %G\n", lua_tonumber(L,-1)); lua_pop(L, 1); return 0; }
  12. это питон-то в 10-20-50кБ? модуль найти можно в книжке Б.Страуструпа, http://www.stroustrup.com/dc.c и добавить к нему недостающие функции. если немного увлечься с добавлением, может получится что-то вроде https://github.com/rswier/c4 , самое забавное, что оно само себя распарсить может :) ну а если не хватит, тогда есть libtcc или lua, пусть не 10-20, но в 100-200кБ вполне влезет.
  13. там ещё один столбец называется output current, если поставить там 50мА, с запасом, усилителей всё равно останется штук 50.
  14. один только параметрический поиск у тексасов говорит что усилителей с rail-rail выходом и питанием >=36В аж 128 наименований.
  15. Датчик касания

    у готовых оптопрерывателей апертура около мм обычно, их можно и несколько со смещением поставить, а выходы (источник тока) просто запараллелить. ну или если перекрывать не под прямым углом, а скошенной под углом непрозрачной пластиной то и диапазон до нескольких мм расширить можно, и это не считая варианта: сколхозить из отдельного свето/фото диода и фольги в которой можно проковырять нужного размера отверстие. ну или взять нормальный линейный оптический энкодер, renishaw какой-нибудь, за сотню баксов на ебее найти поди можно, с каким угодно разрешением. и сделать обратную связь по положению всей подвижке.