реклама на сайте
подробности

 
 
4 страниц V  « < 2 3 4  
Closed TopicStart new topic
> MSP430 - вопросы от чайника, генератор опорного напряжения
rezident
сообщение Jun 26 2008, 20:30
Сообщение #46


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Daria @ Jun 27 2008, 00:44) *
Спасибо. Общепринятого протокола нет - контора большая, кто обменивается, тот между собой обычно и договариваетсяsmile.gif А пока как-нибудь. А имеет смысл писать такой протокол ради того, чтобы просто постоянно отправлять число от 0 до 360 на COM- и больше ничего?
Для вывода одного числа будет удобно, если преобразовать его в строку символов ASCII. Тогда это число можно будет наблюдать в обычной терминальной программе без доп. ухищрений. например, для вывода числа 360, нужно вывести последовательно 0x33, 0x36, 0x30, 0x0D, 0x0A. Можно даже значок градусов ° (0xB0) в конце строки перед символами CR, LF добавлять smile.gif
Цитата(Daria @ Jun 27 2008, 00:44) *
Да, rezident, бог с ним. с усреднением - все равно особенно не поможет, нужно делать норамльный цифровой фильтр. А я до него еще не доросла smile.gif Чутка попозже.
Начал править ваш проект из предыдущего сообщения, но чувствую, что сегодня уже не доделаю. Спать хочется. Вы еще раз уточните какие входы/выходы у вас используются? А то немного непонятно. Сначала разговор про одни шел, а в проекте вроде другие выводы MSP430 используются.
5 аналоговых входов или только 2?
Управляющие сигналы на P1.5 и P1.6 изменяются синхронно? 60сек - лог.1. и 400мс - лог.0, так?
Допустимо выводить на UART строку символов вместо бинарного числа?
Цитата(Daria @ Jun 27 2008, 00:44) *
Пока вот вопрос - записываю число во flash, использую режим записи по словам. т.е. int число пишется легко и без проблем. А как записать float - надо уже режим поблоковой записи? Или нет?
Блочный режим используется, если управляющая программа записи в ОЗУ расположена. Если же у вас программа записи исполняется прямо из Flash, то можно писать побайтово или пословно.
Go to the top of the page
 
+Quote Post
Daria
сообщение Jun 28 2008, 20:14
Сообщение #47


Местный
***

Группа: Участник
Сообщений: 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 строку символов вместо бинарного числа?

Да все равно как, главное, видеть, что приходит smile.gif

Цитата(rezident @ Jun 27 2008, 00:30) *
Блочный режим используется, если управляющая программа записи в ОЗУ расположена. Если же у вас программа записи исполняется прямо из Flash, то можно писать побайтово или пословно.

Но слово - это же два байта вроде?.. То есть писать функцию, которая пословно записывает число, и функцию, которая будет пословно считывать?
Go to the top of the page
 
+Quote Post
NoName
сообщение Jun 29 2008, 11:23
Сообщение #48


Участник
*

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



Цитата(Daria @ Jun 26 2008, 21:44) *
Спасибо. Общепринятого протокола нет - контора большая, кто обменивается, тот между собой обычно и договариваетсяsmile.gif А пока как-нибудь. А имеет смысл писать такой протокол ради того, чтобы просто постоянно отправлять число от 0 до 360 на COM- и больше ничего?
Да, rezident, бог с ним. с усреднением - все равно особенно не поможет, нужно делать норамльный цифровой фильтр. А я до него еще не доросла smile.gif Чутка попозже. Пока вот вопрос - записываю число во flash, использую режим записи по словам. т.е. int число пишется легко и без проблем. А как записать float - надо уже режим поблоковой записи? Или нет?


Daria пишите побайтово - последовательно записывая 2 байта (short), когда пишете флоат - пишите 4 байта, будет работать также хорошо ( данные пишете во flash MSP что ли?? )
---------------------------------
CR, LF - '\r'.'\n' )) вариант с выводом в терминал конешно хорош.
но это только на этапе проверки фукционирования устройства.

используюя протокол Вы можете использовать различные режимы настройки без перепрошики
в общем я за написания протокола + внешней программы в которой можете уже смотреть и настраивать как Вам будет угодно. )
Go to the top of the page
 
+Quote Post
Daria
сообщение Jun 29 2008, 21:10
Сообщение #49


Местный
***

Группа: Участник
Сообщений: 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) *
в общем я за написания протокола + внешней программы в которой можете уже смотреть и настраивать как Вам будет угодно. )

Спасибо, попробую.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jun 30 2008, 06:50
Сообщение #50


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Daria @ Jun 26 2008, 21:44) *
Спасибо. Общепринятого протокола нет - контора большая, кто обменивается, тот между собой обычно и договариваетсяsmile.gif А пока как-нибудь. А имеет смысл писать такой протокол ради того, чтобы просто постоянно отправлять число от 0 до 360 на COM- и больше ничего?

Имеет - не имеет? Придется!
Информация в один байт не помещается, значит их будет больше. Тогда на приемной стороне нужно распознавать, какой байт первый а какой второй (приемник ведь может включиться в любой момент).
Можно сделать просто - например, выделить старший разряд для передачи флага первый/второй, а во всех остальных передавать данные. Тогда в двух байтах можно передать 14 значащих разрядов. Запишите на бумажке правила, как именно Вы будете передавать данные - это и будет называться гордым словом ПРОТОКОЛ - правила, однозначно устанавливающие порядок приема и передачи информации. smile.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Daria
сообщение Jun 30 2008, 16:58
Сообщение #51


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345



Цитата(Dog Pawlowa @ Jun 30 2008, 10:50) *
Запишите на бумажке правила, как именно Вы будете передавать данные - это и будет называться гордым словом ПРОТОКОЛ - правила, однозначно устанавливающие порядок приема и передачи информации. smile.gif

Да вообщем-то сейчас так и делаю, функция send_int, описанная в теме выше. smile.gif Но вся эта процедура занимает много времени, по-моему - после отправки каждого байта(старшего, младшего и флага, означающего конец посылки) жду очистки флагов. Может, можно как-то проще и быстрее? Как-нибудь так настроить USART, чтобы передача трех байтов занимала как можно меньше времени. Вот, в чем был вопрос. все равно спасибо. smile.gif
Go to the top of the page
 
+Quote Post
fmdost
сообщение Jul 1 2008, 00:33
Сообщение #52


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



Цитата(Daria @ Jun 30 2008, 20:58) *
...Как-нибудь так настроить USART, чтобы передача трех байтов занимала как можно меньше времени. Вот, в чем был вопрос...

USART настроить то можно. Надо передавать первый байт 9ю битами. Это однозначно будет начало. Но UART РС такого помоему не понимает. А вообще, как раз для этого и придумали ASCII. Если передавать в ASCII, то служебные символы и цифирки никогда не перепутаются. Ну например так, как это сделано в HEX файле.
Go to the top of the page
 
+Quote Post
Daria
сообщение Jul 3 2008, 18:16
Сообщение #53


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345



Ау, rezident! Вы там вроде обещали... забыли или некогда? очень жду smile.gif
Go to the top of the page
 
+Quote Post
Daria
сообщение Jul 15 2008, 19:37
Сообщение #54


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345



Снова я, здравствуйте smile.gif
Такой вопрос - контроллер, напоминаю - MSP430F149, гружу программу с помощью IAR, boot memory - 1КВ, а прога уже значительно больше. Как быть? Надо как-то писать основную прогу во flash, в code memory? А в boot - маленький модуль, вызывающий основную? Как это сделать? smile.gif
И rezident, если будете в наших краях, все же расскажите, как бы Вы написали работу таймераbiggrin.gif Очень жду. Вышла вот из отпуска и жду biggrin.gif
Go to the top of the page
 
+Quote Post
NoName
сообщение Jul 16 2008, 09:33
Сообщение #55


Участник
*

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



Цитата(Daria @ Jul 15 2008, 22:37) *
Снова я, здравствуйте smile.gif
Такой вопрос - контроллер, напоминаю - 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

ИАР при компиляции ругается на выход за пределы сегмента?
Go to the top of the page
 
+Quote Post
Daria
сообщение Jul 16 2008, 18:31
Сообщение #56


Местный
***

Группа: Участник
Сообщений: 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

ИАР при компиляции ругается на выход за пределы сегмента?

Да, ругается. smile.gif Использую по умолчанию. Попробую Options >> Linker >> Config >> Linker command file -> smile.gif Спасибо.
Завтра напишу, получилось или нет biggrin.gif
Go to the top of the page
 
+Quote Post

4 страниц V  « < 2 3 4
Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 07:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01449 секунд с 7
ELECTRONIX ©2004-2016