|
|
  |
MSP430 - вопросы от чайника, генератор опорного напряжения |
|
|
|
Jun 26 2008, 20:30
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(Daria @ Jun 27 2008, 00:44)  Спасибо. Общепринятого протокола нет - контора большая, кто обменивается, тот между собой обычно и договаривается  А пока как-нибудь. А имеет смысл писать такой протокол ради того, чтобы просто постоянно отправлять число от 0 до 360 на COM- и больше ничего? Для вывода одного числа будет удобно, если преобразовать его в строку символов ASCII. Тогда это число можно будет наблюдать в обычной терминальной программе без доп. ухищрений. например, для вывода числа 360, нужно вывести последовательно 0x33, 0x36, 0x30, 0x0D, 0x0A. Можно даже значок градусов ° (0xB0) в конце строки перед символами CR, LF добавлять  Цитата(Daria @ Jun 27 2008, 00:44)  Да, rezident, бог с ним. с усреднением - все равно особенно не поможет, нужно делать норамльный цифровой фильтр. А я до него еще не доросла  Чутка попозже. Начал править ваш проект из предыдущего сообщения, но чувствую, что сегодня уже не доделаю. Спать хочется. Вы еще раз уточните какие входы/выходы у вас используются? А то немного непонятно. Сначала разговор про одни шел, а в проекте вроде другие выводы MSP430 используются. 5 аналоговых входов или только 2? Управляющие сигналы на P1.5 и P1.6 изменяются синхронно? 60сек - лог.1. и 400мс - лог.0, так? Допустимо выводить на UART строку символов вместо бинарного числа? Цитата(Daria @ Jun 27 2008, 00:44)  Пока вот вопрос - записываю число во flash, использую режим записи по словам. т.е. int число пишется легко и без проблем. А как записать float - надо уже режим поблоковой записи? Или нет? Блочный режим используется, если управляющая программа записи в ОЗУ расположена. Если же у вас программа записи исполняется прямо из Flash, то можно писать побайтово или пословно.
|
|
|
|
|
Jun 28 2008, 20:14
|
Местный
  
Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345

|
Цитата(rezident @ Jun 27 2008, 00:30)  5 аналоговых входов или только 2? Управляющие сигналы на P1.5 и P1.6 изменяются синхронно? 60сек - лог.1. и 400мс - лог.0, так? Пока два, потом будет пять. Аналоговые входы P6.3, P6.4. Управляющий только один - P1.5, 60сек - лог.1. и 400мс - лог.0 Цитата(rezident @ Jun 27 2008, 00:30)  Допустимо выводить на UART строку символов вместо бинарного числа? Да все равно как, главное, видеть, что приходит Цитата(rezident @ Jun 27 2008, 00:30)  Блочный режим используется, если управляющая программа записи в ОЗУ расположена. Если же у вас программа записи исполняется прямо из Flash, то можно писать побайтово или пословно. Но слово - это же два байта вроде?.. То есть писать функцию, которая пословно записывает число, и функцию, которая будет пословно считывать?
|
|
|
|
|
Jun 29 2008, 11:23
|
Участник

Группа: Участник
Сообщений: 36
Регистрация: 4-03-05
Из: Киев
Пользователь №: 3 078

|
Цитата(Daria @ Jun 26 2008, 21:44)  Спасибо. Общепринятого протокола нет - контора большая, кто обменивается, тот между собой обычно и договаривается  А пока как-нибудь. А имеет смысл писать такой протокол ради того, чтобы просто постоянно отправлять число от 0 до 360 на COM- и больше ничего? Да, rezident, бог с ним. с усреднением - все равно особенно не поможет, нужно делать норамльный цифровой фильтр. А я до него еще не доросла  Чутка попозже. Пока вот вопрос - записываю число во flash, использую режим записи по словам. т.е. int число пишется легко и без проблем. А как записать float - надо уже режим поблоковой записи? Или нет? Daria пишите побайтово - последовательно записывая 2 байта (short), когда пишете флоат - пишите 4 байта, будет работать также хорошо ( данные пишете во flash MSP что ли?? ) --------------------------------- CR, LF - '\r'.'\n' )) вариант с выводом в терминал конешно хорош. но это только на этапе проверки фукционирования устройства. используюя протокол Вы можете использовать различные режимы настройки без перепрошики в общем я за написания протокола + внешней программы в которой можете уже смотреть и настраивать как Вам будет угодно. )
|
|
|
|
|
Jun 29 2008, 21:10
|
Местный
  
Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345

|
Цитата(NoName @ Jun 29 2008, 15:23)  Daria пишите побайтово - последовательно записывая 2 байта (short), когда пишете флоат - пишите 4 байта, будет работать также хорошо ( данные пишете во flash MSP что ли?? ) Да, пишу во flash MSP - после калибровки датчика нужно сохранять калибровочные константы в памяти. Цитата(NoName @ Jun 29 2008, 15:23)  в общем я за написания протокола + внешней программы в которой можете уже смотреть и настраивать как Вам будет угодно. ) Спасибо, попробую.
|
|
|
|
|
Jun 30 2008, 06:50
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(Daria @ Jun 26 2008, 21:44)  Спасибо. Общепринятого протокола нет - контора большая, кто обменивается, тот между собой обычно и договаривается  А пока как-нибудь. А имеет смысл писать такой протокол ради того, чтобы просто постоянно отправлять число от 0 до 360 на COM- и больше ничего? Имеет - не имеет? Придется! Информация в один байт не помещается, значит их будет больше. Тогда на приемной стороне нужно распознавать, какой байт первый а какой второй (приемник ведь может включиться в любой момент). Можно сделать просто - например, выделить старший разряд для передачи флага первый/второй, а во всех остальных передавать данные. Тогда в двух байтах можно передать 14 значащих разрядов. Запишите на бумажке правила, как именно Вы будете передавать данные - это и будет называться гордым словом ПРОТОКОЛ - правила, однозначно устанавливающие порядок приема и передачи информации.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Jun 30 2008, 16:58
|
Местный
  
Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345

|
Цитата(Dog Pawlowa @ Jun 30 2008, 10:50)  Запишите на бумажке правила, как именно Вы будете передавать данные - это и будет называться гордым словом ПРОТОКОЛ - правила, однозначно устанавливающие порядок приема и передачи информации.  Да вообщем-то сейчас так и делаю, функция send_int, описанная в теме выше.  Но вся эта процедура занимает много времени, по-моему - после отправки каждого байта(старшего, младшего и флага, означающего конец посылки) жду очистки флагов. Может, можно как-то проще и быстрее? Как-нибудь так настроить USART, чтобы передача трех байтов занимала как можно меньше времени. Вот, в чем был вопрос. все равно спасибо.
|
|
|
|
|
Jul 15 2008, 19:37
|
Местный
  
Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345

|
Снова я, здравствуйте Такой вопрос - контроллер, напоминаю - MSP430F149, гружу программу с помощью IAR, boot memory - 1КВ, а прога уже значительно больше. Как быть? Надо как-то писать основную прогу во flash, в code memory? А в boot - маленький модуль, вызывающий основную? Как это сделать? И rezident, если будете в наших краях, все же расскажите, как бы Вы написали работу таймера  Очень жду. Вышла вот из отпуска и жду
|
|
|
|
|
Jul 16 2008, 09:33
|
Участник

Группа: Участник
Сообщений: 36
Регистрация: 4-03-05
Из: Киев
Пользователь №: 3 078

|
Цитата(Daria @ Jul 15 2008, 22:37)  Снова я, здравствуйте Такой вопрос - контроллер, напоминаю - MSP430F149, гружу программу с помощью IAR, boot memory - 1КВ, а прога уже значительно больше. Как быть? Надо как-то писать основную прогу во flash, в code memory? вопрос не понятен, если используете разбивку по умолчанию то подлючается файл X:\....\IAR Systems\Embed.....\config\lnk430F149.xcl если желаете исправить данный файл, то копируете к своему проекту и подлючаете Options >> Linker >> Config >> Linker command file -> my_lnk430F149.xcl ( пример ) в оригинальном файле сегмент для кода -Z(CODE)CODE=1100-FFDF явно больше 1кБ )) после выхода из __low_level_init выполняется main, если не переоприделяли (обьявлений типа main () @ "boot_memory" не нашел в Вашем коде ) то он должен находится в сегменте CODE ИАР при компиляции ругается на выход за пределы сегмента?
|
|
|
|
|
Jul 16 2008, 18:31
|
Местный
  
Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345

|
Цитата(NoName @ Jul 16 2008, 13:33)  вопрос не понятен, если используете разбивку по умолчанию то подлючается файл X:\....\IAR Systems\Embed.....\config\lnk430F149.xcl
если желаете исправить данный файл, то копируете к своему проекту и подлючаете Options >> Linker >> Config >> Linker command file -> my_lnk430F149.xcl ( пример )
в оригинальном файле сегмент для кода -Z(CODE)CODE=1100-FFDF явно больше 1кБ )) после выхода из __low_level_init выполняется main, если не переоприделяли (обьявлений типа main () @ "boot_memory" не нашел в Вашем коде ) то он должен находится в сегменте CODE
ИАР при компиляции ругается на выход за пределы сегмента? Да, ругается.  Использую по умолчанию. Попробую Options >> Linker >> Config >> Linker command file ->  Спасибо. Завтра напишу, получилось или нет
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|