Jump to content

    

artemkad

Свой
  • Content Count

    1554
  • Joined

  • Last visited

Everything posted by artemkad


  1. Автономный программатор. "1000" байт потом зальются в другой МК. Если страница содержит одни 0xFF её можно игнорировать, а вот нули писать надо обязательно. Естественно, потом уже в процессе работы содержимое 1000 байт может меняться своим загрузчиком. В общем, единственное пока вменяемое решение это прилинкование внешнего бинарника...
  2. Использование __no_init

    И тем не менее Atmel для Mega48 предоставил специальный регистр(даже три) в пространстве ввода-вывода, причем этот регистр в первой тридцатке портов(0x1E) и имеет короткую работу с битами.
  3. Использование __no_init

    К примеру для Mega48: __no_init volatile unsigned char Flags@ 0x3E; // флаги в регистре GPIOR0 При любом сбросе и подаче питания тут будет однозначный ноль.
  4. Использование __no_init

    Если переменная, к примеру, находится в регистре МК который по сбросу сам МК устанавливает в некое значение, то там после подачи питания будет совсем не мусор.
  5. Использование __no_init

    __no_init означает, что после сброса IAR никакой отсебятины с этой переменной в виде её принудительной иннициализации не делает. А что будет там будет зависеть исключительно от поведения МК(а не компилятора). В ОЗУ при подаче питания обычно мусор, при сбросе (программном или аппаратном) значение сохраняется. В переменных расположенных в аппаратных регистрах - будет то что туда МК по сбросу засунет.
  6. Как по мне, имеет смысл вместо огорода с батарейкой+ионистор перейти на мелкий литиевый(в полимерном корпусе) АКБ+разъём USB для зарядки.
  7. У ионистора выше номинального напряжения резко увеличивается утечка. Думаю если 2,5В ионистор подключить параллельно 3В батарее устройство сдохнет еще раньше чем без него просто из-за разряда на утечку.
  8. Только если инлайн прямо указан программистом в коде или такая подстановка соответствует стратегии оптимизации(к примеру, оптимизация по скорости и инлайн получается быстрее чем стандартный вызов). Только если пишешь на Асме. В остальных случаях получаешь нечто зависящее от компилятора и аргументов компиляции. Так и только так. Если не работает - ищи собственный косяк.
  9. С оптимизацией так-же получается именно то, что написано в программе. Поэтому и вопросы всегда не к оптимизатору, а к содержимому
  10. Правильно оптимизировал - если данные в LocalTime нигде не используются, то можно их и оптимизировать. Впрочем, с чего вы взяли, что без оптимизации ваш код работает всегда правильно? Помнится в старый добрый at90s2313(2КБ кода) влазила полноценная автомобильная сигнализация с честной криптографией... У вас на это, вероятно, нужен ARM с мегабайтом... На самом деле чем меньше память контроллера, тем актуальнее оптимизация кода. А когда ограничений на память нет, тогда и оптимизация не нужна.
  11. Пишешь всё записями фиксированной длинны в каждой из которых есть уникальный непрерывно растущий идентификатор(время), контрольная сумма и идентификатор к какому логу эта запись относится. Перед записью всего лишь надо найти самую старшую/младшую/пустую запись по полю идентификатора(времени)
  12. Вопрос по C

    Вас видать путает один #define вот так возможно станет понятнее: ((*GPIO_TypeDef)0x48001400 )
  13. Так или иначе можно почти во всех. Читайте Help и будет вам счастье... ЗЫ. У этого https://sites.google.com/site/terminalbpp/ вводится через $1A , а у этого http://www.der-hammer.info/terminal/ переключением типа вводимых данных перед строкой отправки(т.е. можно отправить хоть в бинарнике 00011010, хоть в шестнадцатеричном виде 1A).
  14. Не подскажете, можно ли как-то программно отключить микрофон на Sim900? А то от AT+CEXTERNTONE и AT+CMUT что-то как-то эффекта не заметил. Такое ощущение, что эти команды просто устанавливают минимальное усиление не отключая.
  15. Что-бы не висело в случае отсутствия микрофона.
  16. Да вроде ничего криминального - по 10к резисторы параллельно MIC и LINEIN плюс куча кондеров на микрофонном канале и собственно сам микрофон.
  17. На AT+CHF? выдает, естественно, +CHF: 0,0 . Собственно, у меня при соединении принудительно устанавливается нулевой канал, хотя, опять-же, попытка отключить микрофон переключением на AUX с помощью AT+CHFA эффекта так-же не имела.
  18. Что за "терминальная программа"? Телепатов тут точно нет.
  19. Даже еще веселее. AT+CEXTERNTONE=1 принимает и говорит Ок, но если после Ок запросить AT+CEXTERNTONE? ответ остается AT+CEXTERNTONE: 0 Т.е. команда вроде как есть, и даже принимается, но она ничего не меняет. AT+CEXTERNTONE=1;&W тоже не помогает PS. На Sim800 проверил - работает.... ЗЗЫ. Проверял для 900-х на 1137B06SIM900M64_ST_ENHANCE и 1137B09SIM900M64_ST_DTMF_JD_MMS
  20. Она у всех 1.9b. Зайдите на сайт к разработчику https://sites.google.com/site/terminalbpp/
  21. На сколько помню, в Terminal 1.9 кроме галочки "CR=CR+LF" надо установить галочку "+CR" за полем отправки. Впрочем, я обычно пользовался макросами, а там все надо прописывать руками (к примеру "AT$0D$0A"). Из терминалов можно посмотреть в сторону HTerm от der-hammer - как по мне он шустрее 1.9, хоть и отсутствие макросов иногда напрягает.
  22. Символы завершения и перевода строки отправить. "\r\n"
  23. Чаще всего фон связан с помехами по проводникам и он крайне мало от расположения зависит.
  24. Нет там разных мнений. Ножка GND 19 это и есть одна из ног "main ground". Просто помимо чтения надо еще и понимать что делаете и в частности механизм возникновения помех. Тем более там так и написано - " connect to main ground directly" т.е. НЕПОСРЕДСТВЕННО, а не через общий полигон земли на своей плате. На самом деле и это не догма, но если не понимаете механизма возникновения помех или нет возможности их избежать общей компоновкой, вариант отдельной дорожки на 19 ногу наилучший.