- 12V Akku mit 280 Ah bauen         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 18 von 18

Thema: Direkter SRAM zugriff (ASM)

  1. #11
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.02.2005
    Alter
    36
    Beiträge
    470
    Anzeige

    E-Bike
    ok das mit von vorne nach hinten ist quatsch, ach von hinten nach vorna, aber das mit dem indireckten zugriff geht immer noch nede:

    LDI r30, lo(addr)
    LDI r31, hi(addr)
    LD r10, Z

    Mein Porg sieht so aus: Alle paar sec wird ein Interupt aufgerufen, dort wir immer eine der 5Bytes ausgelesen und zwar nacheinander, also beim ertsten Int das erste, bei 2. das 2. usw, bis es bei 5. wieder bei 1 anfängt, nur das bekomme ich ned gebacken. Das mit dem indirekten zugriff geht nede, da kommt als fehlermeldung:
    D:\Eigene Dateien\Multiplex.asm(81) : error : Undefined variable referenced

  2. #12
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Wie gesagt: Assembler ist nicht Assembler. Vielleicht hilft ein Blick ins Wiki und in dortige Tutorials? (wenn du schon nicht verrätst, welchen Assembler du verwendest).
    Disclaimer: none. Sue me.

  3. #13
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    53
    Beiträge
    2.236
    mach das so:

    irgendwo in den Anfangsfeierlichkeiten
    Code:
    .equ Meinevariablen = 0x0060
    .def tmp,R16
    Im Dattenblatt nachlesen, ob die Adresse ;0x0060 wirklich auch die erste Adresse ist, die man benutzen darf

    in der reset routine:
    Code:
    ldi XH,HIGH(Meinevariablen)
    ldi XL,LOW(Meinevariablen)
    jetzt hast Du die Adresse 0x0060 in den X Pointer.

    in Deinem Interrupt erstmal prüfen, ob Du bei 0x0066 angekommen bist:
    Code:
    cpi XL,0x0066
    brlo nichtzuruecksetzen
    ldi XH,HIGH(Meinevariablen)
    ldi XH,LOW(Meinevariablen)
    nichtzuruecksetzen:
    ld tmp,X+
    ;mach was mit tmp

    In der ISR SREG Register retten!

    Gruß Sebastian

  4. #14
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    53
    Beiträge
    2.236
    @ Sprinter,
    D:\Eigene Dateien\Multiplex.asm(81) : error : Undefined variable referenced
    Diese Fehlermeldung sieht so aus als ob man Dein Beispiel eingesetzt hätte,
    und "addr" nicht definiert hätte

    Gruß Sebastian

  5. #15
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.02.2005
    Alter
    36
    Beiträge
    470
    Ok werde es mit dem Pointer machen, das scheint zuverlässig, aber sag mal was verbirgt sich darunter:
    In der ISR SREG Register retten!
    Diese Fehlermeldung sieht so aus als ob man Dein Beispiel eingesetzt hätte,
    und "addr" nicht definiert hätte
    hatte es definiert, das war ja ds verwirende

  6. #16
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    53
    Beiträge
    2.236
    aber sag mal was verbirgt sich darunter:
    Hast Du AVRStudio ?

    Wenn ja, schreib mal ein kurzes Programm, wo cp add sub usw. vorkommt,
    dann gehe des Programm im Studio schrittweise durch und schaue Dir den Inhalt vom SREG an !

    Dann bringe im Erfahrung wozu SREG da ist, und dann überlege, was passiert, wenn Dein Programm sich in der Hauptschleife befindet und beim Abarbeiten von einem z.B add Befehl dem ein Branch folgt ,von einem Interrupt abgebrochen, in dem wiederrum irgendwas verglichen oder addiert wird.

    O weh, jetzt verstehe ich selber nicht, was ich getippt hab, aber mach mal mit Studio, es ist besser, wenn Du selber drauf kommst...

    Gruß Sebastian

  7. #17
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.02.2005
    Alter
    36
    Beiträge
    470
    Hast Du AVRStudio ?

    Wenn ja, schreib mal ein kurzes Programm, wo cp add sub usw. vorkommt,
    dann gehe des Programm im Studio schrittweise durch und schaue Dir den Inhalt vom SREG an !

    Dann bringe im Erfahrung wozu SREG da ist, und dann überlege, was passiert, wenn Dein Programm sich in der Hauptschleife befindet und beim Abarbeiten von einem z.B add Befehl dem ein Branch folgt ,von einem Interrupt abgebrochen, in dem wiederrum irgendwas verglichen oder addiert wird.

    O weh, jetzt verstehe ich selber nicht, was ich getippt hab, aber mach mal mit Studio, es ist besser, wenn Du selber drauf kommst...
    Klar hab ich studio, als Atmelfan und Atmelferienjobber ist das ja pflicht , danke für deine Bemühungen, ich denke die richtig komplexen sachen muss ich schon zT selber rausfinde, so nst lerne ich ja nix

    Danke noch mal, mein Prog geht jetzt, macht aber ganz lustige sachen, die ich nicht will!

  8. #18
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    53
    Beiträge
    2.236
    komplexen sachen muss ich schon zT selber rausfinde, so nst lerne ich ja nix
    Da ist wirklich was wahres dran.
    Deswegen sage ich Dir nicht, warum das mit dem SREG so wichtig ist, das kriegst Du schon selber hin...

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

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Solar Speicher und Akkus Tests