FREEKER 0 25 июля, 2007 Опубликовано 25 июля, 2007 · Жалоба Помогите разобраться с таймером. Компилятор ругается на эти строки (Конкретно на идентификатор "vector"... и всякие другие предупреждения): #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A (void) Контроллер MSP430F169. Может что то забыл подключить или указать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 25 июля, 2007 Опубликовано 25 июля, 2007 · Жалоба Компилятор ругается на эти строки (Конкретно на идентификатор "vector"... и всякие другие предупреждения):#include <msp430x16x.h> ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 25 июля, 2007 Опубликовано 25 июля, 2007 (изменено) · Жалоба Помогите разобраться с таймером. Компилятор ругается на эти строки (Конкретно на идентификатор "vector"... и всякие другие предупреждения): #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A (void) Контроллер MSP430F169. Может что то забыл подключить или указать? Судя по всему, вы забыли включить заголовочный файл с описанием стандартных для TI имен. Строка вида #include <msp430x16x.h> у вас в программе имеется? Изменено 26 июля, 2007 пользователем rezident Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FREEKER 0 26 июля, 2007 Опубликовано 26 июля, 2007 · Жалоба #include <msp430x16x.h> конечно имеется. Для проверки я взял пример из Slac069b/fet140_ta_01.c заменил на #include <msp430x16x.h> Но ошибки все теже. Есть особые разницы между 149 и 169? Раньше разницы не наблюдал. Или с Workbench, чего случилось.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aag 0 26 июля, 2007 Опубликовано 26 июля, 2007 (изменено) · Жалоба попробуйте так: #include <msp430x16x.h> bool a; #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A0_ISR(void) { a = !a; if (a) P1OUT = 0x01; else P1OUT = 0x00; } int main() { WDTCTL = WDTPW + WDTHOLD; P1DIR = 0xFF; P1SEL = 0x00; TACCTL0 = CCIE; TACCR0 = 50000; TACTL = TASSEL_2 | MC_1; a = false; _EINT(); _BIS_SR(LPM0_bits | GIE); return 0; } этот код 100% рабочий (только что проверил) Если будет продолжать ругаться, тогда остается один вопрос - какой у вас компилятор? Изменено 26 июля, 2007 пользователем aag Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NoName 0 26 июля, 2007 Опубликовано 26 июля, 2007 (изменено) · Жалоба interrupt [ TIMERA0_VECTOR ] void TimerA( void ) {...} - в предыдущем поколении ИАР, только вот 169 они не поддерживали, или что то с настройками проекта, например под ИАР 3.30 что то подобное было, возможно помогло #pragma language=extended, точно не помню. Изменено 26 июля, 2007 пользователем NoName Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 26 июля, 2007 Опубликовано 26 июля, 2007 · Жалоба #include <msp430x16x.h> конечно имеется. Для проверки я взял пример из Slac069b/fet140_ta_01.c заменил на #include <msp430x16x.h> Но ошибки все теже. Какая версия компилятора у вас? Какие именно ошибки? Скриншот приложите или укажите номер/сообщение. Правой кнопкой мыши на TIMERA0_VECTOR кликните и выберите Go to definition of TIMERA0_VECTOR. Должно перейти на define с этим именем. Если не переходит, то значит символьное имя не определено или хидер не подключился или вообще отсутствует. Есть особые разницы между 149 и 169? Раньше разницы не наблюдал. Или с Workbench, чего случилось.... Если не используете DMA, DAC и SVS, то других особых отличий у них не припомню. Тогда можно использовать хидер msp430x14x.h, если с ним работает. Кстати, в последних версиях IAR можно использовать такое описание процедуры прерывания #pragma vector=TIMERA0_VECTOR #pragma type_attribute=__interrupt void Timer_A0_ISR(void) { .... } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FREEKER 0 27 июля, 2007 Опубликовано 27 июля, 2007 · Жалоба Версия WorkBench 2.31E, все программы под ним делал. Есть версия 3.41a, но под ней не работаю, хотя наверно придётся перейти. Хидеры (14x, 16x) менял уже, результат один. Даже вытаскивал из 3.41 в 2.31 (для эксперимента), оказалось, они незаменяемые. Скорее всего дело в версии. Всем Спасибо. Пойду пробовать код под разными версиями. Если не получится, выложу скриншоты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FREEKER 0 27 июля, 2007 Опубликовано 27 июля, 2007 · Жалоба Проблема в версии была. Заработало. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 27 июля, 2007 Опубликовано 27 июля, 2007 · Жалоба ВХидеры (14x, 16x) менял уже, результат один. Даже вытаскивал из 3.41 в 2.31 (для эксперимента), оказалось, они незаменяемые. Кроме хидеров нужно еще и xcl-файлы копировать. P.S. текущая версия ИАР ЕВ430 3.42E вроде бы, однако скачать дают только 3.42A. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FREEKER 0 12 сентября, 2007 Опубликовано 12 сентября, 2007 · Жалоба Опять косяк..... Но наоборот теперь. В новой версии IAR ругается на строку: interrupt[ADC_VECTOR] void ADC12_ISR (void) В старой работает. Что забыл подключить? Это есть: #include <msp430x16x.h>.... Просто перенёс прогу из 2.31 в 3.41. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 12 сентября, 2007 Опубликовано 12 сентября, 2007 · Жалоба Вы видимо невнимательно прочитали документы MSP430 Migration Guide и MSP430 C/C++ Compiler Reference Guide или просто манкировали этой необходимостью ;) В новой версии компилятора прерывание должно оформляться так #pragma vector=ADC_VECTOR __interrupt void ADC12_ISR(void) { ... } или так #pragma vector=ADC_VECTOR #pragma type_attribute=__interrupt void ADC12_ISR(void) { ... } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kurt 0 13 сентября, 2007 Опубликовано 13 сентября, 2007 · Жалоба Пример из того же guide c возможностью отката на старую версию: #if __VER__ < 200 interrupt [ VECTOR ] void my_function( void ) #else #pragma vector=VECTOR __interrupt void my_function( void ) #endif { } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться