Forum: Mikrocontroller und Digitale Elektronik MSP430F2013 ADC einlesen


von Niko H. (techniggo)


Angehängte Dateien:

Lesenswert?

Hi,
ich bin gerade dabei den MSP430F2013 zu programmieren. Leider habe ich 
bislang kaum Erfahrung im Programmieren, also habt bitte Nachsicht :)

Ich möchte ein Poti an ADC_0 (P1.0 und P1.1) einlesen und das Ergebnis 
dann per SPI versenden. Die SPI Schnittstelle habe ich mitlerweile 
hinbekommen, aber ich bekomme den ADC0 nicht eingelesen. Es wird 
angeblich immer der Wert 0xFFFC eingelesen, egal in welcher Stellung das 
Poti ist.

Meine Pinbelegung SPI: SPI=SDO, SDI, SCLK, P1.2 als SS - ADC: P1.0 = 
Poti(Regler), P1.1=Masse

Achja, die Spannung am A0+ ändert sich auch wenn ich an meinem 5k Poti 
drehe, das habe ich gemessen.

Mein Code ist im Anhang.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Niko Tech schrieb:
> aber ich bekomme den ADC0 nicht eingelesen

Hast Du Dir mal die Quelltextbeispiele von TI angesehen, die es für den 
'F20xx und dessen SD16 gibt?

http://www.ti.com/lit/zip/slac080

hieraus die drei Dateien

msp430x20x3_sd16A_01.c
msp430x20x3_sd16A_02.c
msp430x20x3_sd16A_03.c


In Deinem Code fällt mir auf, daß Du bei der Initialisierung von 
Peripherieregistern gerne den |= -Operator verwendest:

>   P1OUT |=  BIT2;               //SPI SS
>   P1DIR |=  BIT2;               //SPI SS

Hast Du Dir bei allen diesen Zuweisungen angesehen, welchen Wert das 
Register nach POR hat? Du kannst nicht davon ausgehen, daß darin alle 
Bits auf 0 gesetzt sind, sondern musst das im "family user's guide" 
für jedes einzelne Register nachsehen.

von Niko H. (techniggo)


Lesenswert?

Hi Rufus,

Nein ich hab mir die Register nicht angesehen. Danke für den Hinweis... 
Hatte mal gelernt, dass man Register immer mit |= bzw. &=~ setzen 
sollte, um nicht bits zu setzen/löschen die man gar nicht will... Aber 
in der Initialisierung macht das natürlich Sinn :)

Und ja, ich hab mir die TI Beispiele angeschaut, und auch hier im Forum 
alles abgegrast. Ich forsche nun schon seit ca. einer Woche woran es 
liegen kann und finde einfach keine Lösung :(

----

Habe nun auch in der Initialisierung alle Register mit = gesetzt, das 
Ergebnis ändert sich aber nicht.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Dann vergleiche doch mal Deinen Code mit dem, was die TI-Beispiele 
machen.

Was machst Du anders?

von Niko H. (techniggo)


Lesenswert?

Hab ich gemacht, weiß leider immernoch nicht was falsch war, aber nun 
tuts auf einmal... Habe eigentlich nichts geändert, sehr komisch..
Trotzdem danke!

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.