mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmel Mega8 auf STK 200


Autor: Igor München (nooby)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Servus an alle
ich versuche mit den registern zu arbeiten und so die lampal an zu 
steuern
also im end effekt möchte ich überprüfen ob der Stackpointer richtig 
arbeitet

das programm soll folgendes tun:
wenn ich die taste 7 drücke soll er es im r30 ablegen und wenn ich die
taste 0 drücke im r28
die led 3 soll nur dann leuchten, wenn beide gleichzeitig gedrükt sind.

im AVR Studio 4.14 hab ich es geschrieben, assembliert und simuliert
es funktioniert wie ich es haben will
doch der praxis test widerlegt es
ich drücke taste 7 und led 3 leuchtet ich drücke taste 0 und led 3 
leuchtet
soll sollte es nicht sein!

könnt ihr mir bitte helfen???
ich kann meinen fehler nicht finden  :-(

Autor: Der Teufel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aktiviere einfach die int. pullups von PortD.

Gruß

Autor: Igor München (nooby)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
danke für den Tip
hab ich gemacht funktionirt immer noch nicht
schade

Autor: Der Teufel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe mir den Code jetzt nicht so genau angeschaut.
Aber Du weißt, daß die LEDs low-aktiv sind.
Also eine LED leuchtet wenn der entsprechende Ausgangspin low ist.

Autor: Der Teufel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei dem STK200 auch noch die LED-Jumper setzen.

Autor: Igor München (nooby)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sind gesetzt,
sie leuchten schon aber nicht wie es sein sollte

Autor: Igor München (nooby)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja schon

Autor: Igor München (nooby)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So endlich
habs hin gekriegt
danke für die hilfe
cao
bis nächstes mal

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

dann aber eher zufällig?

    tst r28
    breq led_a
    tst r28
    brne  wow

    tst r30
    breq led_a
    tst r30
    brne   wow2


hier springst Du nach wow bzw. wow2

wow:  tst r30
    breq led_a
    rcall led

dort rufst Du als Subroutine led auf

led:

    sbi  portb,1
    pop r28
    pop r30
    rjmp haupt

led holr 2 Register vom Stack, die nie gesichert wurden, Du holst also 
die Rückspringadresse vom Stack, die mit rcall led dort abgelegt wurde.

Dann springst Du nach haupt zurück.

Ist das so Absicht, um Stackspielereien zu machen?

Anmerkung:
wozu gibst Du die Interrupts frei, wenn Du keine benutzt?

    tst r28
    breq led_a
    tst r28
    brne  wow

Wozu hier 2x tst r28?
Die Srünge ändern die Flags nicht,
    tst r28
    breq led_a
    brne  wow

macht also genau das Gleiche.

    tst r28
    breq led_a
    rjmp  wow

macht auch das Gleiche, hat aber den großen Vorteil, daß man nicht einem 
Programmverlauf danach zu folgen versucht, den es da garnicht geben 
kann.

Spätestens wenn man nach ein paar Monaten in sowas reinschaut, wundert 
man sich darüber...

Gruß aus Berlin
Michael

Autor: Igor München (nooby)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also hab mich doch geirrt
schade
ich probiers weiter aus

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.