Jump to content

    

andrewlekar

Участник
  • Content Count

    836
  • Joined

  • Last visited

Everything posted by andrewlekar


  1. Чтобы не лезть во всякую жесть типа публичных IRC и NNTP серверов, лучше поставить свой сервер с jabber и общаться по xmpp протоколу.
  2. GSM модуль Sim900R 270р - средним оптом антенна - 10р (печатная на плате) микрофон 10р - не искал, но для примерно столько должен стоить Сис.плата + монтаж 100р. Дешевле не находил, но если кто хорошего контрактного производителя подскажет, то было бы неплохо. Корпус 50 р. Со своей прессформой и тираже от 10к можно рублей 20 за корпус получить. Процессор (не обязательно) - 100 р. Клавиатура и индикация - 10-100 р. Короче, в 1000 р. можно уложиться при тираже от 1000 штук. Лучше использовать чипсет вместо модуля, но к процу тогда понадобится память и операционка. Самая большая проблема - получение хорошего корпуса. в идеале это дизайнерская, конструкторская работа + прессформа + несколько моделей на 3д принтере = около миллиона рублей.
  3. char *string = (char*)flEventBuffer.eventData.modemdata_evt.data;
  4. Wifi

    Не понял, зачем там понадобился явовский апплет. Яваскрипта для клиента за глаза хватит. Для замка нужно реализовать как минимум веб сервер, чтобы отдавать пользователю страничку с кнопками. Ещё стоило бы реализовать веб сервис для интеграции с мобильными устройствами - это тот же веб сервер, но по определенным URL можно открыть/закрыть замок. И ещё стоило бы покопать тему организации DNS в локальной сети - это чтобы не по IP адресу лезть на замок, а по удобному имени.
  5. Для линуксов звонилки делают традиционно на базе астериска (http://www.asterisk.org/). Но это довольно крупная система. Если нужно совсем просто и примитивно, то открывайте ком-порт к GSM модулю и ком-порт к аудиоданным и звоните. Возможно есть поддержка telephony devices, но тут я не в теме.
  6. Заливка ПО в lpc через USB

    Я поднимал DfuSe бутлоадер для такого дела. Если устройство единственное подключенное к компу, то можно заливать одним нажатием мыши, ничего не выбирая и не переключая никаких перемычек. Посмотреть можно тут: https://github.com/blackyblack/LPC-DfuSe-Bootloader Для пущего удобства можно интегрировать заливалку софта с прошивкой в один экзешник и отдавать в таком виде заказчику - будет круто. Заливалка доступна в опен сорс виде: https://gitorious.org/dfu-util
  7. LINUX или Android

    Комментарий про vi доставил, спасибо. 1. Если воткнёте андроид, то можете дальше работать на виндовом SDK. Системное программирование вам не понадобится. 2. Если поставите линукс, то читайте предыдущий комментарий.
  8. Возможно так: RD - Read (RX) SD - Send (TX) RS - Ready to send (RTS) CS - Clear to send (CTS) SG - земля
  9. Как я накололся с stm32f10x.h

    ЦитатаМеня подмывает перенести все дефайны распределения ресурсов в один заголовочный файл. Стоит так делать? Я так делаю. Именно потому что ноги процессора мультиплексируются и нужно смотреть, чтобы не пересекался функционал. В cmsis сделана настройка ног из соответствующих модулей. На мой взгляд, это неудобно и чревато хитрыми багами. По поводу оптимизации инициализации ног. Считаю, что бороться за чистоту листинга и прочую оптимизацию при первоначальной настройке ног нет никакого смысла. Сколько бы она тактов не съела, делается настройка один раз и больше на производительность кода не влияет.
  10. Здравствуйте. Вместо старого доброго IAR я настроил на своей рабочей машине Sublime Text. Это красивый и удобный редактор с возможностями IDE. Если вы устали от уродливого интерфейса IAR, можете попробовать поставить Sublime Text 3 с моими настройками для работы с проектами IAR. Sublime Text 3 можно взять тут: http://www.sublimetext.com/3 или ломаный тут: [CENSORED]. Мои настройки для него доступны тут: https://github.com/blackyblack/TerminusSettings Красивая тема и мой любимый шрифт Terminus доступны тут: https://github.com/blackyblack/TerminusTheme и https://github.com/blackyblack/TerminusFont
  11. Загрузчик + приложение (STM32F1XX+Keil)

    Программным сбросом нужно переходить в загрузчик. А процедура перехода в приложение в любом случае должна присутствовать. Хотя я и не понял, что именно починил ТС.
  12. Если дело в привязке IMEI к CCID у оператора, то симком ниче сделать не сможет. Не будут же они прикручивать регистрацию с фейковым IMEI для обхода косяков оператора. Если дело в совместимости с симкой, то симкому действительно стоит поднапрячься и сделать фикс, а не строить из себя самых умных. Такая ситуация уже была с симками TELE2 и симком таки выпустил фикс.
  13. Молчит USB на LPC1751, но работает на LPC1768

    Ну вот в даташите написано, что с такими настройками как у вас, не должно ничё работать. 8 мгц с множителем 100 даст Fcco = 800, а это нельзя. Про PLL1 сказано, что он с кварцами до 10 мгц не стартует.
  14. Молчит USB на LPC1751, но работает на LPC1768

    Резистор между +3.3 и D+? Открыл наконец доку по LPC1751. Блин, там всего 8к озу на всё. Вряд ли дело в памяти. А вот инициализация частоты у вас странная. Для PLL0 MSEL = 100, а NSEL = 4. При этом для PLL1 MSEL = 6, а PSEL = 2. Если у вас кварц 4 мгц, то сам проц работать будет, а вот 48 мгц для USB уже не получается. Если у вас кварц 12 мгц, как написано в комментариях, то у вас проц не должен запускаться.
  15. Молчит USB на LPC1751, но работает на LPC1768

    Connect лапа дергается? У LPC1778 другие номера эндпоинтов используются. Память под USB дескрипторы правильно разместили?
  16. Начало с ARM

    С этим процессором вам путь один: ставить Linux для BeagleBone и больше там ничего не трогать. Всё остальное пишется как обычные приложения для линукса практически без ARM специфики.
  17. SIM900 умеет в HTTPS: http://mt-system.ru/sites/default/files/si...d_set_v1_00.pdf. Если хочется руками, то LwIP в PPP режиме + polarSSL в 64к ОЗУ влазят точно. В 32к придётся пободаться.
  18. Да, для STM8 должно ок получиться. Цитатаа что делает эта строка? *А-указатель на массив ? Да. В общем-то ничем не отличается от char[], но меньше места займёт.
  19. Цитатаа можно стирать массив а потом заново его инициализировать с другими элементами? К сожалению, нельзя. Вы можете, и это довольно удобно, делать новый массив с новыми элементами на каждый чих. Например: Кодconst char *A= {'a', 'b', 'c', 0}; printf("%s", A); const char *B = {'d', 'e', 'f', 0}; printf("%s", B); Если это ARM, то инициализаторы массивов будут лежать во флэше и вы почти не потеряете памяти на таком трюке и это будет удобно и красиво. Если это AVR например, то лучше так не делать: будет съедаться стэк, если не ошибаюсь. А если вы будете делать не const char *A, а char A[], то память будет съедать одинаково в обоих случаях (поправьте меня если я не прав).
  20. Цитатаможно ли аналогично заполнить этот же массив другими символами? Можно: unsigned char string_to_LCD[]={'h','t','c'}; Если хотите менять динамически, то можно так: string_to_LCD[7] = 0x05; Если хотите менять динамически и сразу куском, то так: memcpy(string_to_LCD, new_data, 16);
  21. void const *argument

    Ну вот я собрал ваш код при помощи IAR AVR 5.3. Вот MAP файл: Код  FILE NAME : D:\projects\avr\just_test\Debug\Obj\main.r90   PROGRAM MODULE, NAME : main   SEGMENTS IN THE MODULE   ====================== NEAR_I   Relative segment, address: DATA 000000A0 - 000000A5 (0x6 bytes), align: 0   Segment part 7.             Intra module refs:   main            ENTRY                   ADDRESS         REF BY            =====                   =======         ======            str1                    000000A0     ------------------------------------------------------------------------- NEAR_I   Relative segment, address: DATA 000000A6 - 000000AB (0x6 bytes), align: 0   Segment part 10.            Intra module refs:   main            ENTRY                   ADDRESS         REF BY            =====                   =======         ======            str2                    000000A6     ------------------------------------------------------------------------- NEAR_Z   Relative segment, address: DATA 000000AC - 000000AD (0x2 bytes), align: 0   Segment part 12.            Intra module refs:   main            ENTRY                   ADDRESS         REF BY            =====                   =======         ======            ptr                     000000AC     ------------------------------------------------------------------------- CODE   Relative segment, address: CODE 00000054 - 000000A3 (0x50 bytes), align: 1   Segment part 14.            ENTRY                   ADDRESS         REF BY            =====                   =======         ======            main                    00000054        ?cstartup_call_main (?C_STARTUP)                RSTACK = 00000000 ( 00000002 )
  22. Ничего не делает. (void)a просто убирает предупреждение компилятора о неиспользованной переменной.
  23. void const *argument

    ЦитатаНичего не понял. Может попробуете еще раз выразить свою мысль? В вашем коде для AVR все переменные будут размещены в ОЗУ. Хотите их размещать во флэш - пишите __flash. У Viko константы были размещены во флэш потому что он пользовался компилятором для ARM.
  24. void const *argument

    ЦитатаУ кого есть IAR AVR? ЦитатаДля процессора с линейным адресным пространством (ARM, Cortex). Может уже хватит переливать из пустого в порожнее? То народ указатель на структуру от самой структуры отличить не может, то указатель на массив от самого массива, то общее адресное пространство от раздельного. ЦитатаВыходит, константы лучше делать глобальными? Испортить их нельзя. Если константа на самом деле где-то может пригодиться, то можете делать глобальной. Все подряд делать глобальными не стоит - экспортируется много символов и размываются интерфейсы у модулей.
  25. void const *argument

    Что вы этим гениальным кодом хотите проверить? В ch сначала попадёт '5', затем в str1[0] запишется '5', затем в ch запишется '2', а строка ch=ch ничего не делает - она заоптимизируется почти всегда. Ах да, str1 и str2 будет размещено в ОЗУ. Если вы хотели str2 размещать во флэш, то надо было указать квалификатор __flash.