einfache LED Schaltung

Gast #1188185
Lesenswert?

Hallo,

könnt einer mir vielleicht sagen was ich falsch mache? Ich habe 
folgendes sehr einfaches Programm:

int main (void) {



   DDRB  = 0xff;
   PORTB = 0xff;

   DDRC  = 0xff;
   PORTC = 0x00;

   DDRD  = 0x00;
   PORTB = 0x00;

   DDRD = 0x00;
   PORTD = 0xFF;


   double i=0,t=0;

   while(1) {

     LED0 (LED_ON);
  for(i=0;i<500000;i++){};
  LED1 (LED_ON);


   }


   return 0;
}

und ich will eigentlich nur dass erst die LED0 und dann die LED1 
eingeschalten wird, aber er schaltet immer nur die LED0 ein, danach 
beendet er anscheinend das Programm.

Kann mir vielleicht jemand kurz helfen, denke dass ist für euch kein 
Problem??

danke!
Gast #1188194
Lesenswert?

>>...denke dass ist für euch kein Problem??


selbst für uri geller wär das mit deinen angaben unmöglich.

1. wo und wie sind die LEDs angeschlossen?

2. was soll uns "LED0 (LED_ON);" sagen?

3. außerdem sieht:
    DDRB  = 0xff;
    PORTB = 0xff;

    DDRC  = 0xff;
    PORTC = 0x00;

    DDRD  = 0x00;
    PORTB = 0x00;

    DDRD = 0x00;
    PORTD = 0xFF;
  sehr merkwürdig aus
#1188267
Lesenswert?

ano wrote:
> wenn i überhaupt richtig defeniert ist

yep, denke auch, dass mit "double" ist wahrscheinlich eher "long" 
gemeint gewesen ist...

Hab gar nicht gewusst, dass i++ mit double geht, glaube werde es auch 
nie brauchen :-)

@Stefan:

Unbedingt auf die richtige Verwendung von Datentypen aufpassen. Für das 
obige Beispiel ist double irgendwie unpassend.

Aber wenn das -O Flag von gcc beim Kompilieren entsprechend gesetzt ist, 
wird der Code tatsächlich wegoptimiert worden sein - nix mehr 
Warteschleife...

Probier mal (gehe mal davon aus, es ist ein AVR Programm und avr-libc, 
usw. ist vorhanden):
#include <util/delay.h>
und statt der Warteschleife
_delay_ms( 500 ); // halbe sec. warten

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren