www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430F4270 AD16_A


Autor: Deniz Saydan (ds07-08)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Ampfing (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Deniz Saydan (ds07-08)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Msp 430_crew (msp430_crew)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Deniz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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.