Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Interrupt in ASM Kategorie: Programmierung Assembler (von Michael - 20.03.2009 8:04)
Als Antwort auf Re: Interrupt in ASM von PeterS - 16.01.2009 11:56
Ich nutze:
C-Control Pro Mega32, C-Control Pro Mega128
> > > > > > Hallo Peter;
> > > > > >
> > > > > > wird dies in naher Zukunft funktionieren ?!
> > > > >
> > > > > Ich habe deswegen schon schlaflose Nächte. :-) Nicht exakt so, aber so ähnlich wird es gehen. Kann aber
> > > > > sein, das ich es noch kurz nach dem Release nachschiebe. Also von jetzt an ca. 5-6 Wochen.
> > > > > Die Interruptroutinen werden dann den Assembler Code aufrufen, also ein "ret" und kein "reti" am Ende.
> > > > >
> > > > > Gruss Peter
> > > >
> > > > Hallo Peter,
> > > > verstehe ich das richtig: Der  Interrupt unterbricht nicht die Ausführung des Interpreters sondern
> > > > der Interpreter Pollt weiterhin den Interrupt und ruft dann eine Assemblerroutine auf? Falls es so wäre
> > > > würden weiterhin Echtzeitanforderungen nicht realisierbar sein
> > >
> > > Nein das verstehst Du nicht richtig. Die Interruptroutine springt dann direkt in die Assemblerroutine und
> > > bypassed den Interpreter. Nur wie ich die Adresse der Assemblerroutine sauber in einen function pointer
> > > in der Interruptroutine gebracht bekomme, lässt die Anzahl meiner grauen Haare weiter steigen.
> > >
> > > Gruss Peter
> >
> > Hallo Peter,
> > ich vermute mal, das du für den Assembler Teil Speicherbereiche festlegts für Code und Daten. Dieser
> > kollidert nicht mit deinem Interpreter / Bytecode Bereich. Somit steht doch diese Einsprungadresse fest
> > und könnte mit Irq_SetVect(...) in das Interruptregister bzw. die Sprungtabelle eingetragen werden.
> > So habe ich es bei einem 18186 Projekt gemacht ich kann nur leider nicht sagen, ob es beim ATMEL
> > auch so geht.
> > Viele Grü�e
> > Jo
>
> Der Bytecode Compiler übersetzt zuerst das Hauptprogramm. Anhand der der Länge des Bytecodes
> wird die Org Adresse des Assembler Codes ermittelt. Der Bytecode Compiler erstellt eine Textdatei
> mit dem Namen und Adressen der Assembleraufrufe im Bytecode. Der Assembler erstellt neben
> dem Object auch eine mapping Datei mit den Adressen der generierten Assemblerroutinen. Die mapping
> Datei und die Textdatei mit Namen und Adressen werden eingelesen und die IDE patcht in einer Art
> "Linker" die Assembler Adressen in den Bytecode. Alles sehr dynamisch.
>
> Es gibt nur leider noch keinen Mechanismus um die Adressen der Assemblerroutinen übergeben zu
> können. Dafür mu� ich noch den "Linker" in der IDE kräftig aufbohren.
>
> Gruss Peter
>
> >
> >
> > >
> > > >
> > > > Viele Grü�e
> > > >
> > > > Jo
> > > >
> > > >
> > > > >
> > > > > >
> > > > > >
> > > > > > cc:
> > > > > >
> > > > > > void start $asm("start")(void);
> > > > > >
> > > > > > void main(void)
> > > > > > {
> > > > > >  Irq_SetVect(INT_1,start);
> > > > > > }
> > > > > >
> > > > > >
> > > > > > asm:
> > > > > >
> > > > > > Start:  ;Irgendwas            
> > > > > >
> > > > > >         reti
> > > > > >
> > > > > >
> > > > > > GruÃ? Michael
> > > > > >

Morgen Peter,

ich wollte nur mal den IRQ Aufruf in die Erinnerung zurückrufen !!!!????

Schönen Tag noch
Michael


    Antwort schreiben


Antworten:

Re: Interrupt in ASM (von Heiko - 16.11.2009 11:32)
    Re: Interrupt in ASM (von Andy - 11.12.2009 13:22)
        Re: Interrupt in ASM (von PeterS - 17.12.2009 11:46)