www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Led einschalten


Autor: M. K. (bob13)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab mal wieder ein Anfängerproblem.
Und zwar will ich eine LED zum leuchten bringen. Ich verwende den 
Atmega8515.
Mein Code sieht so aus:
.include "m8def.inc"

   sbi DDRD,PD0
   sbi PORTD,PD0
loop: 
   rjmp loop

Nach dem ausführen des Codes passiert einfach nichts...
Liegt der Fehler vielleicht an den Ports?
Zumindest sind die Kabel an meinem STK500 so gesteckt, wie es im 
Online-Handbuch beschrieben wird.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und in welche Zeile glaubst du wird die LED eingeschaltet?

Schreibe am beste mal hinter jede Zeile was sie macht.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oh sorry, war auf dem falschen dampfer. Vergiss mein Kommentar

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>   sbi PORTD,PD0

Versuch mal

   cbi PORTD,PD0

Ich meine die LED werden am STK500 gegen Masse geschaltet.

Autor: M. K. (bob13)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
funktioniert nicht :(

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gut so schlecht war mein Kommentar doch nicht

sbi DDRD,PD0 ;setzt Bitnummer und schaltet die LED somit ein

falsch, legt fest welches Bit als ausgang genutzt werden soll

sbi PORTD,PD0 ;macht das gleiche (?)
auch falsch, setzt das Bit 0 auf 1 (wenn dort die LED gegen masse dran 
ist wird sie leuchten)

loop:
   rjmp loop ;sorgt dafür, dass die LED immer an bleibt.

fast richitg, ist eine schleife damit der Prozessor definert etwas 
macht.

Autor: Hmm... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast das Datenblatt, insbesonders die Beschreibung zu den SFR "DDRx" 
und "PORTX" schon gelesen, oder?

Kurz gesagt kann jeder Pin Eingang ODER Ausgang sein. Was er konkret 
sein soll, muss ihm der Programmierer (DU!) erst sagen. Dazu dient 
"DDRx". Welchen Zustand er als Ausgang dann annimmt, legst du mit 
"PORTx" fest.

Und die Funktion der Assembler-Befehle (sbi und co) kannst du sicher 
hier dem Tutorial entnehmen.

Auszug aus dem Datenblatt:

Each port pin consists of 3 Register bits: DDxn, PORTxn, and PINxn. As 
shown in “Register
Description for I/O Ports” on page 65, the DDxn bits are accessed at the 
DDRx I/O address, the
PORTxn bits at the PORTx I/O address, and the PINxn bits at the PINx I/O 
address.
The DDxn bit in the DDRx Register selects the direction of this pin. If 
DDxn is written logic one,
Pxn is configured as an output pin. If DDxn is written logic zero, Pxn 
is configured as an input
pin.
If PORTxn is written logic one when the pin is configured as an input 
pin, the pull-up resistor is
activated. To switch the pull-up resistor off, PORTxn has to be written 
logic zero or the pin has to
be configured as an output pin. The port pins are tri-stated when a 
reset condition becomes
active, even if no clocks are running.
If PORTxn is written logic one when the pin is configured as an output 
pin, the port pin is driven
high (one). If PORTxn is written logic zero when the pin is configured 
as an output pin, the port
pin is driven low (zero).

Autor: M. K. (bob13)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, stimmt...
Inzwischen hat sich mein problem erledigt.
Weiß selbst nicht, wie es geklappt hat, aber es geht jetzt ^^

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich meine die LED werden am STK500 gegen Masse geschaltet.

Damit meinte ich sie werden an der Kathode geschaltet.
D.h. 1 ist aus, 0 ist an.


>funktioniert nicht :(

Sicher?

   sbi DDRD,PD0
   cbi PORTD,PD0
loop:
   rjmp loop

Autor: Hmm... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ja, stimmt...
> Inzwischen hat sich mein problem erledigt.
> Weiß selbst nicht, wie es geklappt hat, aber es geht jetzt ^^

Fehlt nur noch der Ehrgeiz deinerseits herauszufinden, WARUM es jetzt 
klappt und was vorher der Fehler war....

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.