Forum: Mikrocontroller und Digitale Elektronik [AVRasm]Stack oder Interruptfehler


von Fabian S. (fabian727)


Angehängte Dateien:

Lesenswert?

moin @ all,

ich bekomme seitdem ich mein CompareMatch Interrupt von 0x000A 
korrigiert habe zu: 0x000D folgende Fehlermeldung:
******(23): error: Overlap in .cseg: addr=0xd conflicts with 0xd:0xe

Wo liegt der Fehler? Bzw. was bedeutet der Fehler?
Zeile 23 ist die Abfrage direkt nach der Initialisierung:
cpi r16, 0x01      //Ist DDRB schon konfiguriert?

Vielen Dank schon mal für sämtliche antworten

fabi

von Stefan E. (sternst)


Lesenswert?

1
.org 0x000D            //Clock-Match-A-Interrupt
2
  rjmp matcha
3
.org 0x000B            //External Interrupt (PINB,7)
4
  rjmp extpin
5
...
6
in r16, DDRB
7
cpi r16, 0x01
Quizfrage: auf welchen Adressen liegen jetzt die Befehle 'in' und 'cpi'?

von Fabian S. (fabian727)


Lesenswert?

anscheinend hab ich mich noch zu wenig mit stack beschäftigt.

Wo kann ich das nachlesen. bzw. kannst du mir das erklären?
Ich find gerade nix passendes im tutorial bzw. hier im forum

von Fabian S. (fabian727)


Lesenswert?

ok, wenn man 0x000D hinter 0x000B schreibt, funktionierts wieder.
Einigermasen logisch, wegen der Größe der Zahlen, die dahinter stehen.
Aber mehr hab ich leider auch noch nicht davon verstanden.

von Stefan E. (sternst)


Lesenswert?

Fabian Scheidig schrieb:
> Aber mehr hab ich leider auch noch nicht davon verstanden.

Die Befehle werden nacheinander im Speicher angeordnet. Dieses streng 
monotone Nacheinander wird mit dem .org beeinflusst:
1
.org 0x000D    der nächste Befehl kommt auf Adresse 000D
2
  rjmp matcha  dieser nämlich, der nächste dann auf 000E
3
.org 0x000B    aber halt, wir machen nicht mit 000E weiter, sondern mit 000B
4
  rjmp extpin  dieser also auf 000B, der nächste auf 000C
5
...
6
in r16, DDRB   dieser also auf 000C, der nächste auf 000D 
7
cpi r16, 0x01  dieser also auf 000D, der nächste auf 000E
Und welcher soll jetzt auf 000D, 'rjmp matcha' oder 'cpi r16, 0x01'?

von Fabian S. (fabian727)


Lesenswert?

danke für die super Erklärung, warum findet man sowas nicht im Tutorial?

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.