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!
Das ist schön, daß Du uns absolut gar nichts über verwendeten Controller, Compiler oder gar die Compilereinstellungen verrätst.
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.
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.
meine version ist die kickstartversion von IAR werde es sofort mal testen...
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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.