www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik slit10: constant out of range


Autor: Christopher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo liebe Forenmitglieder.

Ich bin relativ neu im Bereich der uC Programmierung und habe seit 
einigen Tagen eine lästige Fehlermeldung beim compilieren meines Codes.

System:
uC PIC24FJ256GA108
Programmierumgebung: MPLAB Microchips v8.46
Compilier: Hi-Tech C compilier

Nun zu meinem Problem:

Ich habe einen compilier fähigen Code der schon eine bestimmte Anzahl 
von float/double Variablen enthält. Definiere ich nun eine neue 
float/double Variable (sosHP) wird folgender Fehler ausgeworfen:
X:\'projectname'\mess.c: 835: (1172) slit10 constant out of range

(zwischen der Zeilenangabe 835 und der Definition der neuen Variable 
gibt es keine Verbindung)

Die neu definierte Variable wird noch nicht im Code verwendet. 
Komentiere ich nun eine bestehende float/double Variable aus und lasse 
die neu hinzugefügte float/double Variable unverändert, lässt sich der 
Code problemlos compilieren.
1- double sosHP[2][6]={{1.0,-2.0,1.0,1.0,-1.9681033113,0.9690749309},{1.0,-1.0,0.0,1.0,-0.9690674172,0.0}};
//double sosHP[2][6]={0};  //= gleiche Fehlermeldung wie in Zeile 1 (nur Zeilenangabe anders)
2- float gainHP[3]={0.0008413441,1.0,1151.8131864772};
3- double accDataHP[3]={0};
4- double accDataHP1[3]={0};

Ich persönlich vermute ein Speicherproblem:
Das Software Tool MPLAB wirft nach jedem Compiliervorgang ein Summary 
aus. Aus diesem kann ich den benötigten Datenspeicher ablesen. Dieser 
liegt bei mir, bei 7.1% des verfügbaren. Das würde meine Theorie wieder 
über den Haufen werfen.
Summary:
    Program space        used  1C99h (  7321) of 155FCh words   (  8.4%)
    Data space           used   48Dh (  1165) of  4000h bytes   (  7.1%)
    Mapped data          used   560h (  1376) of  8000h bytes   (  4.2%)
    Interrupt Vectors    used    2Eh (    46) of    7Dh words   ( 36.8%)
    Alternative Vectors  used    2Eh (    46) of    80h words   ( 35.9%)
    Config bits          used     0h (     0) of     4h words   (  0.0%)

Hat jemand eine Idee? Hat jemand diesen Fehler schon einmal gehabt? Bin 
über jedes Feedback erfreut.

Mit besten Grüßen
Christopher

Autor: Dieter Werner (dds5)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das beanstandete "slit10" kommt nur in diesen beiden (Assembler) 
Befehlen vor.

MOV [Ws+Slit10],Wnd    Move [Ws + signed 10-bit offset] to Wnd
MOV Wns,[Wd+Slit10]    Move Wns to [Wd + signed 10-bit offset]

Der Compiler benutzt also ganz offensichtlich Adressierung mit Offset 
und dieser (Offset) reicht bei größerem RAM Speicherbereich nicht mehr 
weit genug.

Ich habe keine Erfahrung mit Hi-Tech aber vielleicht hilft die Änderung 
des RAM-Speichermodells.

Autor: Christopher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.
Vielen Dank für deine Anwort. Ich habe diese beiden Befehle auch schon 
im Datasheet von microchips gefunden konnte aber die Bedeutung nicht 
verstehen.

Hab mich jetzt ein bischen in die Themaik bezüglich physischer und 
physikalischer Adresse eingelesen. Aber heißt das, dass ich "in meinem 
Code" die Zuweisung des RAM Speichers ändern muss oder bei den 
"Systemeinstellung" meines Softwareprogramms MPLAB oder meiner VM ?

Vielen Dank für deine Hilfe.

Mfg
Christopher

Autor: Dieter Werner (dds5)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Je nach Größe des auf dem Ziel-System verfügbaren Speichers gibt es bei 
vielen Compilern verschiedene Speichermodelle: small, medium, large und 
huge.

Diese Auswahl ist getrennt für code und data memory möglich.

Der Compiler bwnutzt dann die effizienteste Adressierungsart um den 
Maschinencode zu erstellen.

Autor: Christopher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aha. Habe das Speichermodell von MPLAB gefunden und auf Large (24bit 
Wortbreite und maximal 4Mbyte Speicher) umgestellt. Leider hat sich an 
der Fehlermeldung nichts geändert. Trotzdem Vielen Dank für die Hilfe.

Mit besten Grüßen

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.