




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