// * E32-868T /DS18B20* // ************************************** // MSP430F1232 // ----------------- // (1) |Test | // (5) |XOUT | // (6) |XIN // E32 M1 |3.0 P1.0| Taster // E32 M0 |3.1 P1.1| n.b. // E32--AUX |3.2 P1.2| Lötauge // n.b. |3.3 P1.3| Lötauge // TXD0 |P3.4 P1.4| Programmierbuchse TCK // RXD0 |P3.5 P1.5| Programmierbuchse TMS // Lötauge |P3.6 P1.6| Programmierbuchse TCLK // Lötauge |P3.7 P1.7| Programmierbuchse TDO // P2.0| n.b. // | P2.1| Lötauge // | P2.2| n.b. oder BSL RxD // | P2.3| Lötauge --> LED // | P2.4| Taster // AUGUST 2021 //****************************************************************************** #include #include // für Zeichen (Infotext) notwendig #include // für sprint #include #include "0193_DS18B20_Nr27_29_30_31_Rest32_33_34_b.h" unsigned int t,k,UB27,OB27,UB29,OB29,UB27,OB30; void programmversion(void); void UART_einstellen(void); void E32_konfigurieren(void); void E32_Konfiguration_festlegen(void); void daten_tx_festlegen(void); void pause400(void); void pause40000(void); void temp_senden(void); void wert_senden(void); char i,txbuffer[6],txbuffer_daten[11],D1,D2,D3,D4,D5; int main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P2DIR |= BIT3; P3DIR |= BIT0 + BIT1; //M0 = 3.1, M1=3.0 P3OUT |= BIT0 + BIT1; //M0 = 3.1, M1=3.0 // M0=0 für konfigurieren UART_einstellen(); E32_Konfiguration_festlegen(); E32_konfigurieren(); pause40000(); P3OUT &=~BIT0; //M0 = 3.1, M1=3.0 // M0=1 für empfangen und senden P3OUT &=~BIT1; //M0 = 3.1, M1=3.0 // M0=1 für empfangen und senden pause400(); while(1) { D1 = RXBUF0; while (!(IFG2 & URXIFG0)); if (D1==0x56)temp_senden(); // 0x56 wurde als Kennzahl gesendet (3.Byte beim Senden) } } void UART_einstellen(void) { P3SEL |= 0x30; // P3.4,3.5 = USART0 TXD/RXD ME2 |= UTXE0+ URXE0; // Enable USART0 TXD/RXD UCTL0 |= CHAR; // 8-bit character UTCTL0 |= SSEL0; // UCLK = ACLK UBR00 = 0x03; // 32k/9600 - 3.41 UBR10 = 0x00; // UMCTL0 = 0x4a; // Modulation UCTL0 &= ~SWRST; // Initialize USART state machine IE2 |= UTXIE0 + URXIE0; // Enable USART0 RX/TX interrupt URXIE0 + } void E32_Konfiguration_festlegen(void) { txbuffer[0] = 0xC0; // sichert die Parameter nach Stromausfall txbuffer[1] = 0x02; // Adresse oberes Byte G3 LP161 txbuffer[2] = 0x02; // Adresse unteres Byte G3 txbuffer[3] = 0x1A; // 8N1, UART baut rate:9600 (bps), Übertragungsrate:2,4k (bps) txbuffer[4] = 0x09; // Kanal 9 txbuffer[5] = 0xC7; // OPTION "transparenter"?? Übetragungsmodus; TXD und AUX als Ausgang RXD als Eingang; 250ms; Leistung:21dBm = 125mW 01 000 111 } void E32_konfigurieren(void) { i=0; while (i<6) { TXBUF0 = txbuffer[i]; while (!(IFG1 & UTXIFG0)); // USART1 TX buffer ready? pause400(); i++; } } void temp_senden(void) { P2OUT &= ~BIT3; //LED gelb EIN starte_wandlung(); //enthält schon wartezeit 750ms ds18b20_nr27_lesen(); // ds18b20_nr29_lesen(); // ds18b20_nr30_lesen(); // ds18b20_nr31_lesen(); daten_tx_festlegen(); wert_senden(); P2OUT |= BIT3; //LED gelb } void daten_tx_festlegen(void) { UB27 = temp27 & 0x00FF; OB27 = (temp27 & 0xFF00)>>8; //verschieben!! /* UB29 = temp29 & 0x00FF; OB29 = (temp29 & 0xFF00)>>8; //verschieben!! UB30 = temp30 & 0x00FF; OB30 = (temp30 & 0xFF00)>>8; //verschieben!! UB31 = temp31 & 0x00FF; OB31 = (temp31 & 0xFF00)>>8; //verschieben!! */ txbuffer_daten[0] = 0x03; // Adresse txbuffer_daten[1] = 0x03; // Adresse txbuffer_daten[2] = 0x09; // kanal txbuffer_daten[3] = OB27; txbuffer_daten[4] = UB27; txbuffer_daten[5] = OB29; txbuffer_daten[6] = UB29; txbuffer_daten[7] = OB30; txbuffer_daten[8] = 0x30; //UB30; txbuffer_daten[9] = 0x31; //OB31; txbuffer_daten[10] = 0x32; //UB31; } void wert_senden(void) { i=0; while (i<11) { TXBUF0 = txbuffer_daten[i]; while (!(IFG1 & UTXIFG0)); // USART0 TX buffer ready? pause400(); i++; } } void pause400(void) { unsigned int i; for (i=400;i>0;i--); // warten ca.360ms } void pause40000(void) { unsigned int a; for (a=40000;a>1;a--); } // UART0 TX ISR //#pragma vector=UART0TX_VECTOR #pragma vector=UART0TX_VECTOR __interrupt void usart1_tx (void) { }