mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Kann mir jemand helfen?


Autor: Florian Wolling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Ich verwende einen AT90S2313 und habe an alle PortB's LED's  und an
PortD3 einen Taster angeschlossen.
Dann habe ich den Folgenden Quelltext in den AVR geladen.



.include "2313def.inc"

ldi r16 , 0xFF
out DDRB, r16

ldi r16 , 0x00
out DDRD, r16

ldi r16, 0b11111111
out PORTB, r16

schleife:
in r16    , PIND
out PORTB , r16
rjmp schleife



Leider leuchten alle LED's beim Start, obwohl der Taster noch nicht
gedrückt war, dabei sollte er die LED anschalten!

Woran kann das liegen?

Danke,
MFG,
################
Florian Wolling#
################

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ldi r16, 0b11111111    ;r16 mit 0xFF geladen
out PORTB, r16         ; Auf PortB 0xFF ausgeben
schleife:
in r16    , PIND
out PORTB , r16
rjmp schleife


siehst du den fehler? ;)

Autor: Florian Wolling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein!
Wo isr der?

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du lädst r16 mit 0b11111111 (0xFF) und gibst es auf PORTB wieder aus,
direkt, vor der schleife

Autor: Florian Wolling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wiso geht das nicht?

Autor: Marc Donner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn du auf PORT B 0b11111111 ausgibst dann sind alle Ports auf Hi Pegel
also leuchten alle LED's. du müsstest auf PORT B 0x00 also 0b00000000
ausgeben damit alle Ports auf null sind. Auserdem ist beim AVR glaub
wenn du einen Pin als Input deklarierst automatisch der Pullup
aktiviert d.h. der Pin ist logisch 1. Dein Taster müsste jetzt also den
Pin auf masse zihen damit der Pinzustand 0 wird.

Marc

Autor: Jochen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leuchten deine Led's bei 1 oder bei 0 ich nehme jetzt mal an bei 1.

ldi r16, 0b11111111
out PORTB, r16

schleife:
in r16    , PIND
out PORTB , r16
rjmp schleife


Ganz einfach bevor deine schleife anfängt gibst du 11111111 an Port B
aus somit leuchten deine leds alle beim start. Die Leds dürften aber
sofort wieder ausgehen.


Hast du deine Led's so angeschlossen, dass sie bei 0 Leuchten, und
deinen Taster so dass wenn er grdrückt ist eine 1 leifert ist es klar,
da der Avr immer folgendes programm durchläuft.

schleife:
Pin D in register 16 laden
Register 16 nach Port B ausgeben.
Sprung zu "schleife"

Du lädst 00000000 in register 16 und gibst es sofort wieder aus, da die
led's 0 Aktiv sind leuchten sie. Wenn du deinen Taster dann drückst
müsste die Led an B.3 ausgehen.


Jochen

Autor: Florian Wolling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das funktioniert leider trotzdem nicht!
Ich habe

ldi r16, 0b11111111
out PORTB, r16

in

ldi r16, 0b00000000
out PORTB, r16

umgeändert.
Wenn ich den Taster betätige, werden die LED's alle etwas dunkler,
mehr nicht!

MFG,
################
Florian Wolling#
################

Autor: Marc Donner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie hast du denn deinen Taster und die LEDs angeschlossen?
und ist PortD als input definiert ? das klingt so als würdest du wenn
du auf den Taster drückst strom ziehen.

Marc

Autor: Florian Wolling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die LED's sind gegen + geschaltet.
Die Taster sind gegen GND geschaltet.

Der Quelltext sieht so aus:

.include "2313def.inc"

ldi r16 , 0xFF
out DDRB, r16

ldi r16 , 0x00
out DDRD, r16

ldi r16, 0b00000000
out PORTB, r16

schleife:
in r16    , PIND
out PORTB , r16
rjmp schleife


MFG,
################
Florian Wolling#
################

Autor: Marc Donner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hast du pull-ups an den Tastern ?

Marc

Autor: Florian Wolling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja!

Autor: Marc Donner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eigentlich müsste das gehen. wenn die LEDs gegen + gehen dann ist doch
0b11111111 richtig. schwingt dein oszillator ? schon mal anderen AVR
probiert?

Marc

Autor: Florian Wolling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich ahbe jetzt den Fehler gefunden! g
Ich habe eine Lötbrücke zwischen GND und den LED's gemacht! g

Danke für Eure Hilfe!

MFG,
################
Florian Wolling#
################

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.