Forum: Mikrocontroller und Digitale Elektronik Origin adress (16) points backwards in code segment!


von Simon (Gast)


Lesenswert?

Wenn ich die zwei Interupts in der Reihenfolge tausche gibt mir der 
compiler ein Fehler aus, warum macht er das?

.org OVF1addr
        rjmp    timer1_overflow
.org OVF0addr
        rjmp    timer0_overflow

folgendes verwende:

.org OVF0addr
        rjmp    timer0_overflow
.org OVF1addr
        rjmp    timer1_overflow

Beide Timer interupts zusammen Machen mir auch Probleme. Sie
funktionieren irgendwarum nur einzelnd.

+------------------------------------------------------------+
| gavrasm gerd's AVR assembler Version 2.1 (C)2006 by DG4FAC |
+------------------------------------------------------------+
Compiling Source file: empf.asm
-------
Pass:        1
Line: 1
Warning 009: Include defs not necessary, using internal values!
  File: empf.asm, Line: 1
  Source line: .include "m16def.inc"
Line: 9
Error ==> .org OVF1addr
[empf.asm,9] 046: Origin adress (16) points backwards in code segment!
108 lines done.


Danke

von Uhu U. (uhu)


Lesenswert?

Vermutlich hat dieser Assembler gewisse Defizite bei der Montage von 
Codesegmenten und läßt deshalb nur ORG-Anweisungen zu, die auf oder 
hinter das Ende des Codesegmentes zeigen.

von Dieter W. (dds5)


Lesenswert?

Ich schätze mal eher, dass der Assembler es nicht mag wenn die Adresse 
eines "org" niedriger ist als die Adresse des davorstehenden Befehls.

Mit dem Tauschen der Codezeilen werden ja auch die zu den beiden org 
Anweisungen gehörenden Adressen getauscht.

von Uhu U. (uhu)


Lesenswert?

Dieter Werner wrote:
> Ich schätze mal eher, dass der Assembler es nicht mag wenn die Adresse
> eines "org" niedriger ist als die Adresse des davorstehenden Befehls.

Und wodurch unterscheidet sich deine Erkenntnis von dem, was ich eben 
geschrieben habe?

Deutshes Sprach shweres Sprach...

von Dieter W. (dds5)


Lesenswert?

Da bin ich wohl etwas "dezifit" (also nur 1/10 fit).

Für mein Verständnis ist das Ende des Codesegments die höchste belegte 
Adresse und nicht die Adresse der vorangehenden Instruktion.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.