__interrupt void PORT1(void) { if (P1IFG & TASTE_LINKS) { BIT_CLR(P1IFG, TASTE_LINKS); LED_ON(LED_ROT); SHT11_Read_Sensor(); sprintf(uart_buffer, "%s %s\r\n", temp_char, humi_char); // USART konfigurieren BIT_CLR(IFG2, UTXIFG1); // interrupt flag loeschen BIT_CLR(IE2, UTXIE1); // interrupt ausschaulten // DMA konfigurieren DMA2SZ = strlen(uart_buffer); DMA2DA = (unsigned int)&U1TXBUF; // speichere die Addresse des TX Buffers DMA2SA = (unsigned int)uart_buffer; // und die von unserem String DMACTL0 = DMA2TSEL3 + DMA2TSEL1; // Trigger wenn TX IFG gestezt ist // kopiere 1 Byte vom String ins TX Buffer bei jedem Transfer und erhoehe src um eins DMA2CTL = DMAEN + DMASRCINCR0 + DMASRCINCR1 + DMADSTBYTE + DMASRCBYTE; // Bescheid sagen, wenn der Transfer fertig ist BIT_CLR(DMA2CTL, DMAIFG); DMA2CTL += DMAIE; //Port 1.2 fuer die Messung anschalten BIT_SET(P1OUT, BIT2); BIT_SET(IFG2, UTXIFG1); // starte den ersten Transfer } }
void Aufgabe21() { initSecTimer(1); _bis_SR_register(GIE); while(1) { char buffer[32]; sprintf(buffer, "%d:%d:%d\t", dayTime.hh, dayTime.mm, dayTime.ss); uart1_put_str(buffer); SHT11_Read_Sensor(); uart1_put_str(humi_char); uart1_put_str(temp_char); uart1_put_str("\r\n"); wait_ms(1000); } }
__interrupt void TIMERB0(void) { char buffer[16]; secs++; if (secs > 59) { mins++; secs %= 60; if (mins > 59) { mins %= 60; hours++; if (hours > 23) { hours %= 24; } } } SHT11_Read_Sensor(); print_buf(temp_char); print_buf(humi_char); sprintf(buffer, " %02d:%02d:%02d\r\n", hours, mins, secs); print_buf(buffer); }