[PIC]konstiga värden från ADC

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Klas-Kenny
Inlägg: 11843
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

[PIC]konstiga värden från ADC

Inlägg av Klas-Kenny »

Jag skulle använda mig av ADC på en PIC16F886, men det ger mig helkonstiga värden!

Jag har en 10k Ohm Linjär pot kopplad till AN1 på PICen (pinne 1 --> +5V, Pinne 2 --> AN1, Pinne 3 --> 0V) samt åtta lysdioder med 100 Ohm motstånd i serie med varje till hela PortB.
Sen såklart +5V till VDD och 0V till VSS samt en 100nF kondensator mellan.

Nu vad som händer:
När jag vrider på poten så ska datan speglas rakt ut på LED'arna. Men när jag vrider, så ungefär halva varvet närmst jord ger ingenting alls på LED'arna, och sedan andra hälften ger hela skalan 0-255, men det går fortare och fortare, som att poten va logaritmisk.
Någon som varit med om något liknande? :?

Jag har resistansmätt poten, och det ger ett linjärt värde, har även testat med andra pottar (Annan 10k ohm, en 5k ohm samt en 25k ohm) och alla ger samma resultat.

Kod:

Kod: Markera allt

	list		p=16f886
	#include	<p16f886.inc>

	__CONFIG	_CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT
	__CONFIG	_CONFIG2, _WRT_OFF & _BOR21V

cblock	0x20
Delay1
endc

org 0

Start
	bsf		STATUS,RP0
	clrf		TRISB
	movlw	b'10000000'
	movwf	TRISA
	movlw	b'00000000'
	movwf	ADCON1
	
	bsf		STATUS,RP1
	
	movlw	b'00000010'
	movwf	ANSEL
	
	bcf		STATUS,RP0
	bcf		STATUS,RP1
	
	movlw	b'01000101'
	movwf	ADCON0
	
Main
	call		Delay
	bsf		ADCON0,GO
	btfsc		ADCON0,GO
	goto		$-1
	
	movfw	ADRESH
	movwf	PORTB
	
goto	Main
	
Delay
	Delayloop
		decfsz	Delay1
		goto		Delayloop
Return

END
Kan tillägga att jag kört ADC på PIC16F690 med samma pot, och det har givit korrekta värden.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: [PIC]konstiga värden från ADC

Inlägg av sodjan »

Använd BANKSEL istället. Vet inte om det hjälper, men
annars är det ingen mening med att kolla koden.
Användarvisningsbild
Klas-Kenny
Inlägg: 11843
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: [PIC]konstiga värden från ADC

Inlägg av Klas-Kenny »

Kod: Markera allt

	list		p=16f886
	#include	<p16f886.inc>

	__CONFIG	_CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT
	__CONFIG	_CONFIG2, _WRT_OFF & _BOR21V

cblock	0x20
	Delay1
endc

org 0

Start
	banksel	TRISB
	clrf		TRISB
	movlw	b'10000000'
	
	banksel	TRISB
	movwf	TRISA
	
	banksel	ADCON1
	movlw	b'00000000'
	movwf	ADCON1
	
	banksel 	ANSEL
	movlw	b'00000010'
	movwf	ANSEL
	
	banksel	ADCON0
	movlw	b'01000101'
	movwf	ADCON0
	
Main
	call	Delay
	
	banksel 	ADCON0
	bsf		ADCON0,GO
	btfsc		ADCON0,GO
	goto		$-1
	
	banksel 	ADRESH
	movfw	ADRESH
	
	banksel 	PORTB
	movwf	PORTB
	
goto	Main
	
Delay
	banksel 	Delay1
	Delayloop
		decfsz	Delay1
		goto		Delayloop
Return

END
Där har du en hel massa banksel, koden fungerar dock precis lika illa som innan.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: [PIC]konstiga värden från ADC

Inlägg av sodjan »

Kolla TRISA.
Användarvisningsbild
Klas-Kenny
Inlägg: 11843
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: [PIC]konstiga värden från ADC

Inlägg av Klas-Kenny »

Aha!
Vilken miss, inte första gången jag gjort tabben att gå "fel håll" när jag satt bitar i TRIS-registerna.
Använde tidigare AN0 (Med samma dåliga resultat), då hade jag satt TRISA sådär, sen missade jag att ändra när jag bytte till AN1. Dock skulle den ju vara '00000001' inte '10000000' :doh: Intressant konsekvens det blev av detta dock, en felsatt TRIS gav ett icke linjärt resultat vid ADC :?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: [PIC]konstiga värden från ADC

Inlägg av sodjan »

Ja, pinnen var utgång och försökte köra imot spänningen från
potten så länge den orkade, men till slut, när potten närmar sig en
ändläget, så orkar inte porten längre och spänningen stiger på pinnen.
Detta ser alltså ADCn. Helt normalt och förväntat resultat.

Det är inte heller helt OK för pinnen att göra så (kortslutning).
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: [PIC]konstiga värden från ADC

Inlägg av bearing »

Om nästan varje enkelt problem leder till en fråga här på forumet känner jag mig orolig för fortsättning. Du är ju en ung intelligent man. Vore det inte en bra erfarenhet att försöka lösa problemen själv? det kanske tar lite längre tid, men jag är säker på att den tiden kommer betala tillbaka sig senare genom att du får effektivare felsökningsrutiner.

Förövrigt - 100 ohm är väldigt litet. Strömmen blir nog högre än pinnarna klarar. Porten kommer dra uppåt flera hundra mA! (vilket är långt över specen)
Kan ju hända att kretsen hamnar i brown out p.g.a. detta, och startas om.

För att undvika kortslutning vid sådana här programmeringsmissar kan man koppla ett motstånd mellan potentiometern och pinnen.
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: [PIC]konstiga värden från ADC

Inlägg av jesse »

Det första jag hade gjort skulle vara att mäta spänningen på den ingången du kopplat till poten. Då ser du om det är något skumt där, eller om det bara är ett beräkningesfel i koden. Nu kom du ju på var det var ändå.

bearing: Jag har inget emot enkla frågor... men det är ju bra om man försökt lite själv först. Jag vet själv hur svårt det kan vara att se det uppenbara förrän någon påpekat det i forumet.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: [PIC]konstiga värden från ADC

Inlägg av sodjan »

En enkel mätning av spänningen från potten *när den var ansluten* hade
visat att något var väldigt galet med hela konfigurationen/kopplingen.

(Ja, det var väl det som Jesse sa... :-) )
Användarvisningsbild
Klas-Kenny
Inlägg: 11843
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: [PIC]konstiga värden från ADC

Inlägg av Klas-Kenny »

Sodjan: Ja där har man lärt sig något nytt!

Jag kunde inte tänka mig att ADC'n skulle se något alls ifall en I/O va felsatt, men ack så fel man kunde ha.

(Off topic: Fick borren idag, de ser superbra ut :wink: )

Bearing: Faktum är att jag lagt kanske en timme på att felsöka detta, utan resultat. Dock inser man ju nu i efterhand hur löjligt korkat det va :doh:

Kollade nu, det är visst 180 Ohm jag har, vilket vad jag vet ska vara helt ok i serie med en LED. Hade fel för mig då jag har LED'arna och motstånden på en liten modul jag lött ihop för ett tag sen.

jesse: Ja det borde jag klart gjort, jag mätte bara när jag kopplat ur den. Kunde inte tänka mig att µC'n skulle kunna förändra spänningen så. Men tydligen.

Precis, uppenbara fel är allt för lätta att missa, men andra ser det direkt.
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: [PIC]konstiga värden från ADC

Inlägg av bearing »

Enligt databladet får strömförbrukningen för alla portar sammanlagt vara 90 mA. Ifall 8 pinnar driver en LED blir det drygt 10 mA per pinne.
Användarvisningsbild
Klas-Kenny
Inlägg: 11843
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: [PIC]konstiga värden från ADC

Inlägg av Klas-Kenny »

200mA vad jag kan se?

"Maximum current sourced by PORTA, PORTB and PORTE (combined)(2) .................................................. 200 mA" på s. 241 i Databladet.

Och det bör jag inte komma över med 8*20mA :)
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: [PIC]konstiga värden från ADC

Inlägg av bearing »

Jag har läst en senare revision av databladet. Vet ej varför de sänkt gränserna. I Appendix A finns revisionshistoriken.
http://ww1.microchip.com/downloads/en/D ... 41291F.pdf
Användarvisningsbild
Klas-Kenny
Inlägg: 11843
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: [PIC]konstiga värden från ADC

Inlägg av Klas-Kenny »

Vart någonstans ser du något om 90mA?
Har kollat Appendix A, electrical specifications samt sökt efter "90 mA" utan resultat.
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: [PIC]konstiga värden från ADC

Inlägg av bearing »

Kapitel 17, sid 245, i databladet jag länkade till, med suffixet F i filnamnet. "Ditt" har suffixed D, och är preliminary.
Skriv svar