mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zum C-Code (Beispiel)


Autor: wulga (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, schaut euch mal folgenden Code an:

#include <avr/io.h>

int main(void)
{
  DDRB = 0b00000001;

  PORTB = 0b00000001;

  return 1;
}

Ich habe an PB0 eine LED mit Vorwiderstand angeschlossen.

Wenn ich Minus der LED an PB0 und Plus der LED an +5V anschließe 
passiert gar nichts obwohl das auch so im Assemblertutorial 
eingezeichnet ist; drehe ich die LED d.h. Plus der LED kommt an PB0 und 
Minus der LED an GND leuchtet sie. Habe ich da was falsch verstanden? 
Geht das nicht auch andersrum?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich finde es OK wenn die das minus der LED an den GND angeschlosse 
ist. Wo ist es denn anders dargestellt?

Autor: wulga (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau mal hier:

http://www.mikrocontroller.net/articles/AVR-Tutori...

und scheinbar soll das auch gehen.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dann teste doch mal mit

>  PORTB = 0b00000000;

Autor: Mike R. (thesealion)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da wird aber auch ein anderer Wert in PortB geschrieben
         ldi r16, 0b11111100 ; 0b11111100 in r16 laden
         out PORTB, r16      ; r16 ins IO-Register PORTB ausgeben

Da wird der Port auf Low gesetzt, also muß die LED nach VCC, du setzt 
den Port auf High -> anderer LED Pin auf GND damit die LED leuchtet.

Autor: wulga (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Werde ich ausprobieren, danke. Aber wenn du DDRB = 0b00000001 setzt ist 
er doch auf Ausgang gesetz oder? Wie kann ich dann den PORTB = 
0b00000000 (LOW also Minus?) setzen, widerspricht sich das nicht 
irgendwie?

Autor: wulga (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bitte meinen vorigen Post nicht weiter beachten er ist ungültig.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wulga schrieb:
> widerspricht sich das nicht irgendwie?
nein weil ein ausgang auch 2 zustände anehmen kann, einmal liefert er 
strom und einmal kann er welchen aufnehmen.

Schau dir doch mal das BLockschaltbild von den IO-Anschlüssen das Atmels 
an.

Autor: wulga (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Mike S.
danke ich habs jetzt glaube ich verstanden. Muss das nur selber nochmal 
testen, damit es sitzt.

Autor: Mike R. (thesealion)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das DDRB setzt die Richtung (Eingang oder Ausgang) während du mit PORTB 
die einzelnen Pins HIGH oder LOW schalten kannst.

Ist bei deinem Link unter Pullup-Widerstand eigentlich sehr schön 
erklärt.

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>return 1;
Wohin soll denn das Programm zurückkehren?
Mach mal nen while(1); draus.

Autor: Seltsam (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich habe an PB0 eine LED mit Vorwiderstand angeschlossen.
> Minus der LED an PB0 und Plus der LED an +5V

Das ist eine active low Schaltung:
Die LED leuchtet, wenn PB0 einen LOW Pegel hat.

> DDRB = 0b00000001;
> PORTB = 0b00000001;

Das erzeugt einen HIGH Pegel an PB0.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.