Ich benutze einen Attiny 44 mit 5V über einen Programmer. Mein Versuchsaufbau besteht nur mal darin eine RGB-LED zu testen. Es handelt sich um eine Kingbright mit 2 x Blau, 1 x rot und 1x Grün, 2x GND. Testhalber habe ich im moment nur 2 der 4 LED's angeschlossen. Bei beiden Pins (PA1 und PA2) ist jeweils ein 1K Widerstand vorhanden. Beide sollen einfach nur blinken. Das blaue (PA1) blinkt ohne probleme, das Rote (PA2) ist einfach nur an und blinkt nicht. Hier einmal der Sourcecode: #include <avr/io.h> #include <util/delay.h> int main(void) { DDRA = (1 << PA1) | (1 << PA2); while(1) { PORTA |= (1 << PA1) | (1 << PA2); // LED's leuchten _delay_ms(500); // eine halbe Sekunde warten PORTA &= ~(1 << PA1) | (1 << PA2); // LED's aus _delay_ms(500); // eine halbe Sekunde warten } }
hp-freund schrieb: > Fred schrieb: >> PORTA &= ~(1 << PA1) | (1 << PA2); // LED's aus > > Sieht falsch aus. Wie kommst du darauf? Das ist genau richtig. So löscht man Bits. gruß cyblord
Ich denke es liegt an ner fehlenden Klammer. Mach mal noch ne Klammer drum:
1 | PORTA &= ~( (1 << PA1) | (1 << PA2) ); // LED's aus |
Hey Fred!
> Beide sollen einfach nur blinken.
Für das Blinken würde ich es mit einer EXOR - Verknüpfung versuchen.
PORTA ^= ....
Hi >Für das Blinken würde ich es mit einer EXOR - Verknüpfung versuchen. >PORTA ^= .... Beim ATTiny44 geht auch: PINA=... MfG Spess
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.