Forum: Mikrocontroller und Digitale Elektronik MSP430F4270 AD16_A


von Deniz S. (ds07-08)


Angehängte Dateien:

Lesenswert?

Hallo

Ich sitze jetzt seit einiger Zeit am MSP430F4270
mit dem ich  vier Kanäle A0-A3 oder zwei kanzle A0-A1
mit exakt 200 Samples pro Kanal
(je nach dem was möglich ist mit OSR_32) mit Hilfe des SD16_A
digitalisieren und später wenn alles läuft, über
Timer uart an den PC versenden möchte.

Mein Problem, und im Forum habe ich auch alles durchgelesen,
und keine Antworten zu meinem Problem gefunden,
ist, das trotz größter Bemühungen das ganze einfach nicht
funktionieren will.

Beim ersten Durchlauf der for-schleife funktioniert das auslesen
und speichern der ersten beiden zwei Kanäle. Beim zweiten Durchlauf
nicht mehr. Wenn ich Vier kanäle durchlaufen lasse funktioniert es
nach dem zweiten Kanal nicht mehr und das beim ersten durchlaufen
der Schleife.

zum besseren Verständnis meines Problems hänge ich den Quellcode
noch mit an.

Vielen lieben Dank im Voraus

Deniz

von Ampfing (Gast)


Lesenswert?

Hi,

ohne den Code im Einzelnen durchgedacht zu haben, Du hast keine while(1) 
in Deinem Programm, so dass Dir der Controller einfach nur durch den 
Speicher durchläuft und Dir das Programm nicht das tut, was es soll.

Wie gesagt, ob es grundsätzlich funktioniert kann ich nicht 
einschätzen...

Viele Grüße

von Deniz S. (ds07-08)


Lesenswert?

das hatte ich davor schon mit der while schleife geschrieben gehabt,
und for(;;) ist gleichbedeutend mit while(1) soweit ich das verstanden 
habe
und leider nicht die Lösung meines Problems, leider.

von Msp 4. (msp430_crew)


Lesenswert?

Hallo Deniz,
ich kenn mich zwar mit deinem MSP nicht so gut aus, aber mir ist 
aufgefallen, dass du nur die allgemeine Interruptfreigabe machst. 
Solltest du nicht noch den ADU Interrupt freigeben?
Gibt es vielleicht noch irgendwelche Interruptflags, die Du löschen 
solltest?

Was macht das Programm denn genau?

Gruß MSP430_Crew

von Deniz (Gast)


Lesenswert?

der Interrupt für die AD-Wandlung erfolgt in

SD16CCTL0 |= SD16IE + SD16SNGL;

wobei SD16IE das interrupt freigabe bit ist

ich habe jetzt allerdings in anderen beispielen von TI ein paar switch 
case
anweisungen abgekupfert und die variablen mit schlüsselwörtern (z.B. 
volatile static...) versehen um so einer wegoptiemierung des MSP´s 
vorzubeugen.

Ob das mit dem wegoptimieren würklich stimmt und wenn ja, warum das so 
geschiet, weiß ich leider nicht aber das gute daran ist das es 
funktioniert

Würde mich freuen, wenn sich das mit dem wegoptimieren noch klären 
würde.

soviel sei allerdings gesagt, es funktioniert jetzt ;-)

Gruß Deniz

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.