Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 27.04.2019
Сообщений: 4

Опять MSP430

10.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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.12.2019, 13:34
Ответы с готовыми решениями:

и опять строки
Строку S преобразовать в строку длины N *задается пользователем) следующим об-разом: если длина строки S больше N, то отбросить первые...

Опять матрицы(.)
Привет всем! Ребята помогите пж дописать цикл для поиска определителя матрицы (N*N) где N &lt;=10. Буду рад выслушать все замечания и...

Опять MDI и опять нет активной формы
В общем, перед тем, как налетать на меня за эту тему, скажу, что я потратил более 6 часов на эксперименты и изучение всех возможных постов...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.12.2019, 13:34
Помогаю со студенческими работами здесь

Опять БАН опять Яндекс...
Вообщем ситуация такая, был сайт, написаный на дримвевере, отлично индексируемый и имеющий 400-500 переходв с поисковика яндекса. Стали...

MSP430
Вроде у буржуев очень популярный, а в рунете наоборот както слабо. Заказал себе второй и пятой серии, вроде jtagом шьется и gcc бэкенд...

MSP430
Пошел давеча в нигазин за рассыпухой, в довесок навязали платку. На одной плате: программатор, отладчик,мк и еще какого то фарша. цена...

Gameorplay Опять и опять
Здравствуйте, уважаемые знатоки. Помогите пожалуйста решить проблему с автоматическим запуском Firefox при старте Windows и открытия сайта...

MSP430 в LabView
Привет. Нужно программировать msp430 в LabVIEW. Это вообще возможно?Дайте хоть какую то информацию плиз. Я больше меся рою гугл по этому...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
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&amp;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 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru