Hallo Forum,
ich beschreibe erst mein Vorhaben was ich ereichen wollte und dann zum Problem ok?
Ich hab das Einsteiger Board von Olimex mit ATmega8 Controller, auf der Platine ist eine LED die ich mit dem "blink" Programm zum blinken bringen kann.
Das geht, jetzt zum Problem:
Ich hab auf das Board noch 2 weitere LEDs gelötet und wollte die der reihe nach ein/ausschalten:
Rot->ein
aus
wait(1000)
Gelb->ein
aus
wait(1000)
Grün->ein
aus
wait(1000)
das ganze dann in Schleife das mit 1000ms verzögerung.
Wenn ich nur 2 (egal welche LEDs) "einschalte" funktioniert das wie ich mir das vorgestellt habe, aber sobald alle 3 angesprochen werden stimmt schon nicht.
Das Problem ist das diese 3 LEDs zu schnell blinken, es ist eher ein "blinzeln" als blinken, als ob keine 1000ms Pause dazwischen wäre.
Die grüne LED ist an PC1 und die gelbe ist am PC2 angschlossen, die Rote LED ist an PC5.
Die gelbe LED hat einen Vorwiderstand von 150 Ohm, die Grüne auch, obwohl es laut berechnung 190 sein sollten (ist das ein grober Fehler?? falls ja, wieso funktioniert die grüne LED im 2er kombination, also mit nur 2 LEDs gehts)
So,hier mein Versuch mit dem Sourcecode:
Mir ist klar das der Fehler bei mir liegt nur ich weiss nicht wo ich das vermasselt habe.Code:int main(void) { DDRC |= (1<<PC5); DDRC |= (1<<PC2); //DDRC |= (1<<PC1); while(1) { //TODO:: Please write your application code PORTC = 0b0100000; // Rote LED _delay_ms(1000); // PORTC = 0b0000000; PORTC = 0b0000100; // Gelbe LED _delay_ms(1000); // PORTC = 0b0000000; /* wenn der Teil aktiv ist dann blinzeln die LEDs nur, das blinken ist so schnell das man es kaum als blinken definieren kann, eher blinzeln PORTC = 0b0000010; // Grüne LED _delay_ms(1000); // PORTC = 0b0000000; */ } }
Danke für jede Hilfe.
micron
Lesezeichen