|
|
  |
MSP430 - снова вопросы от чайника, Вопросы от чайника про MSP и магнитный компас |
|
|
|
Apr 23 2009, 19:49
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(Daria @ Apr 24 2009, 00:53)  Если просто сохранить файл как file.h, подключить к проекту и в тексте основной программы # include < file.h>, то не выходит, компилятор ругается - "не удается подключить"  Стыдно, но раньше этого не делала. все управляющие функции выносила просто в отдельные фалы .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)  И еще - немного не в тему, кто-нибудь работал с кнопками, т.е. делал клавиатуру? Где бы можно было почитать что-нибудь? Мне нужно сделать управление кнопками(по нажатию передются команды порцу и выводтся инфа на индикатор). с индикатором вроде нет проблем, а вот с кнопками... Реализация клавиатуры не проблема. Для нее нужен буфер и три функции. 1. Определение состояний кнопок, устранение дребезга контактов, формирование скан-кодов и складывание их в буфер клавиатуры. 2. Проверка состояния буфера клавиатуры без извлечения скан-кода текущего символа. 3. Извлечение текущего скан-кода из буфера. В N-ный раз описывать каждую функцию уже что-то лень. Сейчас поищу, где я уже это описывал  Update. Ну вот тут, например.
|
|
|
|
|
Apr 23 2009, 19:50
|
Профессионал
    
Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528

|
Достаточно создать сам файл и написать #include "file.h", подключать к проекту как файлы .c или .cpp не нужно. По части кнопок - все методы сводятся к периодическому опросу и фильтрации чтобы устранить дребезг контактов кнопки. В разделе для начинающих и про AVR есть несколько обсуждений этой темы и примеры кода. Я при малом числе кнопок обычно пользую метод изложенный =AK= http://electronix.ru/forum/index.php?showt...st&p=231093
--------------------
Russia est omnis divisa in partes octo.
|
|
|
|
|
Apr 27 2009, 17:43
|
Местный
  
Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345

|
А кто знает какой-нибудь JTAG - отладчик, внутрисхемный, чтобы был универсальным и подходил как к MSP, так и к ARM, AVR...  сейчас придется переносить часть проекта на другой контроллер, а потом вдруг на еще какой-нибудь - не хочется каждый раз покупать новый отладчик... Вообще говоря, разве JTAG - он и в Африке не JTAG? в чем принципиальное отличие внутрисхемных эмуляторов для MSP и для AT91SAM, если они прошивают по JTAG и работают с IAR? Все-таки я еще темная
Сообщение отредактировал Daria - Apr 27 2009, 17:45
|
|
|
|
|
Apr 27 2009, 17:59
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(Daria @ Apr 27 2009, 23:43)  А кто знает какой-нибудь JTAG - отладчик, внутрисхемный, чтобы был универсальным и подходил как к MSP, так и к ARM, AVR...  сейчас придется переносить часть проекта на другой контроллер, а потом вдруг на еще какой-нибудь - не хочется каждый раз покупать новый отладчик... Я только один знаю, который сразу несколько LPT-ных эмуляторов эмулирует (такая вот тавтология  ) - SM510PCI. Могу даже комплект плат для самостоятельного изготовления этого устройства предложить.  Цитата(Daria @ Apr 27 2009, 23:43)  Вообще говоря, разве JTAG - он и в Африке не JTAG? в чем принципиальное отличие внутрисхемных эмуляторов для MSP и для AT91SAM, если они прошивают по JTAG и работают с IAR? JTAG стандартизован в виде интерфейса (IEEE-1149.1), но он не полностью определяет способ доступа к кристаллу. Т.е. если грубо итожить, то в стандарте IEEE-1149.1 описаны сигналы и архитектура, но не стандартизован протокол доступа. Кроме того, разные фирмы разный софт используют. Соответственно несмотря на то, что IDE в IAR может быть одна и та же, но в дебаггере она будет использовать разные библиотеки для разных МК.
|
|
|
|
|
May 18 2009, 17:56
|
Местный
  
Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345

|
Здравствуйте снова. Такой вопрос- Объявляю структуру Код 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 и т.д. В чем смысл этой структуры - нужно хранить массив кодов, который циклически читается, и после считывания соответствующего кода выполняется соответствующая команда. понимаю, что криво, но как тогда лучше сделать? и причем тут P5OUT?
|
|
|
|
|
May 18 2009, 20:44
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
В объявлении Код struct RezhBuffer stPBuf; слово struct - лишнее. Нужно просто Код RezhBuffer stPBuf; Насчет остального как-то туманно. Обрывки текста как обычно для тренировки телепатии?
|
|
|
|
|
May 19 2009, 17:17
|
Местный
  
Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345

|
Цитата(rezident @ May 18 2009, 23:44)  Насчет остального как-то туманно. Обрывки текста как обычно для тренировки телепатии? Мне казалось, что понятно. Ну, это все, что тносится к этому буферу  . ладно, вопрос снимается, выкинула эту структуру на фиг, сделала обычный глобальный массив и глобальный указатель чтения. Все работает  Но теперь еще вопрос. Rеzident, вы, когда говорили о функциях обработки кнопок, упоминали три функции. Вопрос - а зачем разносить проверку скан-кода без извлечения из буфера и чтение скан-кода с извлечением из буфера в разные функции? Нельзя все сделать в одной - смотрим, обновился ли буфер, и, если да, то считываем скан-код? Я вроде сделала так, вроде работет - одна функция выполняется по флажкам прерываний, она проверят=ет состояние. обрабатывает дребезг и кладет код в буфер. А другая - в цикле for();; смотрит, обновился ли буфер, и читает. НО - возможно тут опять дала маху пресловутая женская логика и в дальнейшем будут какие-то проблемы? поясните. почему именно три функции, пожалуйста
|
|
|
|
|
May 26 2009, 19:52
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(Daria @ May 27 2009, 00:38)  Здравствуйте. Подскажите, в IAR действуют функции типа sprintf, и если да, то какой файл подключить? Дык стандартно, stdio.h . Только нужно библиотеки CLIB или DLIB в опциях проекта выбрать. И учтите, что printf и sprintf жутко любят стековую память. Для модели Small или Tiny почти 250 байт стека требуют. А если захочется float выводить, и придется выбрать модель Large или Full, то заготавливайте все 1кБ-1,5кБ.
|
|
|
|
|
May 27 2009, 21:53
|
Местный
  
Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345

|
Цитата(jorikdima @ May 27 2009, 09:12)  Да и Flash они тоже любят неслабо. Проще тогда наверное сделать подобную функцию самой  Мне вообще-то надо просто число в набор символов преобразовывать(и обратно) - можно просто последовательным делением на 10 с остатком и сдвигом разбить на числа и перевести в ASCII код... Как вы считаете?
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|