Forum: Mikrocontroller und Digitale Elektronik Bedeutung?: Error: cannot load from …..


von Wolle G. (wolleg)


Angehängte Dateien:

Lesenswert?

Mittels Code Composer  Studio (CCS) beschäftige ich mich aktuell mit 
einem MSP430F5435. Z.Zt. geht es um die Spannungsmessung mittels ADC12.
Bisher hatte ich zumeist MSP430F16xx dazu erfolgreich verwendet.
Da offensichtlich die neuere Familie etwas anders tickt und ich auch das 
Programmierprogramm (mspgcc nach CCS) gewechselt habe, gibt es Probleme. 
(hier keine Spannungswertausgabe)
Meine Vorgehensweise zur Fehlersuche:
a) Haltepunkt in Zeile  33 (P7OUT |= BIT6;   // P7.6 = 0 LED AUS) 
gesetzt
b) mit F11 Programm in MSP430F5435 übertragen
c) mit F8 gestartet
Das Programm läuft bis zum Haltepunkt.
Wenn man jetzt mit dem Mauszeiger z.B über ADC12MEM4 geht, dann kommt:
Error: connot load  from non-primitive lacation.
Was bedeutet diese Fehlermeldung konkret und wie wäre die richtige 
Formulierung des Programms.
Evtl. muss auch noch etwas eingestellt werden??
Im angeführten Programm funktioniert nur die Darstellung der Kommazahl 
und der Version auf der Flüssigkristallanzeige.
Hoffentlich habe ich mich verständlich ausgedrückt.
Programm im Anhang

: Bearbeitet durch User
von pegel (Gast)


Lesenswert?

Moin,
nur mal so aus STM32 Sicht, muss nicht auch bei CCS eine Variable auf 
volatile gesetzt werden wenn sie innerhalb und ausserhalb vom Int 
genutzt wird?
In diesem Fall wären das "akku" und "zab".

von pegel (Gast)


Lesenswert?

wolle g. schrieb:
> die neuere Familie etwas anders tickt

Sollte es wirklich so etwas sein?

https://forum.43oh.com/topic/4472-ccs-and-msp430f541xa-issues-solved/?tab=comments#comment-41010

Der WDT funkt dort zu schnell dazwischen.

von Clemens L. (c_l)


Lesenswert?

wolle g. schrieb:
> Error: connot load  from non-primitive lacation.

Anscheinend will er nur aus 'echtem' Speicher und nicht aus einem 
Register lesen.

> ADC12 ... keine Spannungswertausgabe

Der ADC hat 16 Eingänge und 16 Ausgänge, die sind aber komplett 
unabhängig.

Du hast korrekt das INCH-Feld gesetzt, aber die Doku sagt:
> 28.2.7.1 Single-Channel Single-Conversion Mode
>
> A single channel is sampled and converted once. The ADC result is written
> to the ADC12MEMx defined by the CSTARTADDx bits.

Und CSTARTADD ist 0, also landet der Wert in MEM0 (und MCTL0.INCH ist 
noch 0, also von A0 gelesen).

von Wolle G. (wolleg)


Angehängte Dateien:

Lesenswert?

Leider noch kein Erfolg .
Die Startadresse habe ich eingetragen bei ADC12CTL1.
Ich habe festgestellt, dass die Fehlermeldung aktuell bei

ADC12CTL0
ADC12CTL1
ADC12IE ?
ADC12MCTL4
ADC12MEM4
kommt.

Ich denke, dass nach über 10 Jahren bestimmt jemand mit diesen o.ä. µC 
die AD-Wandler zum Laufen gebracht hat und dass dafür ein 
Programmschnipsel existiert.
Im Anhang ein "neues" Programmteil für ADC12

von Clemens L. (c_l)


Lesenswert?

>     ADC12CTL0 |= ADC12SC;        // Start sampling/conversion
>     akku=ADC12MEM4;

Du solltest auf das Ergebnis warten (ADC12IFG4).

von Wolle G. (wolleg)


Lesenswert?

Clemens L. schrieb:
> Du solltest auf das Ergebnis warten (ADC12IFG4).

Was denkst Du, was ich mache? Ich warte, warte, warte ...
Spass beiseite
Kannst Du mir die dafür notwendige(n) Zeile(n) mal einbauen?

von Clemens L. (c_l)


Lesenswert?

wolle g. schrieb:
> Kannst Du mir die dafür notwendige(n) Zeile(n) mal einbauen?
1
while (!(ADC12IFG & ADC12IFG4))
2
  ;

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Du wirst diese Register nicht mit dem Debugger ansehen können. Das ist 
die Quelle der Fehlermeldung, die hat nichts mit dem Programm selbst zu 
tun.


Programmbeispiele, wie man auf den verschiedenen MSP430-Varianten mit 
der jeweiligen Peripherie umgeht, gibt es von TI -- passend zur 
jeweiligen Familie.

Code, der für die Peripherie des 'F1611 vorgesehen ist, funktioniert 
nicht ohne größere Änderungen mit der Peripherie neuerer 
MSP430-Varianten, Du solltest ohne viel Erfahrung gar nicht erst 
versuchen, solchen Code zu portieren.

Sieh Dir http://www.ti.com/lit/sw/slac166x/slac166x.zip an, das sind die 
passenden Codebeispiele für Deinen 'F5435.

Darin enthalten sind acht Beispiele, die sich mit dem ADC beschäftigen:
1
msp430x54x_adc12_01.c                ADC12, Sample A0, Set P1.0 if A0 > 0.5*AVcc
2
msp430x54x_adc12_02.c                ADC12, Using the Internal Reference
3
msp430x54x_adc12_05.c                ADC12, Using an External Reference
4
msp430x54x_adc12_06.c                ADC12, Repeated Sequence of Conversions
5
msp430x54x_adc12_07.c                ADC12, Repeated Single Channel Conversions
6
msp430x54x_adc12_08.c                ADC12, Using A8 and A9 Ext Channels for Conversion
7
msp430x54x_adc12_09.c                ADC12, Sequence of Conversions (non-repeated)
8
msp430x54x_adc12_10.c                ADC12, Sample A10 Temp and Convert to oC and oF

von Wolle G. (wolleg)


Angehängte Dateien:

Lesenswert?

Vielen Dank. Erste Erfolge haben sich eingestellt.
Aus meiner jetzigen Sicht gibt es bei dem AD-Wandler in erster Näherung 
wenige Unterschiede zum MSP430F1611.
Jetzt läuft es bei mir bei zwar noch nicht als ADC12 ISR, aber ich kann 
mit dem MSP430F5435 Spannungen messen.
Wer will, kann sich mein Programmschnipsel ansehen.

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.