This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

ADS1240 Problem

Hi Guys

I am using serial ADC ADS1240 I have connected DRDY to Port P1.2,Sclk to P1.3,Dout to P1.4,Din to P1.5 of 89s52.

I have initialsed all Registers but the output i am getting as FFh. can any one help what would be the problem. The following is the code

AD_VALUE_00 EQU 30H ; R:30H
AD_VALUE_01 EQU 31H ; R:31H
AD_VALUE_02 EQU 32H ; R:32H

; ADS1240 serial communication definitions
DRDY BIT P1.2
AD_SK BIT P1.3 ; ADS1240 CLOCK PORT
AD_DO BIT P1.4 ; ADS1240 OUTPUT PORT
AD_DI BIT P1.5 ; ADS1240 INPUT PORT

; ADS1240 Register Definitions
SETUP EQU 00h
MUX EQU 01h
ACR EQU 02h
ODAC EQU 03H
DIO EQU 04H
DIR EQU 05H
IOCON EQU 06H
OCR0 EQU 07H
OCR1 EQU 08H
OCR2 EQU 09H
FSR0 EQU 0AH
FSR1 EQU 0BH
FSR2 EQU 0CH
DOR0 EQU 0FH
DOR1 EQU 0EH
DOR2 EQU 0DH


; ADS1240 Commands
RDATA EQU 01h
RDATAC EQU 03H
WREG EQU 50h
RREG EQU 10h
SELFOCAL EQU 0F1h
SELFGCAL EQU 0F2h
SYSOCAL EQU 0F3H
SYSGCAL EQU 0F4H
RST EQU 0FEh



MOV P1,#14H ; INPUT PORT
ACALL SETUP_ADC
MOV A,#RDATAC
ACALL AD_WRITE

MAIN_LOOP:

ACALL ADC_SCAN

MOV A,AD_VALUE_00
MOV 60H,A
LCALL 019BH

MOV A,AD_VALUE_01
MOV 60H,A
LCALL 019BH

MOV A,AD_VALUE_02
MOV 60H,A
LCALL 019BH

SJMP MAIN_LOOP

;******************************************************
;SetupADC ; Routine to setup the ADS1240 ADC
;******************************************************


SETUP_ADC: MOV A,#RST ;Issue reset command
ACALL AD_WRITE

MOV A,#MUX ;Selecting channels
ACALL AD_WRITE

MOV A,#00H ;Selecting channel one
ACALL AD_WRITE

MOV A,#80H ;Selecting Ang Common
ACALL AD_WRITE

MOV A,#ACR ;Setup up Data rate with ACR register
ACALL AD_WRITE


MOV A,#SETUP
ACALL AD_WRITE

MOV A,#00H
ACALL AD_WRITE

MOV A,#SELFGCAL ;Issue self Gain SYSGCAL command. ACALL AD_WRITE
LO: JB DRDY,LO

MOV A,#WREG ;MOVE WRITE REGISTER
ACALL AD_WRITE

MOV A,#SETUP ;ISSUE SETUP REGISTER
ACALL AD_WRITE

MOV A,#07H ;setting PGA to 128
ACALL AD_WRITE

MOV A,#SELFOCAL ;Issue Offset CAL
ACALL AD_WRITE
LO1: JB DRDY,LO1

RET


;******************************************************
; Routine to READ FROM ADS1240 ADC
;******************************************************


ADC_SCAN: ;MOV A,#RDATA
MOV A,#DOR2
ACALL AD_WRITE

ACALL AD_READ
MOV AD_VALUE_02, A

MOV A,#DOR1
ACALL AD_WRITE

ACALL AD_READ
MOV AD_VALUE_01, A

MOV A,#DOR0
ACALL AD_WRITE

ACALL AD_READ
MOV AD_VALUE_00, A
RET


;******************************************************
; Routine to WRITE TO ADS1240 ADC
;******************************************************



AD_WRITE: MOV B,#08
WRITE_NEXT_BIT: CLR AD_SK
RLC A
MOV AD_DI,C
SETB AD_SK
NOP
DJNZ B,WRITE_NEXT_BIT
RET

;******************************************************
; Routine to READ FROM ADS1240 ADC
;******************************************************



AD_READ: MOV B,#08
READ_NEXT_BIT: CLR AD_SK
NOP
MOV C,AD_DO
RLC A
SETB AD_SK
NOP
NOP
DJNZ B,READ_NEXT_BIT
RET

end

0