Auf den letzten Metern
Dependencies: mbed
Diff: main.cpp
- Revision:
- 19:8fdd91276de8
- Parent:
- 18:6f0897438c03
- Child:
- 20:0f975b296b67
--- a/main.cpp Mon Dec 05 09:51:36 2022 +0000 +++ b/main.cpp Mon Dec 05 13:51:24 2022 +0000 @@ -116,10 +116,6 @@ * Description : */ -byte bTimerDot; /* -* Description : Zähler für Dots -*/ - byte bHotKey; /* * Description : Auswahl der Taste */ @@ -188,12 +184,17 @@ * Description : Größe der empfangenen Daten */ +word wTimerDot; /* +* Description : Zähler für Dots +*/ + int zaehler; /* Bitmuster */ const byte abZiffer[] = {nZiffer0, nZiffer1, nZiffer2, nZiffer3, nZiffer4, nZiffer5, nZiffer6, nZiffer7, nZiffer8, nZiffer9, nZifferA, nZifferB, nZifferC, nZifferD, nZifferE, nZifferF, nZifferOff}; //const byte abBargraph[] = {~Bit0, ~(Bit0|Bit1), ~(Bit0|Bit1|Bit2), ~(Bit0|Bit1|Bit2|Bit3), 0x0f}; -byte abTxBuffer[256]; +byte abTxBuffer[60]; +byte abTxBufferOld[60]; @@ -247,7 +248,7 @@ abDisplayMemory[1] = 16; abDisplayMemory[2] = 16; abDisplayMemory[3] = 16; - bTimerDot = 0; + wTimerDot = 0; bDigit = 0; bMainState = enSchwellenwert; bDisplayState = enSchwellenwert; @@ -288,39 +289,6 @@ } bS1Timer = 0; } - - if(abTxBuffer[0] == 'b') { /* User-Taste gedrückt */ - - for(zaehler=0; zaehler<=250; zaehler++) { /*Zaehlen der Tastatur-Eingabe*/ - while(abTxBuffer[zaehler] == abTxBuffer[zaehler+1]) if(abTxBuffer[zaehler] == 'b') bSCounter++; - } - - if(bSCounter < nTastLong+1) { /* Abfrage max. bis Taste lange gedrückt */ - if(bS1Timer == nTastShort) { /* Taste "kurz gedrückt" erkannt */ - //... - } - if(bSCounter == nTastLong) { /* Taste "lange gedrückt" erkannt */ - if(bDisplayState == enPotiAnzeige) { - bDisplayState = enVergleich; - bMainState = enVergleich; - } else { - bDisplayState = enSchwellenwert; - bMainState = enSchwellenwert; - } - } - } - } else { /* Taste nicht gedrückt */ - if(((bSCounter >= nTastShort) && (bSCounter <= nTastLong))) { /* Taste wurde bereits erkannt */ - if(bDisplayState == enSchwellenwert) { - bDisplayState = enPotiAnzeige; - bMainState = enPotiAnzeige; - } else { - bDisplayState = enSchwellenwert; - bMainState= enSchwellenwert; - } - } - bSCounter = 0; - } } void vTasteS2( void ){ @@ -348,35 +316,6 @@ bS2Timer = 0; bTimeLong = 0; } - - if(abTxBuffer[0] == ',' && bMainState == enSchwellenwert){ /* User-Taste gedrückt */ - - for(zaehler=0; zaehler<=250; zaehler++){ /*Zaehlen der Tastatur-Eingabe*/ - while(abTxBuffer[zaehler] == abTxBuffer[zaehler+1]) if(abTxBuffer[zaehler] == ',') bSCounter++; - } - - if(bSCounter < nTastLong+1){ /* Abfrage max. bis Taste lange gedrückt */ - if(bS2Timer == nTastShort){ /* Taste "kurz gedrückt" erkannt */ - //... - } - if(bSCounter == nTastLong){ /* Taste "lange gedrückt" erkannt */ - bTimeLong = 1; - if(wVorgabeWert >=3200) wVorgabeWert = 3300; - else wVorgabeWert = wVorgabeWert + 100; - bS2Timer = bS2Timer - 40; - } - } - } - else{ /* Taste nicht gedrückt */ - if((bSCounter >= nTastShort) && (bSCounter <= nTastLong)){ /* Taste wurde bereits erkannt */ - if(bTimeLong==0){ - if(wVorgabeWert >=3290) wVorgabeWert = 3300; - else wVorgabeWert = wVorgabeWert + 10; - } - } - bTimeLong = 0; - bSCounter = 0; - } } void vTasteS3( void ){ @@ -404,35 +343,6 @@ bS3Timer = 0; bTimeLong = 0; } - - if(abTxBuffer[0] == '.' && bMainState == enSchwellenwert){ /* User-Taste gedrückt */ - - for(zaehler=0; zaehler<=250; zaehler++){ /*Zaehlen der Tastatur-Eingabe*/ - while(abTxBuffer[zaehler] == abTxBuffer[zaehler+1]) if(abTxBuffer[zaehler] == '.') bSCounter++; - } - - if(bSCounter < nTastLong+1){ /* Abfrage max. bis Taste lange gedrückt */ - if(bS3Timer == nTastShort){ /* Taste "kurz gedrückt" erkannt */ - //... - } - if(bSCounter == nTastLong){ /* Taste "lange gedrückt" erkannt */ - bTimeLong = 1; - if(wVorgabeWert <=100) wVorgabeWert = 0; - else wVorgabeWert = wVorgabeWert - 100; - bS3Timer = bS3Timer - 40; - } - } - } - else{ /* Taste nicht gedrückt */ - if((bSCounter >= nTastShort) && (bSCounter <= nTastLong)){ /* Taste wurde bereits erkannt */ - if(bTimeLong==0){ - if(wVorgabeWert <=10) wVorgabeWert = 0; - else wVorgabeWert = wVorgabeWert - 10; - } - } - bTimeLong = 0; - bSCounter = 0; - } } @@ -448,11 +358,11 @@ wSerial = abZiffer[abDisplayMemory[bDigit&0x03]]; switch(bDisplayState) { case enSchwellenwert: - bTimerDot++; /* Zähler für Punktwechsel */ + wTimerDot++; /* Zähler für Punktwechsel */ vDisplayVolt(wVorgabeWert); - if(bTimerDot == 400) { - wDelayGame=2*nTastShort; - bTimerDot = 0; + if(wTimerDot == 400) { + wDelayGame=200; + wTimerDot = 0; } if(wDelayGame!=0){ if((bDigit&0x03) == 0x01) { @@ -486,45 +396,44 @@ -Serial stComX(D1,D0); /* UART-Kommunikation (Txd(D1)/Rxd(D0)) mit dem PC */ +Serial stComX(D1,D0); // UART-Kommunikation (Txd(D1)/Rxd(D0)) mit dem PC - -byte SYS_vStartComX( word wSize, byte *pData ){ /* Start einer Übertragung */ + +byte SYS_vStartComX( word wSize, byte *pData ){ // Start einer Übertragung byte i; if(wSizeData) i = False; else{ -wSizeData = wSize; /* Anzahl der Sendedaten */ -pUartData = pData; /* Zeiger auf diese Daten */ -stComX.putc(*pUartData); /* erstes Zeichen senden */ +wSizeData = wSize; // Anzahl der Sendedaten +pUartData = pData; // Zeiger auf diese Daten +stComX.putc(*pUartData); // erstes Zeichen senden pUartData++; wSizeData--; -USART2->CR1 |= USART_CR1_TXEIE; /* TXE-Interrupt freigeben */ +USART2->CR1 |= USART_CR1_TXEIE; // TXE-Interrupt freigeben i = True; } return i; } -/* Senderoutine zum COM-Port am PC */ -void vIsrTxComX( void ){ /* Senderoutine */ -if(stComX.writeable()){ /* Sende-ISR */ -if(bSizeData){ /* sind Daten vorhanden ? */ -stComX.putc(*pUartData); /* daten senden */ +// Senderoutine zum COM-Port am PC +void vIsrTxComX( void ){ // Senderoutine +if(stComX.writeable()){ // Sende-ISR +if(bSizeData){ // sind Daten vorhanden ? +stComX.putc(*pUartData); // daten senden pUartData++; bSizeData--; } else{ -USART2->CR1 &= ~USART_CR1_TXEIE; /* Interrupt sperren */ +USART2->CR1 &= ~USART_CR1_TXEIE; // Interrupt sperren } } } -/* Empfangsroutine vom COM-Port des PC */ -void vIsrRxComX( void ){ /* Empfangsroutine */ -if(stComX.readable()){ /* Empfangs-ISR */ +// Empfangsroutine vom COM-Port des PC +void vIsrRxComX( void ){ // Empfangsroutine +if(stComX.readable()){ // Empfangs-ISR abTxBuffer[0] = stComX.getc(); -abTxBuffer[0] = abTxBuffer[0] + 1; SYS_vStartComX(1, &abTxBuffer[0]); } } @@ -532,7 +441,42 @@ +void vComA(void){ + if(abTxBuffer[0]=='a'){ + if(bMainState==enSchwellenwert) { + bDisplayState = enPotiAnzeige; + bMainState = enPotiAnzeige; + } + if(bMainState==enPotiAnzeige) { + bDisplayState = enVergleich; + bMainState = enVergleich; + } + if(bMainState==enVergleich) { + bDisplayState = enSchwellenwert; + bMainState = enSchwellenwert; + } + } +} +void vComPlus(void){ + if(abTxBuffer[0]=='+'){ + if(wVorgabeWert >=3290) wVorgabeWert = 3300; + else wVorgabeWert = wVorgabeWert + 10; + } +} + +void vComMinus(void){ + if(abTxBuffer[0]=='-'){ + if(wVorgabeWert <=10) wVorgabeWert = 0; + else wVorgabeWert = wVorgabeWert - 10;; + } +} + +void vCheckCom(void){ + vComA(); + vComPlus(); + vComMinus(); +} @@ -556,6 +500,8 @@ stComX.attach(&vIsrRxComX, Serial::RxIrq); /* ISR zum Datemempfang vom PC */ stComX.attach(&vIsrTxComX, Serial::TxIrq); /* Sende-ISR */ + + vCheckCom(); switch(bMainState) {