Hallo, könnt einer mir vielleicht sagen was ich falsch mache? Ich habe folgendes sehr einfaches Programm: int main (void) { DDRB = 0xff; PORTB = 0xff; DDRC = 0xff; PORTC = 0x00; DDRD = 0x00; PORTB = 0x00; DDRD = 0x00; PORTD = 0xFF; double i=0,t=0; while(1) { LED0 (LED_ON); for(i=0;i<500000;i++){}; LED1 (LED_ON); } return 0; } und ich will eigentlich nur dass erst die LED0 und dann die LED1 eingeschalten wird, aber er schaltet immer nur die LED0 ein, danach beendet er anscheinend das Programm. Kann mir vielleicht jemand kurz helfen, denke dass ist für euch kein Problem?? danke!
Hallo Stefan, was die Funktion "LED0 (LED_ON)" macht ist hier nicht ersichtlich ... Daher kann man da keine Aussage treffen ob da ein Fehler ist. Ausserdem: definiere i mal als long int statt als double !
>>...denke dass ist für euch kein Problem?? selbst für uri geller wär das mit deinen angaben unmöglich. 1. wo und wie sind die LEDs angeschlossen? 2. was soll uns "LED0 (LED_ON);" sagen? 3. außerdem sieht: DDRB = 0xff; PORTB = 0xff; DDRC = 0xff; PORTC = 0x00; DDRD = 0x00; PORTB = 0x00; DDRD = 0x00; PORTD = 0xFF; sehr merkwürdig aus
>for(i=0;i<500000;i++){};
und die schleife geht vermutlich schneller als du denkst - bei
optimierung werden es 0µs sein
ano wrote: > wenn i überhaupt richtig defeniert ist yep, denke auch, dass mit "double" ist wahrscheinlich eher "long" gemeint gewesen ist... Hab gar nicht gewusst, dass i++ mit double geht, glaube werde es auch nie brauchen :-) @Stefan: Unbedingt auf die richtige Verwendung von Datentypen aufpassen. Für das obige Beispiel ist double irgendwie unpassend. Aber wenn das -O Flag von gcc beim Kompilieren entsprechend gesetzt ist, wird der Code tatsächlich wegoptimiert worden sein - nix mehr Warteschleife... Probier mal (gehe mal davon aus, es ist ein AVR Programm und avr-libc, usw. ist vorhanden): #include <util/delay.h> und statt der Warteschleife _delay_ms( 500 ); // halbe sec. warten
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.