hallo iedereen ik ben bezig met een 16f690 te programmeren. hierbij wil k gebruik maken van de adc. nu heb ik hier vier kanalen voor gemaakt. maar bij het vierde kanaal geeft hij continu 5volt. terwijl dit niet op de pin is aangesloten. (al haal ik die pin los), wat zou hiervan de fout zijn? ook heb ik het ansel register aangepast.

bij voorbaat dank.

Het is al opgelost, bedankt!!

code:


#include <p16F690.inc>
	__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)

	cblock	0x20
delay
delay1
delay2
	endc
	
	org 0
Start
	bsf	STATUS,RP0	; selecteer Register Pagina 1
	bsf	STATUS,RP1	; selecteer Register Pagina 1
	movlw	0xFF
	movwf	TRISA		; maak van poort a inputs

    bcf TRISA,4
	movlw	0xE0		; 
	movwf	TRISB		; maak van poort b inputs behalve PORTb,4
	clrf	TRISC		; maak van poort c alles uitgangen
	movlw	0x10		; deel de A-D klok door 8
	movwf	ADCON1		; laad in A-D register
	bcf	STATUS,RP1	; selecteer Register Pagina 1
	bcf	STATUS,RP0	; ga terug naar Pagina 0


	bsf	STATUS,RP1	
	movlw	0x07		; maak alle ingangen aaloog behalve Poort A bit 0 (poort 1) 
	movwf	ANSEL
	movlw	0x04		; maak alle ingangen aaloog behalve Poort A bit 0 (poort 1) 
	movwf	ANSELH
	bcf	STATUS,RP1
	

	
MainLoop

	decfsz delay
  	goto   MainLoop
   	movlw	0x80		;10000000 binair
	movwf	ADCON0		;
    movlw	0x00
	movwf PORTC
	goto checkport

; nog te doen
; data op uitgangen zetten (8 bits breed)
; een uitgang maken voor status

	
;--------------------------------------------------------------------------------------------------
met_1	; meting sensor druk 1
	bcf ADCON0,7	; kies voor last segnificant bit
	bsf ADCON0,ADON		;zet analoog converter aan

	nop			; wacht even totdat de ad converter opgestart is
	nop			; wacht 1uS
	nop			; wacht 1uS
	nop			; wacht 1uS
	nop			; wacht 1uS
	nop			; wacht 1uS
	nop			; wacht 1uS
	bsf	ADCON0,GO	; start uitlezing
	btfsc	ADCON0,GO	; als bit GO van ADCONO 0 is ga verder anders w8 tot uitlezing klaar is.
	goto	$-1
	movf	ADRESH,w	; kopieer uitlezing naar werkregister.
	movwf	PORTC		; kopieer uitlezig naar poort c
	bsf		PORTA,4
ontv1
	btfss	PORTA,3		; wacht op ontvangen
	goto	ontv1		; gat terug na afvragen
	bcf		PORTA,4		; clear bit  zenden
	bcf ADCON0,CHS0		; claer keuze poorten
	bcf ADCON0,CHS1
	bcf ADCON0,CHS2
	bcf ADCON0,CHS3
	goto	MainLoop

;---------------------------------------------------------------------------------------------------
met_2	; meting sensor druk 2
	bcf ADCON0,7
	bsf ADCON0,CHS0
	bsf ADCON0,ADON
	nop			; wacht even totdat de ad converter opgestart is
	nop			; wacht 1uS
	nop			; wacht 1uS
	nop			; wacht 1uS
	nop			; wacht 1uS
	nop			; wacht 1uS
	nop			; wacht 1uS
	bsf	ADCON0,GO	; start uitlezing
	btfsc	ADCON0,GO	; als bit GO van ADCONO 1 ga verder anders w8 tot uitlezing klaar is.
	goto	$-1
	movf	ADRESH,w	; kpieer uitlezing naar werkregister.
	movwf	PORTC		; kopieer uitlezig naar poort c

	; kopieer de uitlezing naar port c.
	; w8 op atwoord
	; w8 op instructie
	bsf		PORTA,4
ontv2
	btfss	PORTA,3		; wacht op ontvangen	(als hij nul is)
	goto	ontv2		; ga terug na afvragen
	bcf		PORTA,4		; clear bit  zenden
	bcf ADCON0,CHS0		; claer keuze poorten
	bcf ADCON0,CHS1
	bcf ADCON0,CHS2
	bcf ADCON0,CHS3
	goto	MainLoop
;------------------------------------------------------------------------------------------------------
met_3	; meting sensor druk 3
	bcf ADCON0,7
	bsf ADCON0,CHS1
	bsf ADCON0,ADON
	nop			; wacht even totdat de ad converter opgestart is
	nop			; wacht 1uS
	nop			; wacht 1uS
	nop			; wacht 1uS
	nop			; wacht 1uS
	nop			; wacht 1uS
	nop			; wacht 1uS
	bsf	ADCON0,GO	; start uitlezing
	btfsc	ADCON0,GO	; als bit GO van ADCONO 1 ga verder anders w8 tot uitlezing klaar is.
	goto	$-1
	movf	ADRESH,w	; kopieer uitlezing naar werkregister.
	movwf	PORTC		; kopieer uitlezig naar poort c
	bsf		PORTA,4
ontv3
	btfss	PORTA,3		; wacht op ontvangen
	goto	ontv3		; gat terug na afvragen
	bcf		PORTA,4		; clear bit  zenden
	bcf ADCON0,CHS0
	bcf ADCON0,CHS1
	bcf ADCON0,CHS2
	bcf ADCON0,CHS3
	goto	MainLoop
;-------------------------------------------------------------------------------------------------------
met_4	; meting sensor flow 
	bcf ADCON0,7
	bsf ADCON0,CHS1
	bsf ADCON0,CHS3
	bsf ADCON0,ADON
	nop			; wacht even totdat de ad converter opgestart is
	nop			; wacht 1uS
	nop			; wacht 1uS
	nop			; wacht 1uS
	nop			; wacht 1uS
	nop			; wacht 1uS
	nop			; wacht 1uS
	bsf	ADCON0,GO	; start uitlezing
	btfsc	ADCON0,GO	; als bit GO van ADCONO 1 ga verder anders w8 tot uitlezing klaar is.
	goto	$-1
	movf	ADRESH,w	; kopieer uitlezing naar werkregister.
	movwf	PORTC		; kopieer uitlezig naar poort c
	bsf		PORTA,4		; set poort versturen
ontv4
	btfss	PORTA,3		; wacht op ontvangen(1)
	goto	ontv4		; gat terug na afvragen
	bcf		PORTA,4		; clear bit  zenden
	bcf ADCON0,CHS0
	bcf ADCON0,CHS1
	bcf ADCON0,CHS2
	bcf ADCON0,CHS3
	goto	MainLoop
;---------------------------------------------------------------------------------------------------------
checkport
	btfss	PORTB,5
	goto	checkport1
	goto	met_1	; druk meting sensor 1
checkport1
	btfss	PORTB,6
 	goto	checkport2
	goto	met_2	; druk meting sensor 2
checkport2
	btfss	PORTB,7
	goto	checkport3
	goto	met_3   ; druk meting sensor 3
checkport3
	btfss	PORTA,5
	goto	MainLoop
	goto	met_4   ; flow meting sensor 4
	end
	[code/]

Op 12 juni 2009 10:58:01 schreef rgbledje:
Het is al opgelost, bedankt!!

Mogen we weten wat je verkeerd had?
Kunnen wij misschien ook van leren...

excuses voor de late reactie. maar ik had een draadje gewoon verkeerd aangesloten haha. ik had gelijk de voeding erop geprikt. verder niet veel interresants. greetzz