Hallo, ich bastle grad an einem kleinen Tool, wo auf ein Sensorsignal hin eine LED gedimmt werden soll. Für die LED gibt es 3 verschiedene PWM-Arrays, deshalb sind die Werte dafür auch im Flash gespeichert. Aus irgendeinem Grund, fängt die LED zwar an zu dimmen, aber springt anschließend wieder auf 100% und dimmt erneut, es läuft quasi eine Endlosschleife und ich weiß nicht warum. Könnt ihr mir bitte helfen... Vielen Dank schonmal Max Hier das Programm: #define ARRAY_SIZE 190 //long delays void my_delay(uint16_t milliseconds) { for(; milliseconds > 0; milliseconds--) _delay_ms(1); } //----------------- Die LED einmal durchdimmen void sweepLed(uint16_t *useTable, uint16_t delay) { int8_t tmp; //-->LED Dimmen for(tmp = 0 ; tmp < ARRAY_SIZE; tmp++) { OCR1A = pgm_read_word(useTable-tmp); my_delay( delay ); } }
Maximilian schrieb: > Aus irgendeinem > Grund, fängt die LED zwar an zu dimmen, aber springt anschließend wieder > auf 100% und dimmt erneut, es läuft quasi eine Endlosschleife Von irgendwo her muss diese Funktion ja auch aufgerufen werden. Dort wird sich der Grund für die "Endlosschleife" finden. > OCR1A = pgm_read_word(useTable-tmp); Das sieht falsch aus. useTable + tmp
int8_t tmp; //-->LED Dimmen for(tmp = 0 ; tmp < ARRAY_SIZE; tmp++) int8_t geht nur bis 128 und ist somit immer zu klein;)
Hmm, also im Hauptprogramm ruf ich eigentlich nur die Funktion "sweepLED(useTable, step_time)" auf...Daran kann doch eigentlich nix groß falsch sein oder?
dummy schrieb: > int8_t tmp; > > //-->LED Dimmen > for(tmp = 0 ; tmp < ARRAY_SIZE; tmp++) > > int8_t geht nur bis 128 und ist somit immer zu klein;) Kopfklatsch. Ja, das hab ich überlesen. Wohl auch, weil ich davon ausgegangen bin, dass eine derartige Variable ein uint8_t sein wird. Typischer Fall von: das gelesen, was man erwartet. Und nicht das was dortsteht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.