einfache LED Schaltung

Gast #1188185
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
>>...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
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.