// MSP430F169 // ----------------- // /|\| XIN|- 32,768kHz // | | | // Taster blau-|RST (58) XOUT|- 32,768kHz // | P1.7|LED Grün // 6 Mhz X2IN- | P1.6|Taster für Entladung wiederholen rechts // | P1.5|Taster für Start und löschen Mitte //6 MHz X2OUT- | | // | | // LED rot <-|P2.0 | // | P3.0| Ausgang für Relais Schaltausgang // UTXD0 |P3.4 P3.1|-> Daten Ausgang (29) // URXD0 |P3.5 P3.2|<- Data In (SOMI0) (30) // |P3.6 P3.3|-> Serial Clock Out (UCLK) (31) //(35) SM CE\ |P3.7 P4.0-P4.7| Daten SM karte (36)..(43) //(44) WE\ |P5.0 P2.7| CS SPI Gerät 1 Platz 1 // ALE |P5.1 P2.6| CS SPI Gerät 2 Platz 2 // CLE |P5.2 P2.4| CS SPI Gerät 3 Platz 3 // RE\ |P5.3 P2.5| frei //(48) R/B\ |P5.4 P6.7| Batterie // | P6.3| Kanal 1 Spannung aus R5 x Strom +- !,245V enladen/entladen // | P6.1| Kanal 2 Schaltspannungseingang // P6.0| Kanal 3 // P6.2| Kanal 4 // P6.4| Kanal 5 // P6.5| Kanal 6 // P6.6| Kanal 7 // P6.0....P6.6| Analogeingänge // S1b |P5.7 SM-Kartenschalter // Juni 2021 //****************************************************************************** #include #include // für Zeichen (Infotext) notwendig #include // für sprint #include void Timer_einstellen(void); void UART_einstellen(void); void wert_zerlegen(void); char i,anfang=0xAA; unsigned int rxwert,txwert,temp_1,temp_1_UB,temp_1_OB; int main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer Timer_einstellen(); UART_einstellen(); P1DIR |= BIT7; //LED grün // P2DIR |= BIT0; //LED rot for(;;); } /* void wert_zerlegen(void) { temp_1= 0x0001; temp_1_UB = temp_1 & 0xFF; temp_1_OB = (temp_1 & 0xFF00)>>8; } */ void UART_einstellen(void) { P3SEL |= 0x30; // P3.4,5 = USART0 TXD/RXD ME1 |= 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 // IE1 |= UTXIE0; // Enable USART0 RX/TX interrupt URXIE0 + // wert_zerlegen(); } void Timer_einstellen(void) { unsigned int Zeit; unsigned int ZeitOB=0x0A,ZeitUB = 0xFF; TACTL = TASSEL0 + TACLR;// +ID_1; // TASSEL0 = Takteingang für ACLK(32,7kHz), TACLR--löscht Timer Vorteiler = 2 TACTL |= MC0; // Timer zählt bis CCRO TACCTL0 = CCIE; // Interruptfreigabe Zeit =(ZeitOB << 8)|ZeitUB; // Zusammensetzen OB und UB TACCR0 =Zeit; // Taktzeit: 0,5s 16383 0x3FFF; 1s 0x7FFF = 32767 // Zeitfaktor=2; // bei SD-Karte eingetragen, abhängig vom Vorteiler +ID_1 --> Vorteiler durch 2--> Zeitfaktor=2; _EINT(); // allg. Interrupt-Freigabe } // Timer A0 interrupt service routine #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A (void) { P1OUT ^= BIT7; //LED grün IE1 |= UTXIE0; TXBUF0 = anfang; } // UART0 TX ISR #pragma vector=UART0TX_VECTOR __interrupt void usart1_tx (void) { TXBUF0 = 0x50;//temp_1_OB; TXBUF0 = 0xAB;//temp_1_UB; IE1 &= ~ UTXIE0; }