-
        

Ergebnis 1 bis 8 von 8

Thema: rcall läuft auf Atmega8 nicht

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    10.11.2006
    Beiträge
    78

    rcall läuft auf Atmega8 nicht

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo,

    eine kleine Routine, macht nichts anderes als über einen Adressbus 8 Pins abfragen ("Eingabeport") und dann an einem Ausgabebus ausgeben. Funktioniert einwandfrei - nur nicht, wenn das Anwählen des Eingabeports als Subroutine programmiert ist.

    a) So läufts auf Atiny 2313 und Atmega8:

    ldi Adresse, 1
    out Adressbus,Adresse
    START:
    in Temp, Datenbus_in
    out Magnetbus,Temp
    rjmp START


    b) So läufts auf Atiny 2313, aber nicht auf Atmega8:

    rcall Tastatur
    START:
    in Temp, Datenbus_in
    out Magnetbus,Temp
    rjmp START
    Tastatur:
    ldi Adresse, 1
    out Adressbus,Adresse
    ret

    Ich habe keine Ahnung, wo ich ansetzen muß. Bitte Hilfe!

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    was ist mit stackpointer ?
    Software is like s e x: its better when its free.
    Linus Torvald

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    10.11.2006
    Beiträge
    78
    danke für schnelle Antwort!

    Ich habe eine ungefähre Ahnung, was ein Stackpointer macht, aber nicht mehr. Hatte bisher nur Atiny2313 programmiert, da funktionierten die rcalls ohne weiteren Aufwand. Was muß ich tun?

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    Software is like s e x: its better when its free.
    Linus Torvald

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    10.11.2006
    Beiträge
    78
    super erklärt, verstanden.
    Aber auch das Beispielprogramm läuft auf dem Atmega8 nicht (Atiny2312 schon). Im Datenblatt und Instruction Manual habe ich nichts gefunden. Verstehe nicht wo das Problem ist, siehe "Unterprogramme aufrufen" => "Das schöne daran ist, ablegen der Adresse usw. macht der assembler für uns automatisch, wir brauchen uns nicht darum zu kümmern."
    Vor allem den Unterschied zw. Atiny2313 und Atmega8 nicht. Die Befehle sind doch identisch!

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    Den Stackpointer muß man initialisieren, wenn man mit Funktionsaufrufen
    arbeitet, egal ob m8 oder Tiny.


    Ist das jetzt alles am Programm, oder nur ein Ausschnitt ?
    Poste bitte das ganze Programm

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    10.11.2006
    Beiträge
    78
    Sebastian, das mit dem Initialisieren war es! Tausend Dank für Deine Anleitung!!! Warum die Programme auf dem Atiny2313 trotzdem immer liefen, ich weiß es nicht. Aber das Problem ist nachhaltig gelöst.

    Nochmals vielen, vielen Dank! \/ (Hoffe, das ist das richtige Smeili)

    Evtl. kann ich mich mal mit etwas Relais- oder Hubmagnete-Wissen revanchieren.

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    Sebastian, das mit dem Initialisieren war es!
    Das ist gut, viel Spaß weiterhin beim Programmieren

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

Berechtigungen

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