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
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
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
danke! hab .include ganz ans ende gesetzt und s geht jetzt!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.