mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Fehlermeldung: overlap detected in .cseg


Autor: freddy0815 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

habe ein problem beim programmieren in AVR Studio.
ich habe 2 programme geschieben. das eine sendet messwerte vom
controller (atmega32) über rs232 an pc (excel). das funktioniert.
das andere ist ne I²C schnittstelle (controller --> sensor).
das funtioniert auch.

jetzt wollte ich beide programme in eines bekommen. habe das rs232 als
"hauptprogramm" genommen und rufe das I2C in diesem auf.

das I2C hab ich in ne *.inc kopiert (wie im anhang zu sehen ist). es
sind dort nur deklarierungen von konstanten (.equ) und unterprogramme
enthalten.

das rs232 prog fängt so an:

.NOLIST
.INCLUDE "D:\m32def.inc"
.INCLUDE "D:\I2C_read_twi_neu1.inc"
.LIST

.cseg
.org $0000
  rjmp main


beim compilieren bringt er mir jetzt in der zeile 'rjmp main' die
fehlermeldung:
'overlap detected in .cseg'

wenn ich die zeile:
".INCLUDE "D:\I2C_read_twi_neu1.inc"
ausblende kommt keine fehlermeldung. ich weiss aber absolut nicht was
der von mir will. bin auch noch kein experte in assembler ;-)

könnt ihr mir weiterhelfen???

wäre sehr dankbar!
freddy0815

Autor: Volkmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tippe mal darauf, daß der I2C-Code schon ins CSEG ab Adresse 0 gelegt
wird. Dann gibt es in dem Main-Part natürlich ein Problem. Wenn ich
mich recht erinnere (C51 ist lange her bei mir), gibt es eine Direktive
RSEG mit der Du Code in ein verschiebbares Segment legen kannst. Dann
sucht der Linker die besten Stellen zusammen. CSEG nur dann, wenn Du an
bestimmte Adressen (wie zB 0) mußt.

Volkmar

Autor: Stefan Kleinwort (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo freddy,

In dieser Datei fängt Dein Code an - und wird ab der Adresse Null (weil
nichts anderes angegeben wurde) im Flash abgelegt:


.INCLUDE "D:\I2C_read_twi_neu1.inc"

Danach setzt Du die Adresse, ab der Code geschrieben werden soll,
erneut auf Null:

.cseg
.org $0000
  rjmp main

Der Code "rjmp main" steht also ab Adresse Null im Flash - und
überschreibt den Code von i2c...neu.inc.

Abhilfe:
Hänge das .inc an den Schluss Deines Assembler-Files.

Viele Grüße, Stefan

Autor: freddy0815 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke! hab .include ganz ans ende gesetzt und s geht jetzt!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.