Поиск по сайту

Результаты поиска по тегам 'msp430'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип публикаций


Категории и разделы

  • Вопрос-Ответ. Для начинающих
    • Песочница (Q&A)
    • Дайте схему!
    • Школьникам и студентам
    • Начинающим
    • Паяльник TV
    • Обсуждение материалов с сайта
  • Радиоэлектроника для профессионалов
    • Световые эффекты и LED
    • Роботы и модели на ДУ-управлении
    • Автоматика
    • Самодельные устройства к компьютеру
    • Программное обеспечение
    • Автомобильная электроника
    • Системы охраны и наблюдения. Личная безопасность
    • Питание
    • Электрика
    • Промышленная электроника
    • Ремонт
    • Металлоискатели
    • Измерительная техника
    • Мастерская радиолюбителя
    • Сотовая связь
    • Спутниковое ТВ
    • КВ и УКВ радиосвязь
    • Жучки
    • Телефония и фрикинг
    • Высокое напряжение
    • Идеи и технологии будущего
    • Справочная радиоэлементов
    • Литература
    • Разное
  • Аудио
    • FAQ, Технологии и компоненты
    • Для начинающих
    • Источники звука
    • Предусилители, темброблоки, фильтры
    • Питание аудио аппаратуры
    • Усилители мощности
    • Акустические системы
    • Авто-аудио
    • Ламповая техника
    • Гитарное оборудование
    • Прочее
  • Микроконтроллеры
    • МК для начинающих
    • AVR
    • PIC
    • STM32
    • Arduino и Raspberry Pi
    • ПЛИС
    • Другие микроконтроллеры и семейства
    • Алгоритмы
    • Программаторы и отладочные модули
    • Периферия и внешние устройства
    • Разное
  • Товары и услуги
    • Коммерческие предложения
    • Продам-Отдам, Услуги
    • Куплю
    • Уголок потребителя
    • Вакансии и разовая работа
    • Наши обзоры и тесты
  • Разное
    • Конкурсы сайта с призами
    • Сайт Паяльник и форум
    • Курилка
    • Технический английский (English)
    • Наши проекты для Android и Web
    • FAQ (Архив)
    • Личные блоги
    • Корзина
    • Вопросы с VK
  • ATX->ЛБП Переделки
  • Юмор в youtube Киловольты юмора
  • Надежность и группы продавцов Радиолюбительская доска объявлений exDIY
  • разные темы Переделки

Блоги

Нет результатов для отображения.

Нет результатов для отображения.

Местоположения

  • Пользователи форума

Группа


ICQ


Skype


Интересы


Город


Сфера радиоэлектроники


Оборудование

Найдено 15 результатов

  1. Наткнулся на библиотеку hal_xxx.c от TI для MSP430. Ни как не могу найти, где взять взять полное семейство этих библиотек. Поделитесь ссылочной hal_UCS.c
  2. Доброго времени суток всем! Недавно возникла потребность передачи данных из микроконтроллера в ПК. Написал код на ассемблере, опираясь на Code_examples от TI, и то, что получилось, приведено ниже: #include "msp430F1232.h" RSEG CSTACK DS16 0 RSEG CODE ;--------------------------------------------------------------------- ; Установка тактирования от кварца ;--------------------------------------------------------------------- RESET mov #SFE(CSTACK),SP mov #WDTPW+WDTHOLD,&WDTCTL ;OSTANOVKA WDT BIC #OSCOFF, SR ; tAKTIROVANIE OT KVARCA BIS.B #XTS, BCSCTL1 L1 BIC.B #OFIFG, &IFG1 MOV #0FFh, R15 L2 DEC R15 JNZ L2 BIT.B #OFIFG, &IFG1 JNZ L1 BIS.B #SELM_3, &BCSCTL2 ;-------------------------------------------------------------------- ; Инициализация USART ;-------------------------------------------------------------------- mov.b #200,R7 bis.b #SWRST,&UCTL0; bis.b #030h,&P3SEL; P3.4,5 - USART bis.b #UTXE0+URXE0,&ME2; Включение передачи и приема bis.b #CHAR, &UCTL0; Формат данных 8-разрядный mov.b #SSEL0, &UTCTL0; UCLK=ACLK mov.b #0100b,&UBR00; 5MHz/19200 = 260.4 = 100000100b mov.b #0001b,&UBR10; mov.b #0000, &UMCTL0; Без модуляции bic.b #SWRST,&UCTL0; Сброс USART не включен bis.b #URXIE0+UTXIE0,&IE2 bis.b #UTXIFG0,&IFG2; Флаг гтовности к прерыванию Loop bis.w #LPM3+GIE,SR nop jmp Loop ;------------------------------------------------------------------- USART0TX_ISR; ;------------------------------------------------------------------- mov.b R7, &TXBUF0; reti ;-------------------------------------------------------------------- ; Векторы прерываний ;-------------------------------------------------------------------- COMMON INTVEC ORG RESET_VECTOR DW RESET ORG USART0TX_VECTOR DW USART0TX_ISR END. Из программы видно, что я просто хочу передать содержимое R7 в ПК. Трудность заключается в том, что это значение передается не всегда. Запускаю программу, которая считывает информацию с com порта (программа работает 100% правильно), она в тестовый файл записывает значение 200(правильное значение). В следующий раз, после перезапуска программы, в текстовый файл она записывает величину 14. Потом снова 200. И я не пойму, что с ней происходит! Кто знает, отзовитесь пожалуйста
  3. Chinese Students Introduced

    I am Chinese student, now studying in St. Petersburg. I'm here one year, so i am not very good in Russian,written in English. I would like to know some new friends like programming and design, I want to participate in some professional game in Russia or complete some projects with my friends. If you need, I can help you buy some cheap things in China.If you have spare time or want to learn Chinese, hope you can help me learn the Russian language.This is part of my profile.
  4. Стоит Изучать Msp430?

    Стоит изучать MSP430? Как я понимаю cortex-m он превосходит только энергоэффективностью? Или уже нет?
  5. Доброе утро. Продолжаю осваивать MSP430 и в данный момент столкнулся с проблемой. Не знаю как осуществить получение данных со встроенного температурного датчика. Честно говоря даже не знаю с чего начать. Так что решил спросить у пользователей данного форума, как сделать и с чего начать. С уважением, Владимир.
  6. Я совсем новичок в МК, столкнулся с проблемой при подключении msp430 к bluetooth модулю. Модуль раньше работал на ардуине но с этой платой ни как не заводится. Подключить модуль к планшету получается (в терминале на планшете приходят обратно вводимые символы если замкнуть на модуле RX и TX). Но как дальше его подключить к msp430 я не понял. Пробовал так: P1.1 -> TX, p1.2 -> RX , пробовал менять комбинацию перемычек SW uart \ HW uart. Прошивка: void setup() { Serial.begin(9600); } void loop() { Serial.println("Test"); delay(100); } Возможно ли их вообще подключить?
  7. Требуеться отсылать данные по UART-у с большой точностью, делаю как по примеру. Схема аналогична примеру //****************************************************************************** // MSP430x47xx Demo - USCI_A0, 115200 UART Echo ISR, DCO SMCLK // // Description: Echo a received character, RX ISR used. Normal mode is LPM0. // USCI_A0 RX interrupt triggers TX Echo. // Baud rate divider with 1048576hz = 1048576/115200 = ~9.1 (009h|01h) // ACLK = LFXT1 = 32768Hz, MCLK = SMCLK = default DCO = 32 x ACLK = 1048576Hz // //* An external watch crystal between XIN & XOUT is required for ACLK *// // // MSP430x47xx // ----------------- // /|\| XIN|- // | | | 32kHz // --|RST XOUT|- // | | // | P2.4/UCA0TXD|------------> // | | 115200 - 8N1 // | P2.5/UCA0RXD|<------------ // // P. Thanigai / K.Venkat // Texas Instruments Inc. // November 2007 // Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.42A //****************************************************************************** #include "msp430x47x4.h" void main(void) { volatile unsigned int i; WDTCTL = WDTPW+WDTHOLD; // Stop WDT FLL_CTL0 |= XCAP14PF; // Configure load caps do { IFG1 &= ~OFIFG; // Clear OSCFault flag for (i = 0x47FF; i > 0; i--); // Time for flag to set } while ((IFG1 & OFIFG)); // OSCFault flag still set? P2SEL |= BIT4+BIT5; // P2.4,5 = USCI_A0 RXD/TXD UCA0CTL1 |= UCSSEL_2; // SMCLK UCA0BR0 = 0x09; // 1MHz 115200 UCA0BR1 = 0x00; // 1MHz 115200 UCA0MCTL = 0x02; // Modulation UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine** IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt _BIS_SR(LPM0_bits + GIE); // Enter LPM0, interrupts enabled } // Echo back RXed character, confirm TX buffer is ready first #pragma vector=USCIAB0RX_VECTOR __interrupt void USCIA0RX_ISR (void) { while(!(IFG2&UCA0TXIFG)); UCA0TXBUF = UCA0RXBUF; // TX -> RXed character } #include "msp430x47x4.h" #include "main.h" extern char Hello_World[] = {"Hello, World!\n\r"}; //Current RSSI as ASCII. void main(void) { WDTCTL = WDTPW+WDTHOLD; // Stop WDT // ================[ Crystal Oscillator ]=============== FLL_CTL0 |= XCAP14PF; // Configure load caps do { IFG1 &= ~OFIFG; // Clear OSCFault flag for (i = 0x47FF; i > 0; i--); // Time for flag to set } while ((IFG1 & OFIFG)); // OSCFault flag still set? // ===================================================== // ====================[ UART config ]================== //UART1: P4SEL |= BIT0+BIT1; UCA1CTL1 |= UCSSEL_2; UCA1BR0 = 0x09; UCA1BR1 = 0x00; UCA1MCTL = 0x02; UCA1CTL1 &= ~UCSWRST; // UC1IE |= UCA1RXIE; // ===================================================== CCTL0 = CCIE; // CCR0 interrupt enabled TimerChacker = 0; TACCR0 = 62500 - 1; TACTL = TASSEL_2 + ID_3 + MC_1 + TACLR; // SMCLK, up mode _BIS_SR(LPM0_bits + GIE); // Enter LPM3 } // =============== [ Timer actions ] ================== #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A (void) { if (++TimerChacker == 3) { sendToWizFi(Hello_World); TimerChacker = 0; } } // ===================================================== int getLength(unsigned char mess[]){ int j; for (j=0; j<MAX_BUFF; j++){ if ((mess[j] == '\r')) break; } return j; } void sendToUART(unsigned char mess[]){ int maxLen = getLength(mess); for (int j=0; j<=maxLen; j++){ while(!(UC1IFG&UCA1TXIFG)); UCA1TXBUF = mess[j]; } } Что странно, первые пару секунд все без ошибок, а потом начинается этот адок
  8. Работаю с микроконтроллером msp430f4784 и LCD экранчиком SBLCDA4. В микроконтроллере встроен драйвер LCD, поэтому разобраться в его работе было не сложно. Составил табличку, набросал программу. Результат, как всегда, не оправдал ожиданий. Изображение мерцало. Такое чувство, что динамическая индикация происходит очень медленно, Но часовой кварц стоит, и указан номинал конденсаторов на нем. UART же как то работал. Эмпирическим путем было выяснено, что мерцание иногда пропадает если взяться за землю на программаторе. Пробовали питать всю схему от источника питания, без участия программатора, все равно все так же мерцает. Перепаял кварц максимально близко к микроконтроллеру, а так же заземлил его корпус. Это тоже не помогло. Идеи уже кончились.. Прикладываю с программой пару гифок, как все это происходит на деле #include "msp430.h" void main(void) { int i; WDTCTL = WDTPW + WDTHOLD; FLL_CTL0 |= XCAP10PF; LCDACTL = LCDON + LCD4MUX + LCDFREQ_128; LCDAPCTL0 = LCDS0+LCDS4+LCDS8+LCDS12+LCDS16+LCDS20; P5SEL = BIT2+BIT3+BIT4; for( i = 0; i < 11; i ++) { LCDMEM[i] = 0xFF; } _BIS_SR(LPM3_bits); }
  9. Здравствуйте! Вопрос: как сигнал (такты с определенной частотой) с одного порта определенной ножки МК подавать на другую этого же порта?? сама задача заключается в том, что бы по нажатию разных кнопок, с помощью прерываний включать разные "штуки", но это все не важно я это могу сделать)) Мне надо, что бы при лог. 1 на ножке P2.2 сигнал со входа P2.3 поступал на P2.4, наверно, это делается как-то просто, но я не могу понять как. Обьясните как это сделать на C или дайте, что-нибудь где можно прочитать про это
  10. Вчера вот получил долгожданную покупку, поигрался с демкой на установленном МК. Скачал Energia, попробовал ее демки, но теперь надо уже этого мало и хочется сделать что-то свое поэтому надо толково учить мат.часть. Посоветуйте книги по МК без определенного концентрирования автора на какой-то один МК,а чтобы было описано основные параметры любого МК. И посоветуйте литературу именно моему МК. Даташит и некоторые другие файлы с оф. сайта я скачал,но для начало это немного круто, хотелось бы что-то освоить на русском сначала. Заранее спасибо за помощь. С уважением, Владимир.
  11. Ambilight На Msp430G2553

    Пытаюсь приспособить следующий пример и скетч с него для MSP430g2553. Однако, при компилировании при помощи Energia получаю следующую ошибку sketch_oct10a.cpp: In function 'void pulseGSCLK()': sketch_oct10a.cpp:208:3: error: 'PORTB' was not declared in this scope Как я понимаю PORTB не был объявлен как переменная, как это корректно можно сделать? /* TLC5940 16-port LED driver = Paden Hogeland - Adjusted for use of 4 RGB LED's * Peter Mackey June 2007 Pratt Digital Arts pmackey@pratt.edu * direct adressing to PORTB, smooth flickerless fading (thanks to Amp on the Arduino forum) * additional logic from David Cuartielles's & Marcus Hannerstig's LEDdriver demo = see the TLC5940 data sheet for the logic behind these pulse sequences */ // Name the Arduino pins to the TLC5940 pin names #define VPRG 2 #define SIN 5 #define SCLK 6 #define XLAT 7 #define BLANK 8 #define DCPRG 9 #define GSCLK 10 //note: but using PORTB method #define MSINTRVL 0 // could be used to delay updating of incrementFades() #define FADEMIN 0 // lowest fade level LEDs will reach (min would be 0, max 4065) #define FADEINCR 64 // determines how many steps it takes to run the desired range (lower=longer) // Array to hold the port values 0 min - 4095 max int port[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; int faderNdx = 0; //counter used in this fading sequence int fadeState[] = { 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; //stores the direction of fading for each port 1,0,-1 //start with first port int next; //used for limit checking in fading function float prevMillis; //used for a timing delay int myword[] = {0,0,0,0,0,0,0,0,0,0,0,0}; //temp storage for reversing bits in a word (for greyscale setting) // Declare the RGB varables double red,green,blue; // Set up void setup() { // Assign the output pins pinMode(VPRG, OUTPUT); pinMode(SIN, OUTPUT); pinMode(SCLK, OUTPUT); pinMode(XLAT, OUTPUT); pinMode(BLANK, OUTPUT); pinMode(DCPRG, OUTPUT); pinMode(GSCLK, OUTPUT); // Could also set DDRB directly // Initalize Serial Connection Serial.begin(9600); // Initalize unused TLC5940 pins port[13] = 0; port[14] = 0; port[15] = 0; port[0] = 0; preset(); //input �Dot Correction� data } // Main Loop void loop () { setGreys(); feedPorts(); // If have passed the interval if (millis() > (prevMillis+MSINTRVL)){ // Set the RGB values setRGB(); // Set new previous time prevMillis=millis(); } } // Set the RGB values void setRGB() { // If correct amount of serial is avaiable if(Serial.available() >= 13 ){ // If we are at the first chunk of data if(Serial.read() == 0xff){ // Set the Left Side red = Serial.read(); blue = Serial.read(); green = Serial.read(); // Get the percentage of each value then update port accordinly port[10] = (4095)*(red/255); port[11] = (4095)*(blue/255); port[12] = (4095)*(green/255); // Set the Top Left Side red = Serial.read(); blue = Serial.read(); green = Serial.read(); // Get the percentage of each value then update port accordinly port[7] = (4095)*(red/255); port[9] = (4095)*(green/255); port[8] = (4095)*(blue/255); // Set the Top Right Side red = Serial.read(); blue = Serial.read(); green = Serial.read(); // Get the percentage of each value then update port accordinly port[4] = (4095)*(red/255); port[6] = (4095)*(green/255); port[5] = (4095)*(blue/255); // Set the Right Side red = Serial.read(); blue = Serial.read(); green = Serial.read(); // Get the percentage of each value then update port accordinly port[1] = (4095)*(red/255); port[2] = (4095)*(blue/255); port[3] = (4095)*(green/255); } } } //=======5940 control====================================== void setGreys() { // For the each port (12 bit word * 16 ports =192 bits in this loop)... for (int i=15; i>=0; i--) { // Initalize the data int datb = port[i]; // Load fade level bits into the temp array BACKWARDS for (int j=11; j>=0; j--) { myword[j]=(datb & 1); //& bitwise AND datb >>= 1; //shift right and assign // (maybe there's a slicker way to do this!? but this works...) } // Send the data to the 5940 for (int j=0; j<12; j++) { digitalWrite(SIN,myword[j]); pulseSCLK(); } } digitalWrite(XLAT, HIGH); digitalWrite(XLAT, LOW); } void feedPorts() { // The actual sequencing of the PWM data into the LEDs, must do constantly... digitalWrite(BLANK, HIGH); digitalWrite(BLANK, LOW); //=all outputs ON, start PWM cycle for (int i=0; i<4096; i++) { pulseGSCLK(); } } //DOT CORRECTION...do once void preset() { //Input �DotCorrex� Data //16 outputs, 64 posssible levels of adjustment, 6 bits/chan = 96 bits total //[use if any LEDs in array are physically too bright] digitalWrite(DCPRG, HIGH); //leaving it H is my arbitrary choice (="write to register not EEPROM") digitalWrite(VPRG, HIGH); //=inputting data into dot correx register digitalWrite(BLANK, HIGH); //=all outputs off, when this goes high it resets the greyscale counter digitalWrite(SIN, LOW); //to start dot correction digitalWrite(XLAT, LOW); //begin loading in the dot correx data, most significant bit first... //but here we are not correcting anything, so LSB is going first! for (int i=0; i<16; i++) { //16 ports for (int j=0; j<6; j++) { //6 bits of data for each port digitalWrite(SIN, HIGH); //for now, 111111 for everybody pulseSCLK(); digitalWrite(SIN, LOW); } } //----doing the FIRST GREYSCALE SETTING here becuz of the unique 193rd clock pulse digitalWrite(XLAT, HIGH); //latch the dot data into the dot correx register digitalWrite(XLAT, LOW); digitalWrite(VPRG, LOW); //entering greyscale mode for (int i=0; i<16; i++) { //16 ports int datb = 4095; //using same fade level for all ports this first time for (int j=0; j<12; j++) { //data for each port, all the same value to start digitalWrite(SIN, datb & 01); pulseSCLK(); datb>>=1; } } digitalWrite(XLAT, HIGH); //latch the greyscale data digitalWrite(XLAT, LOW); pulseSCLK(); //193rd clock pulse only need to do the FIRST time after dot correx digitalWrite(BLANK, LOW); //=all outputs ON, start PWM cycle... moved here } //SCLK used in dot correx and greyscale setting void pulseSCLK() { digitalWrite(SCLK, HIGH); digitalWrite(SCLK, LOW); } void pulseGSCLK() { //ultra fast pulse trick, using digitalWrite caused flickering PORTB=0x01; //bring PORTB0 high (pin 8), other ports go low [0x01 does only pin 8, 0x21 also lifts pin 13] //16nanosecs is the min pulse width for the 5940, but no pause seems needed here PORTB=0x20; //keep pin13 high [0x00 would be all low] }
  12. Прощу помощи, т.к. уже весь мозг себе взорвал. Пытаюсь сделать кодовый замок на клавиатуре, состоящей из 3 кнопок. Все примеры в сети только для клавиатур 4х4 или 3х4. Нашёл неплохой пример кода под авр на сайте http://datagor.ru/mi...yjj-zamok..html Хочу попробовать портировать его под msp430, но никак не могу понять функцию опроса клавиатуры. char key_press() // функция опроса клавиатуры { while(1) { while((~PIND & 0b01111000)!=0); // ничего не делать, пока не отпустят кнопку for(i=0;i<3;i++) // перебор столбцов { PORTD=0xff & ~(0x01 << i); for(j=3;j<7;j++) // пребор строк { if((PIND & (0x01 << j))==0) // проверка нажатия на кнопу { delay_ms(100); // пауза для исключения дребезга контактов if(buttons[i][j-3]=='*') // дополнительная проверка для кнопки смены пароля { for(k=0;((PIND & (0x01 << j))==0 && k<100);k++) { delay_ms(50); } if((PIND & (0x01 << j))==0) // если удерживаем кнопку смены пароля больше 5 сек { state=1; // то устанавливаем состояние 1 (смена пароля) return 0; // и выходим из функции, возвращая вместо символа ноль } else return buttons[i][j-3]; // если меньше 5 сек, то возвращаем символ } if((PIND & (0x01 << j))==0) return buttons[i][j-3]; // возвращаем символ } } } } } Буду очень благодарен, если кто-нибудь сможет объяснить как переделать это под мою задачу. Смена пароля в моём случае не требуется.
  13. Есть MSP430 Launchpad и шаговый двигатель (стоял в сканнере) MITSUMI m42sp-4np (5 выводов), едет ULN2003, нужно ли еще что-то чтобы реализовать управление движком? Сначала хочу сделать управление с помощью потенциометра, потом с помощью программы? Что можно почтитать? Еще есть движок с 11 выводами из Cd-Rom, что нужно чтобы управлять им? Спасибо
  14. Самоучитель Для Msp430

    Здравствуйте. Я год работал с AVR намучался сильно и купил себе LaunchPad и начал работать с MSP430. На простых примерах всё супер но хочется большего. Когда читал статьи в нете 'испугался' ничего не понимал из слов Регистр,Таймер,Прерывания..... Посоветуйте пожалуйста курс (не книгу) но МК этого типа. Можно и на английском.
  15. У меня имеется МК msp430f425 и WiFi модуль SPB-106. Вафлю я пока не трогал, а только припаял проводки синхроимпульса и MISO к MISO; MOSI к MOSI. Так же припаял к CS вафли к I/O порту МК и запилил туда единичку нолик. И наваял такой нехитрый код. #include "msp430.h" #define MAX_BUF 250 void main( void ) { WDTCTL = WDTPW + WDTHOLD; //Выключаю Watch Dog Timer //ACLK = 32768 Гц while(FLL_CTL0 & 3 ); // ======= Инициализация SPI ======= P1SEL = BIT6 + BIT7; P2SEL = BIT1; P2DIR |= BIT2; P1DIR |= BIT4; // CS от Вай фая P1OUT &= ~BIT4; // U0CTL = CHAR+SYNC+MM+SWRST; // 8-bit SPI Master **SWRST** U0TCTL = CKPH+SSEL1+STC; // SMCLK, 3-pin mode +SSEL0 U0BR0 = 0x002; // SPICLK = SMCLK/2 U0BR1 = 0x000; U0MCTL = 0x000; ME1 = USPIE0; // Module enable U0CTL &= ~SWRST; // SPI enable IE1 |= URXIE0; // Receive interrupt enable _EINT(); // Enable interrupts // ================================= unsigned char trn_word[6] = "Hello!"; while (1) { for (int i=0; i<6; i++) { while (!(IFG1 & UTXIFG0)); TXBUF0 = trn_word[i]; } } } В теории должно передаваться Hello, но на осциллографе я наблюдаю вот это: P.S. Извините за качество фото. Я пока так и не научился пользовать .res файликами на компе... Если кто подскажет чем открыть их, буду благодарен