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
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".
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.
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).
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
> ADC12CTL0 |= ADC12SC; // Start sampling/conversion > akku=ADC12MEM4; Du solltest auf das Ergebnis warten (ADC12IFG4).
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?
wolle g. schrieb: > Kannst Du mir die dafür notwendige(n) Zeile(n) mal einbauen?
1 | while (!(ADC12IFG & ADC12IFG4)) |
2 | ;
|
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 |
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.