micron
20.09.2014, 20:54
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:
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;
*/
}
}
Mir ist klar das der Fehler bei mir liegt nur ich weiss nicht wo ich das vermasselt habe. :(
Danke für jede Hilfe.
micron
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:
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;
*/
}
}
Mir ist klar das der Fehler bei mir liegt nur ich weiss nicht wo ich das vermasselt habe. :(
Danke für jede Hilfe.
micron