MSP430 рд▓реЙрдиреНрдЪрдкреИрдб рдФрд░ DHT11

рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!
рд╣рд╛рд▓ рд╣реА рдореЗрдВ MSP430 рд▓реЙрдиреНрдЪрдкреИрдб рдХрд╛ рдЕрдзрд┐рдЧреНрд░рд╣рдг рдХрд┐рдпрд╛ рдФрд░ рд░реЛрдЬрдорд░реНрд░рд╛ рдХреА рдЬрд┐рдВрджрдЧреА рдореЗрдВ рдЖрд╡реЗрджрди рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдореЗрдВ рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ DHT11 рд╕реЗрдВрд╕рд░ рд╕реЗ рдЖрд░реНрджреНрд░рддрд╛ рдФрд░ рддрд╛рдкрдорд╛рди рдХреА рдкреНрд░рд╛рдкреНрддрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред


DHT11 рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдм рдХреБрдЫ рдирд┐рдХрд▓рд╛ред

рддрд╛рд░реЛрдВ рдХрд╛ рдЖрд░реЗрдЦ

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реЗрдВрд╕рд░ рдХреЛ рдПрдХ рд╕реНрдХрд╛рд░реНрдл рдкрд░ рдорд┐рд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдкреНрд░рддрд┐рд░реЛрдз рдбреЗрдЯрд╛ рд▓рд╛рдЗрди рдХреЛ 10k рдХреЗ рдЙрдЪреНрдЪ рд╕реНрддрд░ рддрдХ рдЦреАрдВрдЪрддрд╛ рд╣реИ, рдФрд░ 5k рдирд╣реАрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╣реИред

рдЬрд╛рдВрдЪ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рддреЗ рд╣реБрдП рдЖрд░реЗрдЦ

рд╡рд░реНрддрдорд╛рди рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рд▓рд╛рдЗрди рдХреЛ рдирд┐рдореНрди рд╕реНрддрд░ рддрдХ рдЦреАрдВрдЪрдиреЗ рдФрд░ 18 рдПрдордПрд╕ рдХреЗ рд▓рд┐рдП рд╣реЛрд▓реНрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреБрдЫ рд╕рдордп рдмрд╛рдж, рд╕реЗрдВрд╕рд░ рд╕рдВрдХреЗрдд рджреЗрдЧрд╛ рдХрд┐ рд╡рд╣ рдбреЗрдЯрд╛ рд▓рд╛рдЗрди рдХреЛ 80, рдХреЗ рдирд┐рдореНрди рд╕реНрддрд░ рддрдХ рдЦреАрдВрдЪрдХрд░ рдбреЗрдЯрд╛ рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, 40 рдмрд┐рдЯ рдбреЗрдЯрд╛ рдХреЛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯ рдлреЙрд░рд╡рд░реНрдб рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд╛рдбрд╝реА рдХреА рдЕрд╡рдзрд┐ рддрдХ рдмрд┐рдЯреНрд╕ рдХреЛ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рдВрдмрдВрдзрд┐рдд 0 рдХрд╛ рдЖрд╡реЗрдЧ рдЖрд░реЗрдЦ


рдЖрд╡реЗрдЧ рдЖрд░реЗрдЦ рд╕рдВрдЧрдд 1


рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рд╕рдВрд╡реЗрджрдХ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рд▓рд╛рдЗрди рдХреЛ 50 ╬╝s рдХреЗ рдирд┐рдореНрди рд╕реНрддрд░ рддрдХ рдЦреАрдВрдЪрддрд╛ рд╣реИред

рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ C рдореЗрдВ рдХреЛрдб рдХрдореНрдкреЛрдЬрд╝рд░ рд╕реНрдЯреВрдбрд┐рдпреЛ v5 рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрдм рдбрд┐рдмрдЧ рдмреЛрд░реНрдб рдкрд░ рдПрдХ рдмрдЯрди рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдмрдЯрди рд░реБрдХрд╛рд╡рдЯ рдЕрдХреНрд╖рдо рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕ рдкреИрд░ рд╕реЗ рдбреЗрдЯрд╛ рд▓рд╛рдЗрди рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ P2.5) рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕реЗ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред 20 рдПрдордПрд╕ рдЯрд╛рдЗрдорд░ рдЯрд╛рдЗрдорд░ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдХреЗ, рдкреИрд░ рдХреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд░реБрдХрд╛рд╡рдЯ рдХреА рдЕрдиреБрдорддрд┐ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдЙрд╕ рдкрд░ рд╕рд┐рдЧреНрдирд▓ рд╕реНрддрд░ 1 рд╕реЗ 0 рддрдХ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЯрд╛рдЗрдорд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ (65 рдПрдордПрд╕) рдХреЗ рджреМрд░рд╛рди рдЗрд╕ рдЯрд╛рдЗрдорд░ рдХреЗ рд░реБрдХрд╛рд╡рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрдврд╝рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕рд┐рдЧреНрдирд▓ рд╕реНрддрд░ рдЕрдВрддрд░ рдХреЛ 1 рд╕реЗ 0. рдХреЗ рдмреАрдЪ рдХреА рдЕрд╡рдзрд┐ рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП рдирдореВрдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд░рдгреА рдореЗрдВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╡реНрдпрд╡рдзрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдПрдХ рдЯрд╛рдЗрдорд░ рдорд╛рди рдХреЛ рд╕рд┐рдЧреНрдирд▓ рд╕реНрддрд░ рдореЗрдВ 1 рд╕реЗ 0 рдХреЗ рдмреАрдЪ рдХреЗ рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдХреЗ рдмрд░рд╛рдмрд░ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдЯрд╛рдЗрдорд░ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рд╕рд░рдгреА рдХреЗ рдкрд╣рд▓реЗ рддрддреНрд╡ рдореЗрдВ, рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдЬреЛ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддреА рд╣реИ, рд╕реЗрдВрд╕рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдбреЗрдЯрд╛ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд╕рдордп рдХреА рджреВрд╕рд░реА рдЕрд╡рдзрд┐ рдореЗрдВ, рд╢реЗрд╖ 40 рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ 0 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд (76 рд╕реЗ 78 ╬╝s рдХреЗ рдмрд░рд╛рдмрд░), рдореЗрд░реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдпрд╣ 70 рд╕реЗ рдХрдо рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ 1 (120 ╬╝s) , рднреА рдереЛрдбрд╝рд╛ рдХрдо рдирд┐рдХрд▓рд╛)ред рдЬрдм рд╕реНрддрд░ рдЕрдВрддрд░ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдЯрд╛рдЗрдорд░ рдмрд╛рдзрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред рдЗрд╕ рд╡реНрдпрд╡рдзрд╛рди рдХреЗ рд▓рд┐рдП, рдЗрдирдкреБрдЯ рдЗрдВрдЯрд░рдкреНрдЯ рдХреЛ рдмрдВрдж рдХрд░реЗрдВ, рдЯрд╛рдЗрдорд░ рдХреЛ рдмрдВрдж рдХрд░реЗрдВ, рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдХреЛ рд╕реВрдЪрдирд╛ рдмрд┐рдЯреНрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВ (1 рдмрд╛рдЗрдЯ - рдЖрд░реНрджреНрд░рддрд╛, 2 - 0, 3 - рддрд╛рдкрдорд╛рди, 4 - 0, 5 - рдЪреЗрдХрд╕рдо, рдкрд╣рд▓реЗ 4 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдпреЛрдЧ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП), рд╕реНрдерд╛рдирд╛рдВрддрд░рдг UART рджреНрд╡рд╛рд░рд╛ рдФрд░ рдмрдЯрди рд╡реНрдпрд╡рдзрд╛рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВред рдкреАрд╕реА рдкрд░ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рддрд░рд╣ рдХреБрдЫ рджреЗрдЦрддреЗ рд╣реИрдВ

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/In160769/


All Articles