Hallo Dirk,
vielen Dank für den Tip, so in der Art müsste es eigentlich funktionieren. Aber irgendwie krieg ich es nicht hin. Hab mich erstmal auf 2 LED´s konzentriert (Port 7 und 5).
Was ich nicht ganz verstehe: Der Port 3 für den Suchscheinwerfer ist am Anfang immer aktiv ebenso die für die LED´s. Port 3 schalte ich im Hauptprogramm ja aktiv ab (PORTC &= ~IO_PC3; ) die 4 anderen nicht. Diese sind aber nach einmaligen aufleuchten ebenfalls auf Low???Code:void task_LDRinfo(void) //LDR für Suchscheinwerfer auswerten { writeString_P("LDR_L: "); writeIntegerLength(adcLSL, DEC, 4); writeString_P(" ; LDR_R: "); writeIntegerLength(adcLSR, DEC, 4); writeString_P(" ||"); if(adcLSL <400) PORTC |= IO_PC3; if(adcLSL >450) PORTC &= ~IO_PC3; } void eigenefunktion(void) { PORTC &= ~IO_PC7; //IO´s erstmal auf LOW schalten PORTC &= ~IO_PC6; PORTC &= ~IO_PC5; PORTC &= ~IO_PC4; startStopwatch3(); //Stopwatch Nr. 1 starten if (getStopwatch3() > 100) //Stopwatch 1 auswerten PORTC |= IO_PC7; /Wenn Stopwatch über 100-> Ports High PORTC |= IO_PC5; setStopwatch1(0); //Stopuhr zurückstellen auf 0 if (getStopwatch3() > 100) //Stopwatch 1 auswerten PORTC &= ~IO_PC7; // Wenn Stopwatch über 100--> Ports LOW PORTC &= ~IO_PC5; setStopwatch3(0); //Stopuhr wieder zurück int main(void) //Hauptprogramm { initRP6Control(); initLCD(); DDRC |= IO_PC7; //erstmal Ports festlegen DDRC |= IO_PC6; DDRC |= IO_PC5; DDRC |= IO_PC4; DDRC |= IO_PC3; PORTC &= ~IO_PC3; /*Den Port für den Suchscheinwerfer auf LOW /* while(true) //Endlos-Schleife starten { task_LCDHeartbeat(); task_checkINT0(); task_I2CTWI(); behaviourController(); eigenefunktion(); /*Hier sollten nun eigentlich die Ports nach je 100ms high/Low-Schalten /* task_LDRinfo(); /*Abfrage für Suchscheinwerfer } return 0; }







Zitieren

Lesezeichen