Jump to content

    

Sinoptic555

Участник
  • Content Count

    91
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Sinoptic555

  • Rank
    Частый гость
  1. Спасибо. Если есть опыт, подскажите какой полевой транзистор лучше использовать. Да вроде обычный диод, подскажите что использовали? (SMD версию)
  2. При питании MSP430 я использую 3 батарейки + стабилизатор LP2981-3V. Кто-нибудь, подскажите толковую схему защиты при смене полярности. Я поставил диод, BAS40 перед LP2981, но напряжение упало с 4.3 до 2.8В. Получилось, что LP2981 с диодом не работает, так как для стабилизатора нужно не менее 3В. Хотелось бы получить защиту переносящую обратную полярность ~5В, а лучше 12В. Первый раз решаю такие вопросы – видимо чего-то недопонимаю, может диод не тот поставил. Поделитесь своим опытом, киньте ссылку. Спасибо.
  3. ВСЕ!!! Разрешил проблему! Оказалось все до предело просто. Купил себе родной MSP-FET430UIF (4200 руб), при инсталяции указал папочку с дровами (та что в IAR4.10a) IAR мне обновил firmware и все запело и заплясало!!! Супер! А я то бился об стену, думал плату глючную сделал. Заработали даже платки ранее мной созданные, которые я как "неудачный дизайн" пометил и в отстой выбросил. Ух счастья то сколько! :08: Сегодня определенно МОЙ день! Olimex - похоже не для всего годиться. Для MSP430F449 хватало, к MSP430F249, MSP430F2272 УВЫ подсоединиться не смог. К этим же платам MSP-FET430UIF подсоединился без проблем. Прямо как в сказке "О попЕ и его работнике балде" - "не гонялся бы ты поп за дешевизной" :)
  4. Кристалл указан правильно (MSP430F249) и "Erase main and Information memory" тоже указано Прикрепляю проект. Все наработки по разведенной плате использую с рабочего проекта MSP430F449. Там все работало и я ничего изобретать не стал, просто захотел поменять кристалл. Vario4_249.zip
  5. Так и есть. Там у меня тройной джампер стоит (см. влож. картинку) Подавая питание 3V на 4 пин JTAG, конечно, при записи программы напряжение на RST/NMI до 3.3 на подскакивает, так и держится на 3V. Мой опыт по MSP430F449 показывает что можно вообще без этого джампера, все работатет. Но это в данном случае не важно. Я пробовал и с собственным питанием и с внешним, результат один и тот же "Fatal error: Failed to write memory at 0x1100 Session aborted!"
  6. RST/NMI=1 (3V) Происходит следующее. 1. Нажимаю в IAR Debug. Он ругается: "Emulator. Chosen derivative (MSP430F249) and actual hardware (Device unknown) do not match. Continue to download?" Нажимаю "Да". На время закачки RST/NMI с 3V подскакивает до 3.3V Шкала закачки показывает что все нормально, скачет 2 раза (стирание затем закачака) После того этого появляется сообщение "Emulator. Fatal error: Failed to write memory at 0x1100 Session aborted!" На этом все и заканчивается. Закачиваемая програмка минимальна: #include "msp430x24x.h" int main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; return 0; } Ну там он вроде как задержку дает У меня OLIMEX USB - JTAG-TINY - может он что-то гадит
  7. Кто нибудь работал с MSP430F249 (или аналогом) ? Выложите, если можно, фрагмент своей схемки подключения контроллера. Все зубки уже поломал, оживить F249 не удается. Убрал из схемы для простоты ВСЕ! Оставил самое необходимое. - Запитал: DVcc, AVcc (3V) - Заземлил: DVss, AVss - Часовой кварц (pin 8, 9) с двумя кондерами на 10pF - JTAG развел по аналогии с MSP430F449 (сопротивление 47k и кондер 10nF). Не шевелится чип, ну никак! Вроде ничего сложного! Подаю питание, НО на кварц с чипа ничего не подается, соответственно и кварц молчит все молчит. БРЕД ПОЛНЫЙ! Кварц то должен ведь хоть как то шевелиться после подачи питания на MSP430.
  8. Они наверняка следуют своей, только им известной концепции - которая к стати может менятся после очередной конференции или еще чего либо. Вот вы как разработчик, придумывая что то новое, наверняка в будущее смотрите, чтобы облегчить будущую эксплуатацию и минимизировать издержки. Так и они, смотрят в будущее, ...типа, а фигня, пусть разработчик сейчас плюхается, разберется с нюансами, зато потом все будет в рамках единой - СВОЕЙ - концепции. Хотя, конечно, по идиотски получается, им не до нас с вами. Хорошая статейка, надо сохранить чтобы на эти грабли не наступать.
  9. Проблему вроде разрешил - напутал с инициализацией. Взял Ваш фрагмент и ТimerB стал работать стабильно. Также, нашел ошибку - поперли необработанные прерывания от портов, вот все и уходило в никуда с переполнением стека. Сейчас все заработало как часики. :cheers: Огромное спасибо.
  10. Пытаюсь добиться, чтобы таймер B каждую секунду генерил прерывание. Проблема в том, что переполняется стек и программа перестает работать. Таймер запускаю в режиме "вверх" MCx=01 и TBCCR0=0x7FFF; Таймер тактирую от часового кварца от ACLK. В общем 1, может 2 раза оба прерывания отрабатываются: TIMERB0_VECTOR и переполнение таймера по TBIV=0E. Однако, если ставится большой период в TBCCR0 то вообще ничего не отрабатывается, стек переполняется и все. Сложных функций нет, рекурсий нет, да и программы как таковой нет откуда переполнение ума не приложу. Скажите, это нормально что при переполнении таймера и установке TBIFG=1 во всех регистрах TBCCTLx (кроме нулевого) CCIFG устанавливается в 1? Всю голову уже сломал что не так, но понять не могу что не так. Подскажите может кто то с переполнениями стека уже сталкивался. Внизу привожу код - в общем то все по книжке. void TimerB_Init(void){ //Register Clearing TBCTL|=TBCLR; //Clear timer [TAR] value TBCTL|=CNTL_0; // Set counter lenght: 16 bit TBCTL|=TBSSEL_1; //select ACLK (32768) input TBCTL|=TBCLGRP_0; //Timer B Group: 0 - individually TBCTL&=0xFF0F; //IDx=00b, MCx=00xx TBCTL|=TBIE; // Timer B interrupt enable =ON TBCTL&=~TBIFG; // Timer B interrupt flag =OFF TBCCTL0=0x000; TBCCTL0|=CLLD_0+CCIE; TBCCTL1=0x000; TBCCTL2=0x000; TBCCTL3=0x000; TBCCTL4=0x000; TBCCTL5=0x000; TBCCTL6=0x000; //Set start conditions TBCCR0=0x7FFF; //Interrupt every 1 sec. //TBCCR0=0x100; TBCCR1=0x0000; TBCCR2=0x0000; TBCCR3=0x0000; TBCCR4=0x0000; TBCCR5=0x0000; TBCCR6=0x0000; TBCTL&=0xFFCF; //MCx=00 TBCTL|=0x10; // Start timer UP in continious mode } #pragma vector=TIMERB0_VECTOR __interrupt void TimerB0(void){ int a=0; a++; } #pragma vector=TIMERB1_VECTOR __interrupt void TimerB1(void){ int b=0; switch(TBIV){ case 0x02: break; case 0x04: break; case 0x0E: // Timer overflow b++; break; } } int main( void ) { int a=0; WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer FLL_CTL0&=0xF; // Reset high 4 bits SCFI0 &=0x3F; // Clear FLLDx SCFI0 |= FN_2; // x2 DCO, 4MHz nominal DCO SCFQCTL = 74; // (74+1) x 32768 = 2.45Mhz _BIS_SR(GIE); // Global interrupt enable TimerB_Init(); // Wait for interrupts while(1){ a=a+1; if(a>500) a=0; } return 0; }
  11. Спасибо большое. У меня используется OLIMEX JTAG-TINY (USB), надеюсь все будет нормально. По крайней мере IAR 4.10a его вроде нормально идентифицирует для 430F2272 как Spy-Bi-Wire.
  12. Подскажите хотя-бы, такое соединение JTAG Spy-Bi-Wire работает полноценно?
  13. Не получается запустить MSP430F2272 по Spy-Bi-Wire. Подскажите, кто работал с MSP430F2272/F2274, какую емкость ставили с TDO/TDI на землю. Схемку JTAG привел ниже. Я поставил 2.2 nF, результат нулевой. В принципе, стандартное подключение из slau138d.pdf Используется OLIMEX JTAG-TINY (USB) Честно говоря, есть подозрения в качестве пайки т.к. после вкл. питания кварц "молчит".
  14. Ну Application Notes это вообще с чего все начинается. :smile3046: Большое спасибо! Это то что надо.
  15. Здравствуйте, Пытаюсь разобраться с MSP430F2272. Дело в том что там, похоже, есть выбор – использовать 4-проводной JTAG или 2 проводной “SpyBiWire”. Как выбрать тот или иной режим – непонятно. По идее выбрать бы 2 проводной интерфейс было бы не плохо – но что я потеряю при отладке программы? Подскажите, где есть толковое описание на этот SpyBiWire. В чем отличие между 2 и 4 проводными интерфейсами JTAG. Спасибо, Дмитрий