Forum: Mikrocontroller und Digitale Elektronik MSP430 ADC Channal6


von eva (Gast)


Lesenswert?

hallo Zusammen,
kann jemand mir sagen was ich hier falsch mache.
der ADC bleibt in testIFG hängen.

#include "msp430x26x.h"
;----------------------------------------------------------------------- 
--------
            RSEG    CSTACK                  ; Define stack segment
;----------------------------------------------------------------------- 
--------
            RSEG    CODE                    ; Assemble to Flash memory
;----------------------------------------------------------------------- 
--------
RESET       mov.w   #SFE(CSTACK),SP         ; Initialize stackpointer
StopWDT     mov.w   #WDTPW+WDTHOLD,&WDTCTL  ; Stop watchdog
            bis.b   #40h,&P6SEL             ; Enable A/D channel A6
                                            ;
SetupADC12  mov.w   #REFON+REF2_5V+ADC12ON+SHT0_2,&ADC12CTL0
                                            ; turn on 2.5V ref, set samp 
time
            mov.w   #SHP,&ADC12CTL1         ; Use sampling timer
            mov.b   #SREF_1,&ADC12MCTL6     ; Vr+=Vref+
                                            ;
            mov.w   #03600h,R15             ; Delay for needed ref 
start-up.
L$1         dec.w   R15                     ; See datasheet for details.
            jnz     L$1                     ;
                                            ;
            bis.w   #ENC,&ADC12CTL0         ; Enable conversions
                                            ;
Mainloop    bis.w   #ADC12SC,&ADC12CTL0     ; Start conversions
testIFG     bit.w   #40h,&ADC12IFG          ; Conversion done?
            jz      testIFG                 ; No, test again
            mov.w   &ADC12MEM6, R5          ; Move result
            jmp     Mainloop                ; SET BREAKPOINT HERE
                                            ;
;----------------------------------------------------------------------- 
--------
            COMMON  INTVEC                  ; Interrupt Vectors
;----------------------------------------------------------------------- 
--------
            ORG     RESET_VECTOR            ; POR, ext. Reset
            DW      RESET
            END

von Clemens L. (c_l)


Lesenswert?

Du hättest uns verraten können, welchen Chip du benutzt, welches 
Beispielprogramm du kopiert hast, und welche Änderungen du daran 
vorgenommen hast.

Das Problem ist, dass ADC-Eingänge und ADC-Ergebnis-Register unabhängig 
sind. Du kannst weiterhin ADC12MEM0 benutzen, musst aber die INCHx-Bits 
korrekt setzen.
Siehe Abschnitte 23.2.5 und 23.3.4 des User's Guide.

von eva (Gast)


Lesenswert?

Hallo,
vielen Dank für deine Antwort Clemens.
ich habe alle stellen wo A0 gefragt wird umgeändert auf A6

#01h,&P6SEL  <-> #40h,&P6SEL
mov.b   #SREF_1,&ADC12MCTL6 <->mov.b   #SREF_1,&ADC12MCTL0
bit.w   #01h,&ADC12IFG  <-> bit.w   #40h,&ADC12IFG
mov.w   &ADC12MEM0, R5  <->  mov.w   &ADC12MEM6, R5

der Beispiel war von MSP430x261x Demo - ADC12, von  B. Nisarga

Ship ist MSP430F24x
Gruß

von eva (Gast)


Lesenswert?

Hallo
ich habe es vergessen zusagen,
INCH_x habe ich den wert 6 gegeben.

gruß

von Clemens L. (c_l)


Lesenswert?

eva schrieb:
> INCH_x habe ich den wert 6 gegeben.

Nicht in dem Code, den du uns gezeigt hast.

Und wenn du darauf bestehst, ADC12MEM6 zu benutzen, musst du mindestens 
noch CSTARTADDx setzen.

von eva (Gast)


Lesenswert?

Danke Clemens
du bist ein Schatz, CSTARTADDx war mein Problem
Gruß

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.