#include #include //************************************************ //Globale Variablen //************************************************ unsigned int x=0; unsigned int m=0; unsigned long Time; unsigned long Time_O; char Daten[10]; int Sensor[4]; //************************************************ // Initialiesierung des Timers //************************************************ void Init_Timer() { P1IN = 0x01; // Set Pin 1.0 als Input P1SEL |= 0x01; // Set Pin 1.0 als CCI0A TACCTL0 = CM_1+ CCIS_0+ CAP+ SCS+ CCIE; // Capture on rising edge,CCI0A,Capture mode,Synchronized,interrupt enable TACTL = TASSEL_2 + MC_2+ TAIE; // SMCLK,Continuous mode,interrupt request } //************************************************ // Initialiesierung der Clock //************************************************ void Init_Clock() { FLL_CTL1 = SELS; // SMCLK 8MHz } //************************************************ // Initialiesierung der USART Schnittstelle //************************************************ void Init_USART() { P2SEL |= 0x30; // P2.4,5 = USART0 TXD/RXD ME1 |= UTXE0 + URXE0; // Enable USART0 TXD/RXD UCTL0 |= CHAR; // 8-bit character UTCTL0 |= SSEL0; // UCLK = ACLK UBR00 = 0x03; // 32kHz 9600 UBR10 = 0x00; // 32kHz 9600 UMCTL0 = 0x03; // modulation UCTL0 &= ~SWRST; // Initialize USART state machine P2DIR |= 0x10; // P2.4 output direction } //************************************************ // Daten versenden(USART) //************************************************ void SendUSART0(char Senden[]) // Einen string über die serielle Schnittstelle (USART0) senden { unsigned int i = 0; while (Senden[i] != 0) { while (!(IFG1 & UTXIFG0)); // Warten, bis USART0 TX-buffer sendebereit TXBUF0 = Senden[i]; i++; } printf("\r\n"); } //************************************************ // Durchflusssensorwerte versenden //************************************************ void Send_Durchflusssensor() // Einen string über die serielle Schnittstelle (USART0) senden { sprintf(Daten,"%ld",Time); // Werte in einen String umwandeln printf("E"); SendUSART0(Daten); // Daten versenden sprintf(Daten,"%u",m); printf("F"); SendUSART0(Daten); } //************************************************ // Hauptschleife //************************************************ void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer Init_Clock(); // Clock Init_USART(); // USART Schnittstelle Init_Timer(); // Timer Init_ADC(); // ADC Initialiesierung _EINT(); // Interrupts enable while(1) { Send_Durchflusssensor(); } } //************************************************ // Interrupt bei steigender Flanke //************************************************ #pragma interrupt_handler timer_handler:TIMERA0_VECTOR void timer_handler(void) { if(TAIV== 0x0A) // Abfrage ob Overflow Interrupt { Time = TAR; m++; } else { Time = TAR; // Zählwert speichern TAR = 0; // Zählregister auf null setzen } }