Перейти к содержанию

    

artemkad

Свой
  • Публикаций

    1 535
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о artemkad

  • Звание
    Профессионал

Контакты

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

Информация

  • Город
    Киев

Посетители профиля

4 991 просмотр профиля
  1. На сколько помню, в момент регистрации модуль начинает связь на максимальной мощности сигнала. Т.е. просадки можно оценить сразу и без специальных команд.
  2. В основном временем записи. Единственное вменяемое. Если массив хоть чем нибудь инициализирую в программе там появляются нули еще до попадания линкеру. Если без инициализации, там и так 0xFF.
  3. Тогда тем более не нужен. Проблема возникает когда утечка от помехи через порт на питание превышает ток потребления схемы от этого питания.
  4. Транзистор не нужен. Иначе утечка стабилитрона умноженная на коэффициент усиления транзистора на потреблении поставит крест.
  5. Ставишь резистор в делителе не 12 кОм, а 200кОм и ограничительный стабилитрон на питание МК если уж совсем хочется защититься Никаких проблем с однонаправленными - в другую сторону они ограничивают напряжение на уровне 0,7В что гораздо лучше чем -3...6В которые дают двунаправленные стабилитроны.
  6. Автономный программатор. "1000" байт потом зальются в другой МК. Если страница содержит одни 0xFF её можно игнорировать, а вот нули писать надо обязательно. Естественно, потом уже в процессе работы содержимое 1000 байт может меняться своим загрузчиком. В общем, единственное пока вменяемое решение это прилинкование внешнего бинарника...
  7. Использование __no_init

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

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

    Если переменная, к примеру, находится в регистре МК который по сбросу сам МК устанавливает в некое значение, то там после подачи питания будет совсем не мусор.
  10. Возник тут вопросик... Если инициализировать массив к примеру во Флеше МК, то все что явно не указано iar заполнит нулями. Т.е. вот так: __flash uint8_t hello_world_buf[1000] = "hello world"; все кроме первых 11 байт будет забито нулями. А как-бы заставить компилятор забить чем-то другим(например 0xFF)?
  11. Использование __no_init

    __no_init означает, что после сброса IAR никакой отсебятины с этой переменной в виде её принудительной иннициализации не делает. А что будет там будет зависеть исключительно от поведения МК(а не компилятора). В ОЗУ при подаче питания обычно мусор, при сбросе (программном или аппаратном) значение сохраняется. В переменных расположенных в аппаратных регистрах - будет то что туда МК по сбросу засунет.
  12. Как по мне, имеет смысл вместо огорода с батарейкой+ионистор перейти на мелкий литиевый(в полимерном корпусе) АКБ+разъём USB для зарядки.
  13. У ионистора выше номинального напряжения резко увеличивается утечка. Думаю если 2,5В ионистор подключить параллельно 3В батарее устройство сдохнет еще раньше чем без него просто из-за разряда на утечку.
  14. Только если инлайн прямо указан программистом в коде или такая подстановка соответствует стратегии оптимизации(к примеру, оптимизация по скорости и инлайн получается быстрее чем стандартный вызов). Только если пишешь на Асме. В остальных случаях получаешь нечто зависящее от компилятора и аргументов компиляции. Так и только так. Если не работает - ищи собственный косяк.
  15. С оптимизацией так-же получается именно то, что написано в программе. Поэтому и вопросы всегда не к оптимизатору, а к содержимому