|
0 / 0 / 0
Регистрация: 27.04.2019
Сообщений: 4
|
|
Опять MSP43010.12.2019, 13:34. Показов 1019. Ответов 0
Добрый день, помогите кто чем может
опять MSP 430. Не могу доделать кнопку, кнопка должна переключать скорость двигателя (моторчика). Без кнопки все работает, на кнопку нет реакции, не пойму в чем запуталась. Порт 1.0, это точно, преподаватель подтвердил. Дождавшись низкого сигнала включить двигатель на определённой скорости (переключение скоростей). То есть нажали один раз первая скорость, второй раз вторая скорость, третий раз и так далее Код передатчика: #include <msp430.h> #define TRANSMIT 1 volatile unsigned int k; char rec; short handshake = 0; //unsigned char arr [8] = {8,7,6,5,4,7,1,3}; unsigned char arr [3] = {100,175,254}; unsigned int j=0; unsigned int t = 0; unsigned int tdelay=1000;// Count of cycles to wait to avoid bouncing #define BUTTON BIT5 /* * main.c */ #ifdef TRANSMIT void transmit(char c); //TX #else void Pwm(unsigned short duty_cycle) { TACCR2 = duty_cycle; // TACCR2 PWM duty cycle 128 }; unsigned int i = 0; //RX #endif int main(void) { WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer FLL_CTL0 |= XCAP14PF; do { IFG1 &= ~OFIFG; // Clear OSCFault flag for (k = 0x47FF; k > 0; k--); // Time for flag to set } while ((IFG1 & OFIFG)); // OSCFault flag still set? P4SEL |= 0x03; //CHANGE ME2 |= UTXE1 + URXE1; U1CTL |= CHAR + PENA + SPB; // U1CTL |= CHAR; U1TCTL |= SSEL1; U1BR0 = 0X1B; //57600 + U1BR1 = 0X00; //57600 U1MCTL = 0x94; //57600 U1CTL &= ~SWRST; IE2 |= URXIE1; _bis_SR_register (GIE); P1SEL &= ~BUTTON; P1DIR &= ~BUTTON; P1OUT &= ~BUTTON; P1REN |= BUTTON; P1DIR |= 0x00; // P1.1, P1.2 output P1SEL |= 0x00; P1SEL2 |= 0x00; // Stop WDT // Configure load caps // Wait for xtal to stabilize // P1DIR |= 0x04; // P1.2 output //P1SEL |= 0x04; // P1.2 TA1 option P2DIR |= 0x01; // P2.0 output P2SEL |= 0x01; // P2.0 TA2 option TACCR0 = 512-1; TACCR2 = 128; // PWM Period //TACCTL1 = OUTMOD_7; // TACCR1 reset/set //TACCR1 = 384; // TACCR1 PWM duty cycle TACCTL2 = OUTMOD_7; // TACCR2 reset/set TACTL = TASSEL_1 + MC_1; // ACLK, up mode //_BIS_SR(LPM3_bits); // Enter LPM3 #ifdef TRANSMIT while(1) { if (handshake == 0) { //TX transmit(0x55); _delay_cycles(1000);//TX } else { if(P3IN&BUTTON) t++; else t = 0; if (t >=tdelay) { transmit(arr[j]); j++; if (j > 2) j = 0; t = 0; } } } } //TX #endif } #pragma vector = USART1RX_VECTOR //RX __interrupt void USART1_rx (void) //RX { //RX #ifndef TRANSMIT while (!(IFG2 & UTXIFG1)); //RX //TXBUF1 = RXBUF1; //RX //TXBUF1 = 0x0f; rec = RXBUF1; //RX if (i == 0) { //RX TXBUF1 = 0X0a; i++ ;//RX } if(handshake == 1) { Pwm(RXBUF1*2); //_delay_cycles(1000000); //TX } #else if (RXBUF1 == 0X0a) { handshake = 1; }//TX #endif //RX } void transmit(char c){ //TX while (!(IFG2 & UTXIFG1)); //TX TXBUF1 = c; //TX } Код получателя: #include <msp430.h> //#define TRANSMIT 1 volatile unsigned int k; char rec; short handshake = 0; unsigned char arr [8] = {8,7,6,5,4,7,1,3}; unsigned int j=0; /* * main.c */ #ifdef TRANSMIT void transmit(char c); //TX #else void Pwm(unsigned short duty_cycle) { TACCR2 = duty_cycle; // TACCR2 PWM duty cycle 128 }; unsigned int i = 0; //RX #endif int main(void) { WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer FLL_CTL0 |= XCAP14PF; do { IFG1 &= ~OFIFG; // Clear OSCFault flag for (k = 0x47FF; k > 0; k--); // Time for flag to set } while ((IFG1 & OFIFG)); // OSCFault flag still set? P4SEL |= 0x03; //CHANGE ME2 |= UTXE1 + URXE1; U1CTL |= CHAR + PENA + SPB; // U1CTL |= CHAR; U1TCTL |= SSEL1; U1BR0 = 0X1B; //57600 + U1BR1 = 0X00; //57600 U1MCTL = 0x94; //57600 U1CTL &= ~SWRST; IE2 |= URXIE1; _bis_SR_register (GIE); // Stop WDT // Configure load caps // Wait for xtal to stabilize // P1DIR |= 0x04; // P1.2 output //P1SEL |= 0x04; // P1.2 TA1 option P2DIR |= 0x01; // P2.0 output P2SEL |= 0x01; // P2.0 TA2 option TACCR0 = 512-1; TACCR2 = 128; // PWM Period //TACCTL1 = OUTMOD_7; // TACCR1 reset/set //TACCR1 = 384; // TACCR1 PWM duty cycle TACCTL2 = OUTMOD_7; // TACCR2 reset/set TACTL = TASSEL_1 + MC_1; // ACLK, up mode //_BIS_SR(LPM3_bits); // Enter LPM3 #ifdef TRANSMIT while(1) { if (handshake == 0) { //TX transmit(0x55); _delay_cycles(1000);//TX } else { transmit(arr[j]); j++&0x07;//TX } } //TX #endif } #pragma vector = USART1RX_VECTOR //RX __interrupt void USART1_rx (void) //RX { //RX #ifndef TRANSMIT while (!(IFG2 & UTXIFG1)); //RX //TXBUF1 = RXBUF1; //RX //TXBUF1 = 0x0f; rec = RXBUF1; //RX if (i == 0) { //RX TXBUF1 = 0X0a; i++ ;//RX } if(handshake == 1) { Pwm(RXBUF1*2); } #else if (RXBUF1 == 0X0a) { handshake = 1; }//TX #endif if (RXBUF1 == 0X55) { handshake = 1; } //RX } void transmit(char c){ //TX while (!(IFG2 & UTXIFG1)); //TX TXBUF1 = c; //TX }
0
|
|
| 10.12.2019, 13:34 | |
|
Ответы с готовыми решениями:
0
и опять строки
Опять MDI и опять нет активной формы |
| 10.12.2019, 13:34 | |
|
Помогаю со студенческими работами здесь
1
Опять БАН опять Яндекс... MSP430 MSP430 Gameorplay Опять и опять MSP430 в LabView Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|