Warum wird mir hier die DEALY Funktion nicht ausgeführt. bzw stoppt?? #define F_CPU 8000000UL #include <avr/io.h> #include <util/delay.h> int main(void) { int i; int feld[10] = {1,2,4,8,16,32,64,128}; DDRA = 0xff; nochmal: { for(i=0; i<8 ; i++) PORTA = feld[i]; _delay_ms(200); } goto nochmal; }
Ingo Laabs wrote:
> Warum wird mir hier die DEALY Funktion nicht ausgeführt. bzw stoppt??
Wie kommst Du darauf?
Hast Du ein Speicher-Oszi angeschlossen, um zu sehen, wie nach 200ms
alle 8 Bitmuster µs-schnell durchrauschen?
Mit nem Analog-Oszi wirst Du es nicht sehen.
Peter
200ms is wahrscheinlich zuviel. Probier's mal mit zwei mal 100ms. Und nimm das "goto" da raus das ist ja graueneregend.
Die wird bestimmt ausgeführt, nur nicht zu dem von dir erwarteten Zeitpunkt im Programmablauf ;-) Probiere mal #define F_CPU 8000000UL #include <avr/io.h> #include <util/delay.h> int main(void) { int i; int feld[10] = {1,2,4,8,16,32,64,128}; DDRA = 0xff; nochmal: { for(i=0; i<8 ; i++) { PORTA = feld[i]; _delay_ms(200); } } goto nochmal; }
ich habe mit dem oszi gemessen. der port 0 steht auf high und die anderen stehen alle auf null. nehme ich das delay raus funktioniert die sache. GOTO ist nur zu testzwecken drinne..ist mein zweiter tag in C :-) dauert noch ein wenig G Ingo
Hallo Stefan.. es funktioniert..danke.....niederknie :-) aber warum ging es nicht ohne klammern??
Dann schau dir den Tip von Stefan an, und mach die geschweiften Klammern um den for-Schleifenbody. So wie's jetzt ist läuft deine Schleife zuerst von 0-7 durch, OHNE Delay, und führt DANACH ein einziges Delay mit 200ms aus.
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.