Forum: Mikrocontroller und Digitale Elektronik Was ist zuerst geschaltet, ein oder aus?


von Klaus (Gast)


Lesenswert?

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
  }

von Teo D. (teoderix)


Lesenswert?

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
  }

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

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.

von HildeK (Gast)


Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.