- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 5 von 5

Thema: LED über DDR steuern????

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    26.07.2005
    Beiträge
    5

    LED über DDR steuern????

    Anzeige

    Powerstation Test
    Hy, ich bin Anfänger beim programmieren von µC. Hab den RN-Control und AVRStudio.
    Ich möchte nur mal eine LED zum blinken bringen, aber wenn ich den Port als Ausgang definiere leuchtet die LED ohne das ich den Port auf high setzen muss.
    DDRA=(1<<DDA0);
    //LED leuchtet ab hier
    PORTA |=(1<<PA0); // nicht notwendig
    PORTA &=~(1<<PA0); //schaltet die LED nicht ab!!
    dachte eigentlich dass die LED´s über Port´s oder Pin´s an und ausgemacht werden müssen und nicht über DDR.. nur zum definieren ob Eingang oder Ausgang.
    Seh ich da was falsch oder wo ist der Denkfehler

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Hallo,
    Du meinst PortC, denn die LEDs sind beim RN-Control über PortC angeschlossen.
    Die LEDs sind gegen Gnd, also Masse (oder 0V), angeschlossen, so leuchten die wenn der Port auf 0 ist, und sind aus wenn der Port auf 1 gesetzt wird.
    Das wird aber oft so gemacht, denn nicht alle Controller können den Strom liefern den eine LED braucht um zu leuchten.
    Der Mega32 könnte das jetzt schon, aber schadet nicht es so zu machen.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    13.01.2004
    Ort
    Bad Schwartau
    Alter
    44
    Beiträge
    51
    Wenn die Schaltung von dir richtig ist, dann liegt dein Denkfehler in der Geschwindigkeit des Controllers.
    Wenn du nur den oben genannten Code verwendentest blinkt die LED mit (Achtung Schätzwert) 100kHz oder mehr (je nach Quarzfrequenz).

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    26.07.2005
    Beiträge
    5
    Danke, daran lag´s. Habe es jetzt auch hinbekommen.
    Anschlussfrage:
    ist das richtig: wenn man zB eine LED zum leuchten bringen will, muss das Port auf High gesetzt werden klappt nicht wenn Pin auf High (gesetzt); verbindet man einen "High"-Port (mit Kabel) auf einen anderen Port und will das dieser bei High-Pegel eine Aktion ausführtmuss man den Pin-Zustand abfragen und nicht den Port-Zustand (if bit_is_set PinA...) -->Aktion. nicht (if bit_is_set PortA...).

    also High erzeugen -> Port
    High detektieren -> Pin

    Richtig? Warum?

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Hallo,
    das liegt daran, das die Eingänge an PinX ankommen, und die Ausgänge über PortX angesprochen werden.
    Je nach Richtung im DDRx.
    Dazu kommt noch, wenn ein Port auf Eingang gestellt ist, kann man per PortX einen Pullup einschalten wenn er auf 1 gesetzt wird.

    PS:
    ist so von Atmel gebaut worden.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress