Was ist zuerst geschaltet, ein oder aus?

Gast #6716938
Hallo
Habe die LED mit einem Vorwiderstand an Vcc angeschlossen und schalte 
den Pin nach GND, wodurch die LED geschaltet wirde. Bin jetzt aber total 
durcheinander gekomnmen bei welchem Befehl die LED leuchtet oder nicht.
[c]
DDRA=0b00101001;      // DDRA auf Ausgang schalten
  PORTA=0b00101001;      // PortA auf aus/ein
  while(1)          // Programmschleife
  {
    PORTA |=(1<<PINA0);  // LED 3 ein ???
    _delay_ms(500);    // Pause 500ms
    PORTA &=~(1<<PINA0);  // LED 3 aus ???
    _delay_ms(500);    // Pause 500ms
  }
#6716943
Finds raus!
zB:
1
DDRA=0b00101001;      // DDRA auf Ausgang schalten
2
  PORTA=0b00101001;      // PortA auf aus/ein
3
  while(1)          // Programmschleife
4
  {
5
    PORTA |=(1<<PINA0);  // LED 3 ein ???
6
    _delay_ms(900);    // Pause 500ms
7
    PORTA &=~(1<<PINA0);  // LED 3 aus ???
8
    _delay_ms(100);    // Pause 500ms
9
  }
(Firma: Funkenflug Industries) #6717006
Wenn die LED nach Vcc geschaltet ist, leuchtet sie wenn der µC-Pin low 
ist, ist sie nach Masse geschaltet, dann leuchtet sie wenn der Pin high 
ist. Mit AVRs lässt sich beides machen, gibt keinen Vor- oder Nachteil 
der Varianten wenns nur um die LED geht.
Gast #6717042
Teo D. schrieb:
> Finds raus!

Gut!
Das war auch mein erster Gedanke 😀.

Klaus schrieb:
> DDRA=0b00101001;      // DDRA auf Ausgang schalten
> PORTA=0b00101001;      // PortA auf aus/ein

Naja, die Kommentare passen nicht so ganz.
Die DDRA-Zuweisung wird nur PA0, PA3 und PA5 auf Ausgang schalten. Und 
die PORTA-Zuweisung wird die selben Pins auf HIGH setzen und für die 
anderen einen offenen Eingang hinterlassen (ist eh der Defaultwert nach 
dem Reset).
Sinnvoller wäre es, falls die restlichen Pins des Ports nicht genutzt 
werden, die entweder alle auf Ausgang zu schalten oder wenigstens deren 
Pullup zu aktivieren:
Also entweder:
DDRA = 0xFF; // alles Ausgänge
oder
PORTA = 0xFF; // PA1,2,4,6,7 PU aktivieren.
Gast #6717409
Klaus schrieb:
> Bin jetzt aber total durcheinander gekomnmen bei welchem Befehl
> die LED leuchtet oder nicht.

Dein Ansatz ist schon gut. Wenn du jetzt auch noch unterschiedliche 
Pausenlängen verwendest, lassen sich beide Zustände anhand der 
Einschaltdauer unterscheiden und du siehst, wie die Zuordnung zu deinen 
Portbefehlen aussieht.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 5 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.