VAI 0 28 мая, 2009 Опубликовано 28 мая, 2009 · Жалоба Я уже где-то выкладывал myprintf(), который сделал из исходников библиотек для ПИК16. Вполне успешно применяем его для мелких MSP. Если надо в строку выводить, то функцию putchar() надо заменить на вывод в строку. А так putchar() - это функция низкоуровневого вывода символа в конкретное физическое устройство. Использовали для вывода на термопринтер через RS232, на символьный индикатор, на 7-сегментный индикатор. Естественно, для каждого устройства свой putchar(). myprnt.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Daria 0 8 августа, 2009 Опубликовано 8 августа, 2009 · Жалоба Блин, ну что за фигня - личный ящик заблокировали, сообщения из темы мои удаляют... то ли форум глючит, то ли... какая-то фигня :crying: Подскажите, к кому обратиться за помощью и разъяснениями? Модератор. Daria, Ваше сообщение я перенес в подобающий ему раздел форума. Там же есть и ответы на все вопросы. В последующем пишите сразу в раздел форума, соответствующий теме вопроса. С уважением, rezident. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Daria 0 10 августа, 2009 Опубликовано 10 августа, 2009 · Жалоба Модератор. Daria, Ваше сообщение я перенес в подобающий ему раздел форума. Там же есть и ответы на все вопросы. В последующем пишите сразу в раздел форума, соответствующий теме вопроса. С уважением, rezident. Извините, учту. Спасибо за разъяснения Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Daria 0 24 сентября, 2009 Опубликовано 24 сентября, 2009 · Жалоба Здравствуйте. Это снова я :laughing: Устройство худо-бедно работало около полугода и неожиданно произошло полное стирание flash :crying: Чем это могло быть вызвано - возможные причины? перепада напряжения питания не было, да и кристалл сейчас с BOR, какой глюк мог быть в программе, чтобы такое натворить? хотя бы варианты? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 24 сентября, 2009 Опубликовано 24 сентября, 2009 · Жалоба Я уже запамятовал, а снова просматривать всю ветку лень. :laughing: У вас м/с супервизора питания в схеме имеется? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Daria 0 25 сентября, 2009 Опубликовано 25 сентября, 2009 · Жалоба Я уже запамятовал, а снова просматривать всю ветку лень. :laughing: У вас м/с супервизора питания в схеме имеется? Супервизора нет, но с питанием все было в порядке - устройство второе в цепи, сначала питание подается на управляющее устройство, которое кабелем соединено с этим. в том стоит такой же MSP - и все в порядке. Кабели хорошие, разъемы надежные, к тому же в кристалле есть BOR. Похоже, это произошло после принятия каких-то байтов по UART во время штатной работы, никаких операций с flash в этот момент не производилось - с чем это может быть связано? Вообще из программы очистить память довольно сложно, как я понимаю, установить ERASE, пароль... как это можно сделать аппаратно? TCK, RST/NMI во внешний разъем не выведены, там только TX, RX аппаратного UART, питание и земля. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DogPawlowa 0 25 сентября, 2009 Опубликовано 25 сентября, 2009 · Жалоба Супервизора нет, но с питанием все было в порядке - С этой электроникой так все обманчиво.... Ничто не может доказать другое... Но у нас всегда было частичное стирание флэш в случае плохого питания. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 26 сентября, 2009 Опубликовано 26 сентября, 2009 · Жалоба Супервизора нет, но с питанием все было в порядкеЭтого вы не можете знать со 100% достоверностью. Нет супервизора - нет гарантированного сброса при снижении напряжения питания. Вообще из программы очистить память довольно сложно, как я понимаю, установить ERASE, пароль... как это можно сделать аппаратно?Если в программе есть функции записи/стирания Flash то вероятность попасть на нее отлична от нуля. А как гласит один из законов Мерфи: "если вероятность возникновения неприятности отлична от нуля, то она (неприятность) обязательно произойдет" ;) Ставьте супервизор питания. BOR для такой защиты не панацея. Я уже неоднократно пояснял, что BOR "защищает" лишь от зависания при медленном нарастании напряжения питания и все! От хаотичного выполнения команд при снижении питания он нисколько не защищает. Сравните хотя бы минимально допустимое рабочее напряжение для ядра и уровень срабатывания BOR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Allregia 9 1 октября, 2009 Опубликовано 1 октября, 2009 · Жалоба Подскажите плиз - храню во влеше данных параметры, есть режим их изменения, но как проинициализировать эту область дефолтными параметрами ? Т.е. как ИАРу обяснять, чообы он туда что-то запихал? Пробовал так, но не помогло: #pragma location=0x1080 char const DefaultName[9]={"vicor000"}; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 1 октября, 2009 Опубликовано 1 октября, 2009 · Жалоба как проинициализировать эту область дефолтными параметрами ?Я приспособился к такому способу. #pragma location=0x1000 __no_init constData_t CParam; #pragma location=0x1000 const constData_t CParamIni={ 2, 100}; #pragma required=CParamIni А потом работаю с указателем на CParam. IAR конечно же генерирует Warning, но такой способ пока вроде прокатывает. В противном случае IAR подставляет константные выражения непосредственно в выражения/операторы (т.с. прямо по месту), а сам инициализированный константный массив/структуру из результирующего кода выбрасывает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Allregia 9 4 октября, 2009 Опубликовано 4 октября, 2009 · Жалоба Спасибо, достаточно было добавить #pragma required=DefaultID Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 4 октября, 2009 Опубликовано 4 октября, 2009 · Жалоба Спасибо, достаточно было добавить #pragma required=DefaultID Не хотелось бы вас разочаровывать, но этого не достаточно. :( Конечно константный массив теперь компилятор не выбрасывает, но и не работает с ним, подставляя константные значения "по месту", прямо в операторы. Убедитесь в этом сами, просмотрев ASM-овый код, получающийся в результате компиляции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Allregia 9 18 октября, 2009 Опубликовано 18 октября, 2009 · Жалоба Не хотелось бы вас разочаровывать, но этого не достаточно. :( Конечно константный массив теперь компилятор не выбрасывает, но и не работает с ним, подставляя константные значения "по месту", прямо в операторы. Убедитесь в этом сами, просмотрев ASM-овый код, получающийся в результате компиляции. Сорри за запоздалый ответ, но убедился что работает - я вижу, что нужный мне массив констант записывается в область INFO, а дальше из программы я его уже читаю. На данном этапе мне больше ничего не надо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться