Forum: Mikrocontroller und Digitale Elektronik compilerfehlermeldung


von Timo P. (latissimo)


Lesenswert?

Error[e117]: Incompatible runtime models. Module main specifies that 
'__core' must be '430', but module ta_uartx has the value '64kb'


codeauszug aus xyz.s43

          MODULE    ta_uartx
          RTMODEL   "__rt_version", "2"   ; Ensure correct runtime model
          RTMODEL   "__core", "64kb"


die main.c ist eine c-file ohne module(was auch immer das genau ist)
sie bindet noch eine Headerfile ein, wo auch nix von modulen drin 
steckt.

Bitte um Hilfe!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das ist schön, daß Du uns absolut gar nichts über verwendeten 
Controller, Compiler oder gar die Compilereinstellungen verrätst.

von Timo P. (latissimo)


Lesenswert?

IAR Embedded Workbench

MSP430F2274

das projekt ist eine SW-UART von TI vorgegeben. Dort gibt es c-file, 
eine Header und eine .s43 datei, die die Libary für die UART darstellt.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das hier

          RTMODEL   "__core", "64kb"

ist eine Anweisung für eine ältere Version (3.x) des IAR-Compilers als 
die, die Du verwendest (4.x).

Ersetze "64kb" durch "430", und Du solltest Erfolg haben können.

von Timo P. (latissimo)


Lesenswert?

meine version ist die kickstartversion von IAR werde es sofort mal 
testen...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Es gibt nicht "die kickstartversion", sondern je nach Zeitpunkt des 
Herunterladens durchaus ganz unterschiedliche Varianten.

IAR 3.xx hat den CPU-Kern mit 20-Bit-Adressierung (MSP430X) allenfalls 
experimentell unterstützt, damals waren die Varianten für "__core" eben 
64kb und 1mb benannt. Die aktuelle Variante 4.21 unterstützt die 
20-Bit-Adressierung vollständig, und die Bezeichner wurden geändert in 
430 und 430x.
Warum auch immer.

von Christian R. (supachris)


Angehängte Dateien:

Lesenswert?

Hm, also die komische Assembler-Lösung braucht man gar nicht, ist viel 
zu kompliziert. Schau doch mal in die C-Demos der MSP430 Typen ohne 
HW-UART, da ist die Timer-UART als C-File dabei. Ich hängs mal an. Das 
klappt mit allen MSP430.

von Timo P. (latissimo)


Lesenswert?

RXTXData ist ein Puffer sowohl für empfangene Zeichen, als auch für zu 
versendende oder? wirkt halt komisch, dass folgende Funktion 
parameterlos ist:  void TX_Byte (void);

wie versende ich zb. 0x12 ?!?

Code:

RXTXData |= 0x100;               // Add mark stop bit to RXTXData
RXTXData = 0x12 << 1;            // Add space start bit
// Müsste relativ sinnlos sein, da die 0x100 sofort wieder überschrieben 
wird oder???

oder so:

RXTXData |= 0x100;              // Add mark stop bit to RXTXData
RXTXData = 0x12;                // Add space start bit

von Christian R. (supachris)


Lesenswert?

Start und Stopp-Bit usw. macht doch die Sende-Funkltion.

einfach

RXTXData = 'A';
TXByte();

und fertig ist, schon sendet der ein A. Dass der Puffer für beides ist, 
ist normal, denn die Geschichte ist nur Halbduplex.

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.