rezident 0 June 26, 2008 Posted June 26, 2008 · Report post Спасибо. Общепринятого протокола нет - контора большая, кто обменивается, тот между собой обычно и договаривается:) А пока как-нибудь. А имеет смысл писать такой протокол ради того, чтобы просто постоянно отправлять число от 0 до 360 на COM- и больше ничего?Для вывода одного числа будет удобно, если преобразовать его в строку символов ASCII. Тогда это число можно будет наблюдать в обычной терминальной программе без доп. ухищрений. например, для вывода числа 360, нужно вывести последовательно 0x33, 0x36, 0x30, 0x0D, 0x0A. Можно даже значок градусов ° (0xB0) в конце строки перед символами CR, LF добавлять :) Да, rezident, бог с ним. с усреднением - все равно особенно не поможет, нужно делать норамльный цифровой фильтр. А я до него еще не доросла :) Чутка попозже.Начал править ваш проект из предыдущего сообщения, но чувствую, что сегодня уже не доделаю. Спать хочется. Вы еще раз уточните какие входы/выходы у вас используются? А то немного непонятно. Сначала разговор про одни шел, а в проекте вроде другие выводы MSP430 используются. 5 аналоговых входов или только 2? Управляющие сигналы на P1.5 и P1.6 изменяются синхронно? 60сек - лог.1. и 400мс - лог.0, так? Допустимо выводить на UART строку символов вместо бинарного числа? Пока вот вопрос - записываю число во flash, использую режим записи по словам. т.е. int число пишется легко и без проблем. А как записать float - надо уже режим поблоковой записи? Или нет?Блочный режим используется, если управляющая программа записи в ОЗУ расположена. Если же у вас программа записи исполняется прямо из Flash, то можно писать побайтово или пословно. Share this post Link to post Share on other sites More sharing options...
Daria 0 June 28, 2008 Posted June 28, 2008 · Report post 5 аналоговых входов или только 2? Управляющие сигналы на P1.5 и P1.6 изменяются синхронно? 60сек - лог.1. и 400мс - лог.0, так? Пока два, потом будет пять. Аналоговые входы P6.3, P6.4. Управляющий только один - P1.5, 60сек - лог.1. и 400мс - лог.0 Допустимо выводить на UART строку символов вместо бинарного числа? Да все равно как, главное, видеть, что приходит :) Блочный режим используется, если управляющая программа записи в ОЗУ расположена. Если же у вас программа записи исполняется прямо из Flash, то можно писать побайтово или пословно. Но слово - это же два байта вроде?.. То есть писать функцию, которая пословно записывает число, и функцию, которая будет пословно считывать? Share this post Link to post Share on other sites More sharing options...
NoName 0 June 29, 2008 Posted June 29, 2008 · Report post Спасибо. Общепринятого протокола нет - контора большая, кто обменивается, тот между собой обычно и договаривается:) А пока как-нибудь. А имеет смысл писать такой протокол ради того, чтобы просто постоянно отправлять число от 0 до 360 на COM- и больше ничего? Да, rezident, бог с ним. с усреднением - все равно особенно не поможет, нужно делать норамльный цифровой фильтр. А я до него еще не доросла :) Чутка попозже. Пока вот вопрос - записываю число во flash, использую режим записи по словам. т.е. int число пишется легко и без проблем. А как записать float - надо уже режим поблоковой записи? Или нет? Daria пишите побайтово - последовательно записывая 2 байта (short), когда пишете флоат - пишите 4 байта, будет работать также хорошо ( данные пишете во flash MSP что ли?? ) --------------------------------- CR, LF - '\r'.'\n' )) вариант с выводом в терминал конешно хорош. но это только на этапе проверки фукционирования устройства. используюя протокол Вы можете использовать различные режимы настройки без перепрошики в общем я за написания протокола + внешней программы в которой можете уже смотреть и настраивать как Вам будет угодно. ) Share this post Link to post Share on other sites More sharing options...
Daria 0 June 29, 2008 Posted June 29, 2008 · Report post Daria пишите побайтово - последовательно записывая 2 байта (short), когда пишете флоат - пишите 4 байта, будет работать также хорошо ( данные пишете во flash MSP что ли?? ) Да, пишу во flash MSP - после калибровки датчика нужно сохранять калибровочные константы в памяти. в общем я за написания протокола + внешней программы в которой можете уже смотреть и настраивать как Вам будет угодно. ) Спасибо, попробую. Share this post Link to post Share on other sites More sharing options...
DogPawlowa 0 June 30, 2008 Posted June 30, 2008 · Report post Спасибо. Общепринятого протокола нет - контора большая, кто обменивается, тот между собой обычно и договаривается:) А пока как-нибудь. А имеет смысл писать такой протокол ради того, чтобы просто постоянно отправлять число от 0 до 360 на COM- и больше ничего? Имеет - не имеет? Придется! Информация в один байт не помещается, значит их будет больше. Тогда на приемной стороне нужно распознавать, какой байт первый а какой второй (приемник ведь может включиться в любой момент). Можно сделать просто - например, выделить старший разряд для передачи флага первый/второй, а во всех остальных передавать данные. Тогда в двух байтах можно передать 14 значащих разрядов. Запишите на бумажке правила, как именно Вы будете передавать данные - это и будет называться гордым словом ПРОТОКОЛ - правила, однозначно устанавливающие порядок приема и передачи информации. :) Share this post Link to post Share on other sites More sharing options...
Daria 0 June 30, 2008 Posted June 30, 2008 · Report post Запишите на бумажке правила, как именно Вы будете передавать данные - это и будет называться гордым словом ПРОТОКОЛ - правила, однозначно устанавливающие порядок приема и передачи информации. :) Да вообщем-то сейчас так и делаю, функция send_int, описанная в теме выше. :) Но вся эта процедура занимает много времени, по-моему - после отправки каждого байта(старшего, младшего и флага, означающего конец посылки) жду очистки флагов. Может, можно как-то проще и быстрее? Как-нибудь так настроить USART, чтобы передача трех байтов занимала как можно меньше времени. Вот, в чем был вопрос. все равно спасибо. :) Share this post Link to post Share on other sites More sharing options...
fmdost 0 July 1, 2008 Posted July 1, 2008 · Report post ...Как-нибудь так настроить USART, чтобы передача трех байтов занимала как можно меньше времени. Вот, в чем был вопрос... USART настроить то можно. Надо передавать первый байт 9ю битами. Это однозначно будет начало. Но UART РС такого помоему не понимает. А вообще, как раз для этого и придумали ASCII. Если передавать в ASCII, то служебные символы и цифирки никогда не перепутаются. Ну например так, как это сделано в HEX файле. Share this post Link to post Share on other sites More sharing options...
Daria 0 July 3, 2008 Posted July 3, 2008 · Report post Ау, rezident! Вы там вроде обещали... забыли или некогда? очень жду :) Share this post Link to post Share on other sites More sharing options...
Daria 0 July 15, 2008 Posted July 15, 2008 · Report post Снова я, здравствуйте :) Такой вопрос - контроллер, напоминаю - MSP430F149, гружу программу с помощью IAR, boot memory - 1КВ, а прога уже значительно больше. Как быть? Надо как-то писать основную прогу во flash, в code memory? А в boot - маленький модуль, вызывающий основную? Как это сделать? :) И rezident, если будете в наших краях, все же расскажите, как бы Вы написали работу таймера Очень жду. Вышла вот из отпуска и жду Share this post Link to post Share on other sites More sharing options...
NoName 0 July 16, 2008 Posted July 16, 2008 · Report post Снова я, здравствуйте :) Такой вопрос - контроллер, напоминаю - 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 ИАР при компиляции ругается на выход за пределы сегмента? Share this post Link to post Share on other sites More sharing options...
Daria 0 July 16, 2008 Posted July 16, 2008 · Report post вопрос не понятен, если используете разбивку по умолчанию то подлючается файл 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 -> :) Спасибо. Завтра напишу, получилось или нет Share this post Link to post Share on other sites More sharing options...