Jump to content

    

Sinoptic555

Участник
  • Content Count

    91
  • Joined

  • Last visited

Everything posted by Sinoptic555


  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. Спасибо, Дмитрий
  16. Привет всем! Подскажите, как сделать нестандартную площадку под контакт (Pad). У меня в datashit площадки с одной стороны полукруглые (QFN у Texas Instruments). Я бы конечно квадратной обошелся, но там два перпендикулярных угловых контакта не проходят по зазорам – в «Резонит» не возьмут на изготовление. Пробовал в P-CAD 2002 полигоном нарисовать, но максимум чего я добился – 5 угольная площадка – бред. Может как-то можно нарисованный полигон конвертировать в контактную площадку PAD? Спасибо. Дмитрий.
  17. Функция printf() тяжеловата получается. :( Выходной .exe (в IAR на Release) из 4 кб превращается в 24 кб (!) .
  18. Да! printf() - это то что нужно! :yeah: To CSB: Это абсолютно не подходит, вы ведь наверное знаете что битовое представление типа double/float в корне отличается от integer, и то что могут быть потери в точности при представлении больших чисел double вы тоже, наверняка, знаете ;)
  19. Киньте ссылку если не трудно, смотрел, не могу найти. ... может как-то не так ищу ... :cranky:
  20. DTOA на MSP430

    Подскажите, нет ли для MSP430 нормальной функции конвертирования double в строку char*. Надо вывести число double на ЖК индикатор. Может кто-то использует какие-то библитеки или перенес функцию, что то в IAR встроенных функций не могу найти. Спасибо.
  21. Спасибочки!!!! Да, базовый таймер стоял, я это поправил, напряжение на COMx запрыгало и засветились все сегменты но очень, очень слабо... :( что посоветуете, уменьшить номинал сопротивлений на делителе?
  22. Подскажите пожалуйста, с LCD вопрос возник у меня. MSP430F449, запускаю LCD 3-Mux, -24 Seg. LCDCTL=01110101=0x75 Светится верхняя половина индикатора. По LCD напряжениям расклад: R33=2.9V; R23=1.9V; R13=0.9V; R03=0V. Вопрос о пайке и исправности LCD отпадает. Померил напряжение: COM0=0V (!), COM1~1.9V, COM2~1.9V, COM3~1.9V. Не пойму, зачем на COM3 идет напряжение, не смотря на конфигурацию 3-Mux, а на COM0 вообще тишина – 0V. Что-то делаю не так? Спасибо.
  23. Большое спасибо, довольно обстоятельный ответ, заставил о многом задуматься и посмотреть на проблему с новой стороны.
  24. Завожу Vdd через кнопки на ноги MSP430. Подскажите пожалуйста, для устранения дребезга на кнопках достаточно будет 0.1 мкФ? ... или тут принцип чем больше тем лучше? Кто какие конденцаторы ставит ставит? Спасибо.