|
|
  |
MSP430 - снова вопросы от чайника, Вопросы от чайника про MSP и магнитный компас |
|
|
|
May 28 2009, 05:42
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37

|
Я уже где-то выкладывал myprintf(), который сделал из исходников библиотек для ПИК16. Вполне успешно применяем его для мелких MSP. Если надо в строку выводить, то функцию putchar() надо заменить на вывод в строку. А так putchar() - это функция низкоуровневого вывода символа в конкретное физическое устройство. Использовали для вывода на термопринтер через RS232, на символьный индикатор, на 7-сегментный индикатор. Естественно, для каждого устройства свой putchar().
Прикрепленные файлы
myprnt.rar ( 2.19 килобайт )
Кол-во скачиваний: 48
--------------------
Если зайца бить, его можно и спички научить зажигать Сколько дурака не бей - умнее не будет. Зато опытнее
|
|
|
|
|
Sep 25 2009, 19:02
|
Местный
  
Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345

|
Цитата(rezident @ Sep 24 2009, 23:56)  Я уже запамятовал, а снова просматривать всю ветку лень.  У вас м/с супервизора питания в схеме имеется? Супервизора нет, но с питанием все было в порядке - устройство второе в цепи, сначала питание подается на управляющее устройство, которое кабелем соединено с этим. в том стоит такой же MSP - и все в порядке. Кабели хорошие, разъемы надежные, к тому же в кристалле есть BOR. Похоже, это произошло после принятия каких-то байтов по UART во время штатной работы, никаких операций с flash в этот момент не производилось - с чем это может быть связано? Вообще из программы очистить память довольно сложно, как я понимаю, установить ERASE, пароль... как это можно сделать аппаратно? TCK, RST/NMI во внешний разъем не выведены, там только TX, RX аппаратного UART, питание и земля.
|
|
|
|
|
Sep 26 2009, 13:45
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(Daria @ Sep 26 2009, 01:02)  Супервизора нет, но с питанием все было в порядке Этого вы не можете знать со 100% достоверностью. Нет супервизора - нет гарантированного сброса при снижении напряжения питания. Цитата(Daria @ Sep 26 2009, 01:02)  Вообще из программы очистить память довольно сложно, как я понимаю, установить ERASE, пароль... как это можно сделать аппаратно? Если в программе есть функции записи/стирания Flash то вероятность попасть на нее отлична от нуля. А как гласит один из законов Мерфи: "если вероятность возникновения неприятности отлична от нуля, то она (неприятность) обязательно произойдет"  Ставьте супервизор питания. BOR для такой защиты не панацея. Я уже неоднократно пояснял, что BOR "защищает" лишь от зависания при медленном нарастании напряжения питания и все! От хаотичного выполнения команд при снижении питания он нисколько не защищает. Сравните хотя бы минимально допустимое рабочее напряжение для ядра и уровень срабатывания BOR.
Эскизы прикрепленных изображений
|
|
|
|
|
Oct 1 2009, 15:35
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Подскажите плиз - храню во влеше данных параметры, есть режим их изменения, но как проинициализировать эту область дефолтными параметрами ? Т.е. как ИАРу обяснять, чообы он туда что-то запихал? Пробовал так, но не помогло: Код #pragma location=0x1080 char const DefaultName[9]={"vicor000"};
|
|
|
|
|
Oct 1 2009, 16:09
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(Allregia @ Oct 1 2009, 21:35)  как проинициализировать эту область дефолтными параметрами ? Я приспособился к такому способу. Код #pragma location=0x1000 __no_init constData_t CParam; Код #pragma location=0x1000 const constData_t CParamIni={ 2, 100}; #pragma required=CParamIni А потом работаю с указателем на CParam. IAR конечно же генерирует Warning, но такой способ пока вроде прокатывает. В противном случае IAR подставляет константные выражения непосредственно в выражения/операторы (т.с. прямо по месту), а сам инициализированный константный массив/структуру из результирующего кода выбрасывает.
|
|
|
|
|
Oct 4 2009, 17:27
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(Allregia @ Oct 4 2009, 14:45)  Спасибо, достаточно было добавить #pragma required=DefaultID Не хотелось бы вас разочаровывать, но этого не достаточно.  Конечно константный массив теперь компилятор не выбрасывает, но и не работает с ним, подставляя константные значения "по месту", прямо в операторы. Убедитесь в этом сами, просмотрев ASM-овый код, получающийся в результате компиляции.
|
|
|
|
|
Oct 18 2009, 21:38
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Цитата(rezident @ Oct 4 2009, 21:27)  Не хотелось бы вас разочаровывать, но этого не достаточно.  Конечно константный массив теперь компилятор не выбрасывает, но и не работает с ним, подставляя константные значения "по месту", прямо в операторы. Убедитесь в этом сами, просмотрев ASM-овый код, получающийся в результате компиляции. Сорри за запоздалый ответ, но убедился что работает - я вижу, что нужный мне массив констант записывается в область INFO, а дальше из программы я его уже читаю. На данном этапе мне больше ничего не надо.
|
|
|
|
|
  |
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0
|
|
|