; Gestione di un AD7715 ( A to D Converter, Sigma-delta, 16 Bit ) Analog Device per 68HC908GP32 ; Pin Out di interconnessione per GP32 S-DIL 42 e AD7715 16DIL ; GP32 AD7715 ; 36 PA1 4 CS ; 6 Reset 5 Reset ; 32 PB7 12 DRDY ; 18 PD3/SCK 1 SCK ; 16 PD1/MISO 13 DOUT ; 17 PD2/MOSI 14 DIN ; ; AD7715 non misura segnali in input inferiori a 600 mV se programmato con il buffer attivo ; Si puņ evitare l'inconveniente ponendo a -600 mV il pin 11 AnGND ( 1N4148 in Pull-down diretto verso -Vss rispetto a GND ) $include 'gp32regs.inc' COMMAND EQU $50 ;COMANDO DA ESEGUIRE ADCHI EQU $51 ;VALORE BINARIO LETTURA ADC BYTE H ADCLOW EQU $52 ;VALORE BINARIO LETTURA ADC BYTE L DELAY EQU $53 ;CONTATORE RITARDO PER SPI SENDATA * PRESET AD7715 * GAIN= 1 * AUTOCAL * CLK HI * 50Hz * UNIPOLAR * BUFFER= OFF * NO FSYNC ADCPRESET LDA #$FF ADCPA STA $FFFF ;watch dog refresh BRSET 7,PORTB,ADCPA ;WAIT UNTIL DRDY = LOW MOV #%00010000,COMMAND JSR SEND LDA SPSCR LDA SPDR LDA #$FF ADCPL STA $FFFF BRSET 7,PORTB,ADCPL ;WAIT UNTIL DRDY = LOW MOV #%01100110,COMMAND ;SET UP REGISTER JSR SEND LDA SPSCR LDA SPDR LDA #$FF ADCPM STA $FFFF BRSET 7,PORTB,ADCPM ;WAIT UNTIL DRDY = LOW ********************************************************** * SUB INVIO DATO IN SERIALE SINCRONA ( DATO IN COMMAND ) * ********************************************************** SEND BRCLR 3,SPSCR,SEND MOV COMMAND,SPDR MOV #$FF,DELAY ;RITARDO SENDA DEC DELAY BNE SENDA RTS ************************************************* * SUB LETTURA ADC 16 BIT AD7715 * * RESTITUISCE SU ADCHI E ADCLOW IL VALORE LETTO * ************************************************* READC LDA $FF RIB STA $FFFF BRSET 7,PORTB,RIB ;WAIT UNTIL DRDY = LOW LDA #%00111000 ;PERFORM READ DATA STA COMMAND JSR SEND RIC STA $FFFF BRSET 7,PORTB,RIC ;WAIT UNTIL DRDY = LOW LDA SPSCR LDA SPDR CLR COMMAND JSR SEND LDA SPSCR LDA SPDR STA ADCHI JSR SEND LDA SPSCR LDA SPDR STA ADCLOW RTS