Wieso blinkt die LED nicht mir dem Code?? Was mache ich falsch? /********************************************* Taste-LED (1 LED) Compiler : winavr Chip type : AT90S2313 nst, 12.05.2005 *********************************************/ #include <avr/io.h> #include <inttypes.h> #ifndef F_CPU #define F_CPU 10000000UL /* Quarz mit 10.0000 Mhz */ #endif #include <avr/delay.h> int main(void) { DDRB &= 0xff; PORTB = 0xff; while (1) { PORTB |= ( 0 << 1); _delay_ms(1000); PORTB &= ~(1 << 1); _delay_ms(1000); } }
Weil du die Doku zu <avr/delay.h> auch nicht lesen kannst. Hättest du wenigstens zwei oder drei Threads hier mitgelesen, wäre dir dasselbe Problem bei jemandem anders aufgefallen. Bitte gehe zurück zur Badstraße, gehe nicht über LOS, und rechne dir aus, welche Verzögerung maximal bei 10 MHz mit der 16-bit-Schleife machbar ist. Dann hälst du einen Oszi an deine LED und misst mal nach, ob sie einigermaßen mit der entsprechenden Frequenz flimmert...
An welchen Pin ist denn deine LED angeschloosen? Ich nehme mal an, an PB.1. Die Zeile PORTB |= ( 0 << 1); ändert jedoch nur einmal den Zustand von PORTB, danach nicht mehr. Probiere es mal hiermit: while (1) { PORTB ^= 2; // EX-OR _delay_ms(1000); } Gruß Thorsten
- DDRB=0xff, nicht &= - PORTB|=(1<<1), nicht (0<<1) - Parameter an delay testweise kleiner (vgl. aktuelle Diskussion in einem anderen Thread und avr-libc-Dokumentation und "delay.h")
LOL das ist ja blöd!! Wieso kann man nicht direct 2000 für 2 sek eigeben? hat das was mit dem AVR zutun?? So geht das: while (1) { PORTB ^= 2; // EX-OR for(i=0;i<78;i++) { _delay_ms(26); } }
> LOL das ist ja blöd!! Wieso kann man nicht direct 2000 für 2 sek > eigeben? hat das was mit dem AVR zutun?? avr-libc (dazu gehört delay.h und _delay_ms) ist Open Source. Wenn du irgendetwas blöd gelöst findest, darfst du gerne einen Patch schreiben und die fragliche Stelle verbessern. Rummeckern kann jeder.
Er schafft es ja nichtmal die Doku zu lesen, bevor er anfängt zu posten. Da ist das glaube ich zu viel verlangt.
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.