Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: MSP430 - снова вопросы от чайника
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
Страницы: 1, 2, 3, 4, 5, 6
AHTOXA
Цитата(rezident @ Nov 30 2008, 05:13) *
Если у вас есть еще желание подискутировать, то давайте выделю сообщения в отдельную тему. Либо завязываем.


Завязываем, завязываемsmile.gif

2 Daria: вот обещанный пример программного дуплексного UART. Висит на таймере B.
Нажмите для просмотра прикрепленного файла
Daria
Цитата(rezident @ Nov 30 2008, 03:02) *
Полудуплексный режим работы означает, что в конкретный момент времени UART может выполнять только одно действие: либо прием, либо передачу. Аппаратный же модуль USART в MSP430 может одновременно и то и другое, т.е. он полнодуплексный. Если ваш протокол обмена использует схему "запрос-ответ", то полный дуплекс и не нужен.

Ага, ясно. Вообще именно "запрос-ответ", так что все в порядке smile.gif
АНТОХА, спасибо за пример, скачала, посмотрю.
Daria
Такой вопрос - раньше работала только с положительными напряжениями. поэтому просто брала отсчеты АЦП, теперь могут быть и отрицательные . Питание 3,3 В, Vref=1.5B. Схема включения операционнка как в предыдущем вопросе про датчик smile.gif Когда посылаешь короткий импульс тока, выходы датчика инвертируются, и нужно считать это показание
Правильно ли будет так:
Задаю V- = Vss, V+ = Vcc. V - показания АЦП, V1=(V*3.3/4096 - 1.5) и работать уже с этими значениями. Извините, что меня опять повело на тупые вопросы biggrin.gif Просто когда изделие уже вроде работает и калибруется начали выявляться всякие непонятки 05.gif оказывается, все не так надо было делать, и даже не понятно - а как же оно ухитряется работать? 05.gif
rezident
Daria, вспомните формулу прямой линии в аналитическом виде. На всякий случай напоминаю.
y=a*x+b
Для вашего применения a=(Umax-Umin)/(КОДmax-КОДmin), b=Umin. Для калибровки бОльшего не нужно. Конечно же при условии, что ваши входные цепи расчитаны правильно и там не наблюдается нелинейностей, ограничений сигнала и т.п.
Если мой ответ вас не удовлетвяет, то приведите схему с напряжениями в контрольных точках. А то отписка "в предыдущем вопросе про датчик" для меня как-то малозначительна и непонятна.
Daria
Нет, вопрос был не про калибровку smile.gif калибровок у меня несколько, под разные условия. Максимум и минимум сигнала, кстати, довольно сложно определить в полевых условиях, а перекалибровываться придется именно в полевых. Бог с ней, с калибровкой.
Просто я думала, что для правильного выполнения алгоритмов мне нужно работать не с отсчетами АЦП, а с реальными напряжениями, и для этого переводить данные АЦП в напряжения smile.gif Но вроде и так все нормально smile.gif
rezident
Цитата(Daria @ Dec 5 2008, 01:54) *
Максимум и минимум сигнала, кстати, довольно сложно определить в полевых условиях, а перекалибровываться придется именно в полевых.
У прямой линии (в отличие от, например, отрезка или вектора) нет начала и конца. В то же самое время, согласно доказательству одной геометрической теоремы, через две точки можно провести только одну прямую. wink.gif Коэффициент a=(Umax-Umin)/(КОДmax-КОДmin) определяет угол наклона прямой к оси абцисс и для его расчета можно выбирать любые две точки лежащие на прямой.
Извините, если вдруг обидел этим напоминанием прописных истин из школьного курса математики laughing.gif
Цитата(Daria @ Dec 5 2008, 01:54) *
Просто я думала, что для правильного выполнения алгоритмов мне нужно работать не с отсчетами АЦП, а с реальными напряжениями, и для этого переводить данные АЦП в напряжения smile.gif
Любое измерение относительно. "Измерить" означает "сравнить с чем-либо". Но пока у вас результаты измерений не выходят за пределы прибора и/или их не нужно использовать каким-либо образом вне прибора, то вы можете измерять в каких угодно "попугаях". А вот данные, выдаваемые прибором наружу, лучше представлять в каких-либо стандартных единицах измерения.
Daria
Цитата(rezident @ Dec 5 2008, 00:44) *
Коэффициент a=(Umax-Umin)/(КОДmax-КОДmin) определяет угол наклона прямой к оси абцисс и для его расчета можно выбирать любые две точки лежащие на прямой.
Извините, если вдруг обидел этим напоминанием прописных истин из школьного курса математики laughing.gif

Нет, нет, не обидели smile.gif Просто я не поняла сначала, про что вы говорите - голова забита своими калибровками. ( Слово одно, а подразумевается разное )smile.gif
Цитата(rezident @ Dec 5 2008, 00:44) *
Любое измерение относительно. "Измерить" означает "сравнить с чем-либо". Но пока у вас результаты измерений не выходят за пределы прибора и/или их не нужно использовать каким-либо образом вне прибора, то вы можете измерять в каких угодно "попугаях". А вот данные, выдаваемые прибором наружу, лучше представлять в каких-либо стандартных единицах измерения.

Да.да, вы совершенно правы, полностью согласна biggrin.gif Немного сама себя запутала(с посторонней помощью), но вовремя одумалась biggrin.gif Какая разница - в напряжениях или в отсчетах АЦП, главное соотношения между числами. а выдаются у меня - углы biggrin.gif Ну, и управляющие команды
Daria
Такой вопрос - во время работы в отладчике происходят следующие глюки - если "шагать" по коду, то где-то на 10-м, 12-м шаге все зависает, и нужно выходить из отладчика. Более того, такой кристалл, 149, по даташиту позволяет три точки останова при работе в реальном времени, если не ставить флажок Run to, но далеко не всегда позволяет на самом деле, иногда уже после первой в глухую зависает. И еще - иногда самопроизвольно выходит из отладчика, при этом flash стирается. Работаешь, вдруг - бац, вышел, стер и даже ничего не сообщил 05.gif С каждым днем это происходит все чаще. если раньше раз в месяц, то сейчас уже буквально каждый день. Вопрос - это скорее глюки IARa или самого проца?
rezident
Какая версия IAR? Какие опции в дебаггере включены?
C-CPY одну аппаратную точку останова под свои нужды использует. А с самопроизвольным стиранием Flash в дебаггере я вообще никогда не сталкивался 07.gif Это что-то весьма экзотическое. Возможно особенности (глюки) вашей программы.

Напоминаю, что на время стирания и записи нужно запрещать все прерывания и WDT желательно останавливать. А может вы просто где-то ошиблись с битами и вместо стирания сегмента (Erase individual segmet only) вызываете стирание всей Flash (Erase all main memory segments).
HARMHARM
Цитата(rezident @ Nov 19 2008, 13:42) *
К сочетанию volitile и const у компилятора идиосинкразия какая-то. laughing.gif

А что если считать переменную через укзатель? Не подставит ведь константу?
В крайнем случае через volatile указатель.
rezident
Цитата(HARMHARM @ Dec 23 2008, 21:29) *
А что если считать переменную через укзатель? Не подставит ведь константу?
В крайнем случае через volatile указатель.
Читайте внимательно топик, начиная с поста 163 и дальше. Там пример именно с указателем имеется.
И вообще проехали уже этот момент. Зачем влезать в чужую тему? Хотите продолжения банкета обсудить подробнее - заведите отдельную тему.
Daria
Здравствуйте. опять я biggrin.gif Давненько меня здесь не было. Работа была другая и срочная. потом праздники. потом...
короче приходтся возвращаться к своим баранам.
Такой вопрос - если кто-нибудь еще заглянет в тему - какой ресурс у flash? Вроде видела где-то цифру 10000 раз... или больше? У меня перекалибровка и перезапись flash будут при каждом включении, это где-то один два раза в день, и мне нужно указать срок эксплуатации прибора.
И еще - не про msp, но по теме - кто-нибудь знает какое-нибудь небольшое поворотное устройство с возможностью вращения 360 в азимутальной и 180 в вертикальной плоскостях? Я вот нашла какое-то PTH311. но к нему еще надо пульт управления покупать. кабели... вместе больше штуки баксов. а попроще и подешевле? мне даже не надо автоматическое управление, я бы и руками повращала. если бы была возможность фиксировать нужный угол - это нужно для первоначальной настройки платы. Вот говорят есть какие-то треноги для настройки антенн - где-бы их можно было достать? biggrin.gif
как всегда - странные вопросы. Но - надо.
rezident
Цитата(Daria @ Mar 1 2009, 00:42) *
какой ресурс у flash? Вроде видела где-то цифру 10000 раз... или больше?
Минимум - 10E+4, типовое - 10E+5. А видели в даташите. См. фрагмент.
Цитата(Daria @ Mar 1 2009, 00:42) *
У меня перекалибровка и перезапись flash будут при каждом включении, это где-то один два раза в день, и мне нужно указать срок эксплуатации прибора.
Лет на 10 должно хватить. Как минимум.
Цитата(Daria @ Mar 1 2009, 00:42) *
И еще - не про msp, но по теме - кто-нибудь знает какое-нибудь небольшое поворотное устройство с возможностью вращения 360 в азимутальной и 180 в вертикальной плоскостях?
Видал такое на одном из местных заводов, выпускающих гироскопы и пр. системы из этой же оперы. Поворотный стол с нониусом по горизонтальной окружности и вертикальной полуокружности . Купить именно такой - нереально. Во-первых, они их делают для себя и подобных в России по пальцам одной руки сосчитать можно. Во-вторых, цена у него rolleyes.gif .... за три таких "столика" как минимум один Ford Focus точно купить можно laughing.gif
_3m
Цитата(Daria @ Feb 28 2009, 22:42) *
Такой вопрос - если кто-нибудь еще заглянет в тему - какой ресурс у flash? Вроде видела где-то цифру 10000 раз... или больше? У меня перекалибровка и перезапись flash будут при каждом включении, это где-то один два раза в день, и мне нужно указать срок эксплуатации прибора.

Зачем вам флэш если вы делаете калибровку при каждом включении ???
10000 - не такой уж большой ресурс, подумайте как его экономить. Можно например отвести N областей и писать поочередно, тогда стирать весь сегмент надо будет в N раз реже, ресурс увеличится.


Цитата
И еще - не про msp, но по теме - кто-нибудь знает какое-нибудь небольшое поворотное устройство с возможностью вращения 360 в азимутальной и 180 в вертикальной плоскостях?

Фотоштатив / запчасти от фотоштатива приспособить не пробовали?
Daria
Цитата(_3m @ Mar 1 2009, 11:40) *
Зачем вам флэш если вы делаете калибровку при каждом включении ???

Ну, это в данных условиях при каждом, делаться будет автоматически, чтобы пользователь не заморачивался - нужно или нет ему перекалибровываться. и не думал об этом. А вообще-то для других случаев может и месяц не перекалибровываться. если не менять место действия.
Цитата(_3m @ Mar 1 2009, 11:40) *
Фотоштатив / запчасти от фотоштатива приспособить не пробовали?

Нет, не фотолюбитель laughing.gif Но спасибо, подумать можно.

Цитата(rezident @ Feb 28 2009, 23:17) *
Минимум - 10E+4, типовое - 10E+5. А видели в даташите. См. фрагмент.
Лет на 10 должно хватить. Как минимум.

Ага, спасибо smile.gif
Цитата(rezident @ Feb 28 2009, 23:17) *
Видал такое на одном из местных заводов, выпускающих гироскопы и пр. системы из этой же оперы. Поворотный стол с нониусом по горизонтальной окружности и вертикальной полуокружности . Купить именно такой - нереально. Во-первых, они их делают для себя и подобных в России по пальцам одной руки сосчитать можно. Во-вторых, цена у него rolleyes.gif .... за три таких "столика" как минимум один Ford Focus точно купить можно laughing.gif

Мда... rolleyes.gif
SSerge
Цитата(Daria @ Mar 1 2009, 01:42) *
И еще - не про msp, но по теме - кто-нибудь знает какое-нибудь небольшое поворотное устройство с возможностью вращения 360 в азимутальной и 180 в вертикальной плоскостях?

Почти готовое устройство есть в матричном принтере. Они имеют команды для продвижения бумаги вперёд и назад, если шаговик с редуктором из принтера вытащить и провода к шаговику удлинить - вращение по одной координате можно обеспечить. Для второй потребуется второй принтер smile.gif
Впрочем сам принтер не обязателен, управление шаговиком сделать не сложно (если не гнаться за скоростью). Благодаря редуктору момент получается неплохой и дискретность в десятые доли градуса вполне достижима.
Daria
Цитата(SSerge @ Mar 1 2009, 15:36) *
Почти готовое устройство есть в матричном принтере.

Проблема осложняется тем, что устройство должно быть известным. т.е. его можно бы было купить - мне нужно написать инструкцию по первоначальной настройке платы, и указать там устройство с ТУ или с известным прозводителем. Ну, или разработать свое, но тогда на него тоже нужна будет документация biggrin.gif

А фотоштативы не проградуированыsmile.gif
Vladimir_T
У фирмы Bourns есть инкрементные оптические датчики вращения. Очень компактные, правда всего 128 дискрет на оборот. Но у других фирм есть и более точные и инкрементные, и абсолютные датчики. Есть инкрементные датчики ЛИР-158, в Питере делают. Оснастив таким датчиком поротную платформу можно следить за ее положением по этому инкрементному датчику, прада после включения платформу следует возвращать в нулевое, начальное положение и уже от этого положения следить за перемещением. Для этого во многих инкркментных датчиках есть канал нуль-положения.
Daria
Цитата(Vladimir_T @ Mar 1 2009, 21:49) *
У фирмы Bourns есть инкрементные оптические датчики вращения. Очень компактные, правда всего 128 дискрет на оборот.Оснастив таким датчиком поротную платформу можно следить за ее положением по этому инкрементному датчику

Да, примерно такая штука у нас сейчас разрабатывается(для других целей), поворотник с датчиком и собственным процессором. но я же говорила, что нужно указать ГОТОВОЕ устройство. Пока мы доделаем эту штуку со всей документацией и актами испытаний... мне нужно закрыть все вопросы в апреле. в дальнейшем расчитываю использовать этот наш поворотник, там точность установки обещают около 0,1 градус. Но когда это будет... unsure.gif
Vladimir_T
Католог "Мехатроники" нужно изучить. Но, честно говоря, сразу я для вас нужный механизм угловых перемещений не нашел. В свое время у нас в оптической лаборатории было очень много стандартных лабораторных поворотных столов с микроподвижкой. Посмотрите из ассортимента механических узлов для оптической промышленности. Спрошу у наших оптиков кто выпускает подобные механизмы. Недавно были удивлены, увидев, как очень уважаемые фирмы используют в поворотных высокоточных механизмах ..... пассики. При том, что прибор может работать в очень суровых климатич. условиях.
Daria
Цитата(Vladimir_T @ Mar 3 2009, 20:32) *
Спрошу у наших оптиков кто выпускает подобные механизмы.

Спросите, пожалуйста. буду рада любой информации.
SSerge
Вспомнил ещё про одно устройство.
Сейчас (импортные) телескопы для любителей астрономии оснащают устройствами для автоматического позиционирования и стоит всё это недорого, даже вместе с телескопом.
http://shop.astronomy.ru/list/label/s_mount.html
http://www.astronomy.ru/forum/
Kurt
Подозреваю, что если девушка собралась вращать свой магнитный компас в азимутальной плоскости, то основное требование к стенду помимо точности - его исполнение из немагнитных материалов. Так как любой паршивый винтик даже из нержавейки, может очень сильно удивить )). Специальные стенды изготавливает и продает, например, вот эта контора.
С другой стороны, нужен ли Вам такой стол для компаса на магниторезисторах HMC и MEMS-ах. Точности вам не важны, выше давали сцылки на алгоритмы калибровки, которые не требуют точного позицирования. А поверить прибор, причем с офиц. бумажкой, можете в ближайшей в геофизике. ))
Daria
Цитата(SSerge @ Mar 4 2009, 00:07) *
Вспомнил ещё про одно устройство.
Сейчас (импортные) телескопы для любителей астрономии оснащают устройствами для автоматического позиционирования и стоит всё это недорого, даже вместе с телескопом.
http://shop.astronomy.ru/list/label/s_mount.html
http://www.astronomy.ru/forum/

Ух ты, спасибо! Это, действительно, интересно, надо подумать

Цитата(Kurt @ Mar 4 2009, 07:21) *
Подозреваю, что если девушка собралась вращать свой магнитный компас в азимутальной плоскости, то основное требование к стенду помимо точности - его исполнение из немагнитных материалов. Так как любой паршивый винтик даже из нержавейки, может очень сильно удивить )). Специальные стенды изготавливает и продает, например, вот эта контора.
С другой стороны, нужен ли Вам такой стол для компаса на магниторезисторах HMC и MEMS-ах. Точности вам не важны, выше давали сцылки на алгоритмы калибровки, которые не требуют точного позицирования. А поверить прибор, причем с офиц. бумажкой, можете в ближайшей в геофизике. ))

Да, вы правы. Но дело в том, что магнитный датчик я калибрую уже в системе в целом, и на машине. на столе необходимо откалибровать как можно точнее акселерометр(хотя для работы и настройки хотелось бы иметь стенд и для магнитных датчиков). Все упирается в то, что надо написать инструкцию по калибровке акселерометра, в которой все приборы должны быть сертифицированы. А насчет того, что "не требует точного позиционирования" - могу поспоритьsmile.gif калибрую именно этими способами, и чем точнее позиционирование при калибровке, тем точнее результат laughing.gif
кстати, у меня накопилось столько вопросов, вы не могли бы кинуть мне e-mail в личку или какой-нибудь адрес. где часто бываете, хочется поспрашивать у вас, если вы делали компас. ну, и вообще обсудить с понимающим человекомsmile.gif
Daria
Здравствуйте. снова яsmile.gif
И опять глупые вопросы - как мне созадть .h- файл? Если просто сохранить файл как file.h, подключить к проекту и в тексте основной программы # include < file.h>, то не выходит, компилятор ругается - "не удается подключить" laughing.gif Стыдно, но раньше этого не делала. все управляющие функции выносила просто в отдельные фалы .c, подключенные к проекту
И еще - немного не в тему, кто-нибудь работал с кнопками, т.е. делал клавиатуру? Где бы можно было почитать что-нибудь? biggrin.gif
Мне нужно сделать управление кнопками(по нажатию передются команды порцу и выводтся инфа на индикатор). с индикатором вроде нет проблем, а вот с кнопками...
rezident
Цитата(Daria @ Apr 24 2009, 00:53) *
Если просто сохранить файл как file.h, подключить к проекту и в тексте основной программы # include < file.h>, то не выходит, компилятор ругается - "не удается подключить" laughing.gif Стыдно, но раньше этого не делала. все управляющие функции выносила просто в отдельные фалы .c, подключенные к проекту
Угловые скобки указывают компилятору, что файл с именем, заключенным в скобки, нужно искать в системных (для компилятора) папках. Для включения пользовательских файлов проекта нужно использовать кавычки и полный или относительный (относительно папки проекта) путь. Я лично предпочитаю относительные пути. Тогда при переносе проекта в другую папку или на другой диск проблем не возникает.
Код
#include "..\..\_INC\tpLOCdef.h"
#include "..\_INC\msp430def.h"
#include "..\_INC\timer3KBD.h"
#include "..\_INC\KBDdef.h"
#include "..\..\_INC\xKBD_Key.h"

Цитата(Daria @ Apr 24 2009, 00:53) *
И еще - немного не в тему, кто-нибудь работал с кнопками, т.е. делал клавиатуру? Где бы можно было почитать что-нибудь? biggrin.gif
Мне нужно сделать управление кнопками(по нажатию передются команды порцу и выводтся инфа на индикатор). с индикатором вроде нет проблем, а вот с кнопками...
Реализация клавиатуры не проблема. Для нее нужен буфер и три функции.
1. Определение состояний кнопок, устранение дребезга контактов, формирование скан-кодов и складывание их в буфер клавиатуры.
2. Проверка состояния буфера клавиатуры без извлечения скан-кода текущего символа.
3. Извлечение текущего скан-кода из буфера.
В N-ный раз описывать каждую функцию уже что-то лень. Сейчас поищу, где я уже это описывал smile.gif

Update. Ну вот тут, например.
SSerge
Достаточно создать сам файл и написать #include "file.h", подключать к проекту как файлы .c или .cpp не нужно.

По части кнопок - все методы сводятся к периодическому опросу и фильтрации чтобы устранить дребезг контактов кнопки.
В разделе для начинающих и про AVR есть несколько обсуждений этой темы и примеры кода.
Я при малом числе кнопок обычно пользую метод изложенный =AK= http://electronix.ru/forum/index.php?showt...st&p=231093
Daria
Всем спасибоsmile.gif С файлами ясно, получилось, про кнопки почитаю укзанные темыsmile.gif
Daria
А кто знает какой-нибудь JTAG - отладчик, внутрисхемный, чтобы был универсальным и подходил как к MSP, так и к ARM, AVR... biggrin.gif сейчас придется переносить часть проекта на другой контроллер, а потом вдруг на еще какой-нибудь - не хочется каждый раз покупать новый отладчик...
Вообще говоря, разве JTAG - он и в Африке не JTAG? в чем принципиальное отличие внутрисхемных эмуляторов для MSP и для AT91SAM, если они прошивают по JTAG и работают с IAR?
Все-таки я еще темная biggrin.gif
rezident
Цитата(Daria @ Apr 27 2009, 23:43) *
А кто знает какой-нибудь JTAG - отладчик, внутрисхемный, чтобы был универсальным и подходил как к MSP, так и к ARM, AVR... biggrin.gif сейчас придется переносить часть проекта на другой контроллер, а потом вдруг на еще какой-нибудь - не хочется каждый раз покупать новый отладчик...
Я только один знаю, который сразу несколько LPT-ных эмуляторов эмулирует (такая вот тавтология biggrin.gif) - SM510PCI. Могу даже комплект плат для самостоятельного изготовления этого устройства предложить. wink.gif
Цитата(Daria @ Apr 27 2009, 23:43) *
Вообще говоря, разве JTAG - он и в Африке не JTAG? в чем принципиальное отличие внутрисхемных эмуляторов для MSP и для AT91SAM, если они прошивают по JTAG и работают с IAR?
JTAG стандартизован в виде интерфейса (IEEE-1149.1), но он не полностью определяет способ доступа к кристаллу. Т.е. если грубо итожить, то в стандарте IEEE-1149.1 описаны сигналы и архитектура, но не стандартизован протокол доступа. Кроме того, разные фирмы разный софт используют. Соответственно несмотря на то, что IDE в IAR может быть одна и та же, но в дебаггере она будет использовать разные библиотеки для разных МК.
Daria
А вот J-Link( MT-Link) - разве не почти универсальный?
rezident
Цитата(Daria @ Apr 29 2009, 00:03) *
А вот J-Link( MT-Link) - разве не почти универсальный?
Встречно-наводящий вопрос: если учесть, что большинство JTAG эмуляторов, подключаемых к LPT-порту представляют из себя всего лишь буферы и/или преобразователи/согласователи уровней, то можно ли сделать заключение, что LPT-порт это почти универсальный JTAG-эмулятор? wink.gif
Про J-Link почитайте его описание. Там что-либо про MSP430 и AVR сказано?
Daria
Здравствуйте снова.
Такой вопрос-
Объявляю структуру
Код
typedef struct RezhBuffer
{
    int* Data;            
    int NData;                        
    int pRead;                        
}
RezhBuffer;

#define sizePBuf 5
struct RezhBuffer stPBuf;
int  RezhBuf[sizePBuf]={0x01,0x02,0x03,0x04,0x05};

В main инициализирую
Код
stPBuf.NData =sizePBuf;
stPBuf.Data=RezhBuf;
BufferResetRezh(&stPBuf);


При этом компилятор инициализирует буфер портом P5, и при
Код
*Byte = pBuffer->Data[pBuffer->pRead]

записывает в P5OUT=0x01, на следующем шаге 0x02 и т.д. 07.gif
В чем смысл этой структуры - нужно хранить массив кодов, который циклически читается, и после считывания соответствующего кода выполняется соответствующая команда. понимаю, что криво, но как тогда лучше сделать? и причем тут P5OUT? 07.gif
rezident
В объявлении
Код
struct RezhBuffer stPBuf;

слово struct - лишнее. Нужно просто
Код
RezhBuffer stPBuf;

Насчет остального как-то туманно. Обрывки текста как обычно для тренировки телепатии?
Daria
Цитата(rezident @ May 18 2009, 23:44) *
Насчет остального как-то туманно. Обрывки текста как обычно для тренировки телепатии?

Мне казалось, что понятно. Ну, это все, что тносится к этому буферу laughing.gif . ладно, вопрос снимается, выкинула эту структуру на фиг, сделала обычный глобальный массив и глобальный указатель чтения. Все работаетsmile.gif
Но теперь еще вопрос. Rеzident, вы, когда говорили о функциях обработки кнопок, упоминали три функции. Вопрос - а зачем разносить проверку скан-кода без извлечения из буфера и чтение скан-кода с извлечением из буфера в разные функции?
Нельзя все сделать в одной - смотрим, обновился ли буфер, и, если да, то считываем скан-код?
Я вроде сделала так, вроде работет - одна функция выполняется по флажкам прерываний, она проверят=ет состояние. обрабатывает дребезг и кладет код в буфер. А другая - в цикле for();; смотрит, обновился ли буфер, и читает.
НО - возможно тут опять дала маху пресловутая женская логика и в дальнейшем будут какие-то проблемы?
поясните. почему именно три функции, пожалуйстаsmile.gif
rezident
Цитата(Daria @ May 19 2009, 23:17) *
поясните. почему именно три функции, пожалуйстаsmile.gif
В данном случае слово "функция" нужно понимать как функциональность, а не как функцию языка программирования. У меня обращения к буферу клавиатуры: запись, чтение с и без извлечения из буфера тоже обычно объединяются в одну функцию. А вот сканирование и устранение дребезга чаще всего это отдельная функция.
Daria
Здравствуйте. Подскажите, в IAR действуют функции типа sprintf, и если да, то какой файл подключить?
rezident
Цитата(Daria @ May 27 2009, 00:38) *
Здравствуйте. Подскажите, в IAR действуют функции типа sprintf, и если да, то какой файл подключить?
Дык стандартно, stdio.h . Только нужно библиотеки CLIB или DLIB в опциях проекта выбрать. И учтите, что printf и sprintf жутко любят стековую память. Для модели Small или Tiny почти 250 байт стека требуют. А если захочется float выводить, и придется выбрать модель Large или Full, то заготавливайте все 1кБ-1,5кБ.
jorikdima
Цитата(rezident @ May 26 2009, 23:52) *
Дык стандартно, stdio.h . Только нужно библиотеки CLIB или DLIB в опциях проекта выбрать. И учтите, что printf и sprintf жутко любят стековую память. Для модели Small или Tiny почти 250 байт стека требуют. А если захочется float выводить, и придется выбрать модель Large или Full, то заготавливайте все 1кБ-1,5кБ.

Да и Flash они тоже любят неслабо.
Daria
Цитата(jorikdima @ May 27 2009, 09:12) *
Да и Flash они тоже любят неслабо.

Проще тогда наверное сделать подобную функцию самой unsure.gif Мне вообще-то надо просто число в набор символов преобразовывать(и обратно) - можно просто последовательным делением на 10 с остатком и сдвигом разбить на числа и перевести в ASCII код... Как вы считаете?
VAI
Я уже где-то выкладывал myprintf(), который сделал из исходников библиотек для ПИК16. Вполне успешно применяем его для мелких MSP.
Если надо в строку выводить, то функцию putchar() надо заменить на вывод в строку.
А так putchar() - это функция низкоуровневого вывода символа в конкретное физическое устройство. Использовали для вывода на термопринтер через RS232, на символьный индикатор, на 7-сегментный индикатор. Естественно, для каждого устройства свой putchar().
Daria
Блин, ну что за фигня - личный ящик заблокировали, сообщения из темы мои удаляют... то ли форум глючит, то ли... какая-то фигня crying.gif Подскажите, к кому обратиться за помощью и разъяснениями?

Модератор. Daria, Ваше сообщение я перенес в подобающий ему раздел форума. Там же есть и ответы на все вопросы. В последующем пишите сразу в раздел форума, соответствующий теме вопроса.
С уважением, rezident.
Daria
Модератор. Daria, Ваше сообщение я перенес в подобающий ему раздел форума. Там же есть и ответы на все вопросы. В последующем пишите сразу в раздел форума, соответствующий теме вопроса.
С уважением, rezident.

[/quote]
Извините, учту. Спасибо за разъяснения
Daria
Здравствуйте. Это снова я laughing.gif
Устройство худо-бедно работало около полугода и неожиданно произошло полное стирание flash crying.gif
Чем это могло быть вызвано - возможные причины? перепада напряжения питания не было, да и кристалл сейчас с BOR, какой глюк мог быть в программе, чтобы такое натворить? хотя бы варианты?
rezident
Я уже запамятовал, а снова просматривать всю ветку лень. laughing.gif У вас м/с супервизора питания в схеме имеется?
Daria
Цитата(rezident @ Sep 24 2009, 23:56) *
Я уже запамятовал, а снова просматривать всю ветку лень. laughing.gif У вас м/с супервизора питания в схеме имеется?

Супервизора нет, но с питанием все было в порядке - устройство второе в цепи, сначала питание подается на управляющее устройство, которое кабелем соединено с этим. в том стоит такой же MSP - и все в порядке. Кабели хорошие, разъемы надежные, к тому же в кристалле есть BOR.
Похоже, это произошло после принятия каких-то байтов по UART во время штатной работы, никаких операций с flash в этот момент не производилось - с чем это может быть связано?
Вообще из программы очистить память довольно сложно, как я понимаю, установить ERASE, пароль... как это можно сделать аппаратно? TCK, RST/NMI во внешний разъем не выведены, там только TX, RX аппаратного UART, питание и земля.
Dog Pawlowa
Цитата(Daria @ Sep 25 2009, 22:02) *
Супервизора нет, но с питанием все было в порядке -

С этой электроникой так все обманчиво.... Ничто не может доказать другое...
Но у нас всегда было частичное стирание флэш в случае плохого питания.
rezident
Цитата(Daria @ Sep 26 2009, 01:02) *
Супервизора нет, но с питанием все было в порядке
Этого вы не можете знать со 100% достоверностью. Нет супервизора - нет гарантированного сброса при снижении напряжения питания.
Цитата(Daria @ Sep 26 2009, 01:02) *
Вообще из программы очистить память довольно сложно, как я понимаю, установить ERASE, пароль... как это можно сделать аппаратно?
Если в программе есть функции записи/стирания Flash то вероятность попасть на нее отлична от нуля. А как гласит один из законов Мерфи: "если вероятность возникновения неприятности отлична от нуля, то она (неприятность) обязательно произойдет" wink.gif
Ставьте супервизор питания. BOR для такой защиты не панацея. Я уже неоднократно пояснял, что BOR "защищает" лишь от зависания при медленном нарастании напряжения питания и все! От хаотичного выполнения команд при снижении питания он нисколько не защищает. Сравните хотя бы минимально допустимое рабочее напряжение для ядра и уровень срабатывания BOR.
Allregia
Подскажите плиз - храню во влеше данных параметры, есть режим их изменения, но как проинициализировать эту область дефолтными параметрами ?
Т.е. как ИАРу обяснять, чообы он туда что-то запихал?

Пробовал так, но не помогло:
Код
#pragma location=0x1080
char const DefaultName[9]={"vicor000"};
rezident
Цитата(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 подставляет константные выражения непосредственно в выражения/операторы (т.с. прямо по месту), а сам инициализированный константный массив/структуру из результирующего кода выбрасывает.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.