diff --git a/main.c b/main.c index b46a18c..e234041 100644 --- a/main.c +++ b/main.c @@ -37,14 +37,12 @@ NexEventObj fuellstandText; //---------------------Variablen------------------------ -volatile unsigned long* Switch[8] ={&Switch0, &Switch1, &Switch2, &Switch3, &Switch4, &Switch5, &Switch6, &Switch7}; - #define SOLLWERT 0x7F // 127d #define GAP 0x5F // 95d #define NACHLAUF 0x5 +volatile unsigned long* Switch[8] ={&Switch0, &Switch1, &Switch2, &Switch3, &Switch4, &Switch5, &Switch6, &Switch7}; int nachlaufOffset = 0; -char buffer[24]; // ka ob wir die benutzen, zu faul zum Suchen //------------------------------------------------------ @@ -58,25 +56,17 @@ void PortConfig(void) RCC -> APB2ENR |= RCC_APB2ENR_IOPCEN; //Takt für Port C aktivieren RCC -> APB2ENR |= RCC_APB2ENR_IOPBEN; //Takt für Port B aktivieren RCC -> APB2ENR |= RCC_APB2ENR_IOPAEN; //Takt für Port A aktivieren - - GPIOC -> CRL &= 0x00000000; - GPIOC -> CRL = 0x22222222; - GPIOC -> CRH = 0x22222222; - + GPIOB -> CRL &= 0x00000000; - GPIOB -> CRL = 0x22222222; - - GPIOA -> CRL &= 0x00000000; - GPIOA -> CRL = 0x22222222; - - //----- Inputs ------ - - GPIOA -> CRH &= 0x00000000; - GPIOA -> CRH |= 0x00088000; - + GPIOB -> CRL = 0x22222222; GPIOB -> CRH &= 0x00000000; GPIOB -> CRH |= 0x88880000; + GPIOA -> CRL &= 0x00000000; + GPIOA -> CRL = 0x22222222; + GPIOA -> CRH &= 0x00000000; + GPIOA -> CRH |= 0x00088000; + GPIOC -> CRL &= 0x00000000; GPIOC -> CRL |= 0x28222222; GPIOC -> CRH &= 0x00000000; @@ -94,20 +84,20 @@ void PortConfig(void) void uart2_init(void) { RCC->APB2ENR |= RCC_APB2ENR_AFIOEN | RCC_APB2ENR_IOPAEN; - RCC->APB1ENR |= 0x20000; // UART2 Taktversorgung - - GPIOA->CRL &= 0xFFFFF0FF; - GPIOA->CRL |= 0xB00; - - GPIOA->CRL &= 0xFFFF0FFF; - GPIOA->CRL |= 0x4000; - - USART2->CR1 &= ~0x1000; // M:--> Start bit, 8 Data bits, n Stop bit - USART2->CR1 &= ~0x0400; // PCE: 0: Parity control disabled - USART2->CR2 &= ~0x3000; // STOP: 00: 1 Stop bit afungsbil - USART2->BRR = 0x1D4C; // set Baudrate to 9600 Baud (SysClk 72Mhz) - USART2->CR1 |= 0x0C; // enable Receiver and Transmitter - USART2->CR1 |= 0x2000; // Set USART Enable Bit + RCC->APB1ENR |= 0x20000; // UART2 Taktversorgung + + GPIOA->CRL &= 0xFFFFF0FF; + GPIOA->CRL |= 0xB00; + + GPIOA->CRL &= 0xFFFF0FFF; + GPIOA->CRL |= 0x4000; + + USART2->CR1 &= ~0x1000; // M:--> Start bit, 8 Data bits, n Stop bit + USART2->CR1 &= ~0x0400; // PCE: 0: Parity control disabled + USART2->CR2 &= ~0x3000; // STOP: 00: 1 Stop bit afungsbil + USART2->BRR = 0x1D4C; // set Baudrate to 9600 Baud (SysClk 72Mhz) + USART2->CR1 |= 0x0C; // enable Receiver and Transmitter + USART2->CR1 |= 0x2000; // Set USART Enable Bit } void uart2_putChar(char zeichen) @@ -169,11 +159,10 @@ void configProgressBar(void) pumpeInd.pushhandler = NULL; } - void configTextFields(void) { fuellstandText.pid = 0; - fuellstandText.cid = 1; // Component ID aus Nextion Editor + fuellstandText.cid = 1; // Component ID aus Nextion Editor fuellstandText.name = "fuellstandn"; // Exakter Name! fuellstandText.pophandler = NULL; fuellstandText.pushhandler = NULL; @@ -203,13 +192,13 @@ void leerBlasen(int8_t state) { NexProgressBar_setValue(&leerInd, 100); LEERBLASEN = 1; - uart2_putString("Leerblasventil geoeffnet!\r\n"); + //uart2_putString("Leerblasventil geoeffnet!\r\n"); } else { NexProgressBar_setValue(&leerInd, 0); LEERBLASEN = 0; - uart2_putString("Leerblasventil geschlossen!\r\n"); + //uart2_putString("Leerblasventil geschlossen!\r\n"); } return; @@ -221,13 +210,13 @@ void fein(int8_t state) { NexProgressBar_setValue(&feinInd, 100); FEIN = 1; - uart2_putString("Feinventil geoeffnet!\r\n"); + //uart2_putString("Feinventil geoeffnet!\r\n"); } else { NexProgressBar_setValue(&feinInd, 0); FEIN = 0; - uart2_putString("Feinventil geschlossen!\r\n"); + //uart2_putString("Feinventil geschlossen!\r\n"); } return; @@ -239,13 +228,13 @@ void grob(int8_t state) { NexProgressBar_setValue(&grobInd, 100); GROB = 1; - uart2_putString("Grobventil geoeffnet!\r\n"); + //uart2_putString("Grobventil geoeffnet!\r\n"); } else { NexProgressBar_setValue(&grobInd, 0); GROB = 0; - uart2_putString("Grobventil geoeffnet!\r\n"); + //uart2_putString("Grobventil geoeffnet!\r\n"); } return; @@ -257,13 +246,13 @@ void pumpe(int8_t state) { NexProgressBar_setValue(&pumpeInd, 100); PUMPE = 1; - uart2_putString("Pumpe eingeschaltet!\r\n"); + //uart2_putString("Pumpe eingeschaltet!\r\n"); } else { NexProgressBar_setValue(&pumpeInd, 0); PUMPE = 0; - uart2_putString("Pumpe ausgeschaltet!\r\n"); + //uart2_putString("Pumpe ausgeschaltet!\r\n"); } return; @@ -274,12 +263,12 @@ void fuellstand(int8_t value) if(value >= 0 && value <= 100) { NexProgressBar_setValue(&fuellstandInd, value); - uart2_putString("Fuellstand geaendert!\r\n"); + //uart2_putString("Fuellstand geaendert!\r\n"); } else { NexProgressBar_setValue(&fuellstandInd, 0); - uart2_putString("Uengueltiger Fuellstandswert!\r\n"); + //uart2_putString("Uengueltiger Fuellstandswert!\r\n"); } } @@ -332,10 +321,10 @@ int main(void) fein(0); grob(0); pumpe(0); - wait_sys_ms(20); + wait_sys_ms(20); - bool leerGeblasen = 0; - bool leitungBenutzt = 0; + bool leerGeblasen = false; + bool leitungBenutzt = false; uart2_putString("Dosieranlage V01\r\n"); @@ -346,54 +335,53 @@ int main(void) uint8_t istWert = SwitchesToInt(); uint16_t effektiverWert = istWert + nachlaufOffset; - - if(*Switch[7] == 0) + if(*Switch[7] == 0) + { + leerGeblasen = true; + leitungBenutzt = false; + + pumpe(1); + + if(effektiverWert < SOLLWERT - NACHLAUF) { - leerGeblasen = 1; - leitungBenutzt = false; - - pumpe(1); - - if(effektiverWert < SOLLWERT - NACHLAUF) - { - fein(1); - leitungBenutzt = true; - } - else if(effektiverWert >= SOLLWERT - NACHLAUF) - { - fein(0); - } - - if(effektiverWert < GAP) - { - grob(1); - leitungBenutzt = true; - } - else if(effektiverWert < SOLLWERT) - { - grob(0); - } - else - { - grob(0); - } - - setFuellstand(effektiverWert); - wait_sys_ms(5); + fein(1); + leitungBenutzt = true; + } + else if(effektiverWert >= SOLLWERT - NACHLAUF) + { + fein(0); + } + + if(effektiverWert < GAP) + { + grob(1); + leitungBenutzt = true; + } + else if(effektiverWert < SOLLWERT) + { + grob(0); + } + else + { + grob(0); + } + + setFuellstand(effektiverWert); + wait_sys_ms(5); } else { - if(leerGeblasen == 1) + if(leerGeblasen) { pumpe(0); grob(0); fein(0); - leerBlasen(1); if(leitungBenutzt) { int time = 3000 / NACHLAUF; + uint8_t i = 0; for(i = 0; i < NACHLAUF; i++) { @@ -408,8 +396,10 @@ int main(void) } leerBlasen(0); - leerGeblasen = 0; + leerGeblasen = false; } } } + + return 0; }