Guten Tag , hab da mal ein Anfängerproblem Ich möchte eine LED blinken lassen. while(1) { PORTD = (1<<PD5); _delay_ms(50); PORTD &= ~(1<<PD5); _delay_ms(50); } Die LED geht zwar an aber nicht aus. wenn ich PORTD=0x00; hinschreib gehts. Was hab ich verkehrt gemacht??? mit PORTD &= ~(1<<PD5); lösche ich doch das Bit??!?!
mach mal aus den _delay_ms(50); ein _delay_ms(500); Dein Auge ist zu träge das bei 50ms zu erkennen. Für sich ist die einfach immer an.
dank dir ! hätt ja nicht gedacht , dass ich sooo langsam bin ... ;-) Jetzt funktionierts, bzw. jetzt sehe ich, dass es funktioniert ;-)
Na ja, im Schnitt erkennt das Auge 25 Bilder pro Sekunde schon als Video an. bei 100ms hättest du evtl angefangen was zu erkennen ;)
hab noch was entdeckt. bei mir gehts nur aus, wenn ich PORTD &= ~(0<<PD5) mache... versteh ich nicht?
Du musst Binär denken! mit (1 << PD5 ) wird eine 1 um den Wert von PD5 nach links geschoben also wenn in deinem Register 0b00000000 steht steht dann 0b00100000 (ich bin einfach mal davon ausgegangen das PD5 den Wert 5 hat) und das ~ invertiert das Register dann also: aus 0b00100000 wird 0b11011111 http://www.mikrocontroller.net/articles/Bitmanipulation
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.