Serial port COM2 opened CheckSum=Ok RH=36 T=28 CheckSum=Ok RH=35 T=28 CheckSum=Ok RH=35 T=28 CheckSum=Ok RH=35 T=28 Serial port COM2 closed
#include <msp430g2553.h> #include <stdio.h> #include <string.h> // unsigned int signal[42]; // unsigned short data[5]; // signal int signalElement = 0; // // , 10*50000=0,5 int debouncePause = 0; // , 1 int isDataReading = 0; // UART void sendString(char*); void main(void) { // WDTCTL = WDTPW + // // WDTPW WDTHOLD; // WDTHOLD // // P1.0 // // P1.0 P1DIR |= BIT0; P1OUT &= ~BIT0; // P1.6 // // // P1.6 P1DIR |= BIT6; P1OUT |= BIT6; // P1.3 // // P1.3 , // , // P1.3 // 1 0 P1DIR &= ~BIT3; P1OUT |= BIT3; P1REN |= BIT3; P1IFG &= ~BIT3; P1IES |= BIT3; P1IE |= BIT3; // P1.2 UART // P1SEL |= BIT2; P1SEL2 |= BIT2; // UART // GRACE // ,.. // //Baund 9600 UCA0CTL1 |= UCSSEL_2; UCA0BR0 = 104; UCA0BR1 = 0; UCA0MCTL = UCBRS0; UCA0CTL1 &= ~UCSWRST; // // Grace 1, .. // BCSCTL2 = SELM_0 + DIVM_0 + DIVS_0; if (CALBC1_1MHZ != 0xFF) { DCOCTL = 0x00; BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ; } BCSCTL1 |= XT2OFF + DIVA_0; BCSCTL3 = XT2S_0 + LFXT1S_2 + XCAP_1; // while (1) { // // // CPUOFF //( ) __bis_SR_register(CPUOFF + GIE); unsigned int i = 0; unsigned int j = 0; // // for (j = 0; j < 5; j++) { // data[j] = 0; for (i = 0; i < 8; i++) { int k = i + 2 + j * 8; // 1 0 // 100 120, // if (signal[k] > 100 && signal[k] < 120) { data[j] |= (1 << (7 - i)); } } } char buf[30]; // memset(buf, 0, 30); // 0 // sprintf(buf, "CheckSum=%s\n", data[0] + data[1] + data[2] + data[3] == data[4] ? "Ok" : "Error"); sendString(buf); // UART memset(buf, 0, 30); // sprintf(buf, "RH=%d\n", data[0]); sendString(buf); memset(buf, 0, 30); // sprintf(buf, "T=%d\n", data[2]); sendString(buf); // , // P1OUT |= BIT6; // , // P1OUT &= ~BIT0; // P1.3, // P1IFG &= ~BIT3; P1IE |= BIT3; // isDataReading = 0; debouncePause = 0; signalElement = 0; } } // №0 #pragma vector=TIMER0_A0_VECTOR __interrupt void Timer0_A0(void) { // 10*50000=0,5 if (debouncePause == 9) { // TA0CTL = TACLR; // P2.5 // P2DIR |= BIT5; P2OUT &= ~BIT5; // , UP 20 , , // TA0CCR0 = 20000; TA0CTL = TASSEL_2 + MC_1; } // 20 if (debouncePause == 10) { // , // №0 , TA0CTL = TACLR; TA0CCTL0 &= ~CCIE; // P2.5 //, , , P2DIR &= ~BIT5; P2IFG &= ~BIT5; P2IES |= BIT5; P2IE |= BIT5; // Continuous // №1, - // , TA0CTL = TASSEL_2 + MC_2 + TAIE; } debouncePause++; } // №1 #pragma vector=TIMER0_A1_VECTOR __interrupt void Timer0_A1(void) { // switch (TA0IV) { case TA0IV_TAIFG: // // P2.5 , , // // UART P2IE &= ~BIT5; TA0CTL = TACLR; __bic_SR_register_on_exit(CPUOFF); break; default: break; } } // , P1.3 #pragma vector=PORT1_VECTOR __interrupt void Port_1(void) { // , // P1IFG &= ~BIT3; P1IE &= ~BIT3; // P1OUT &= ~BIT0; P1OUT &= ~BIT6; // UP №0 // 50000 // TA0CCR0 = 50000; TA0CCTL0 |= CCIE; TA0CTL = TASSEL_2 + MC_1; } // , P2.5 #pragma vector=PORT2_VECTOR __interrupt void Port_2(void) { // P2IFG &= ~BIT5; // signal[signalElement] = TA0R; // TA0CTL = TACLR; TA0CTL = TASSEL_2 + MC_2 + TAIE; // P1OUT ^= BIT0; // 1 signalElement++; } void sendString(char * text) { int i = 0; for (i = 0; i < strlen(text); i++) { while (!(IFG2 & UCA0TXIFG)) ; // UCA0TXBUF = text[i]; // } }
Source: https://habr.com/ru/post/160769/
All Articles