Sida 1 av 1

Problem ADC 16F690

Postat: 5 december 2009, 11:17:23
av cpu
Håller på att lära mig hur adc'n fungerar men det går inte alls bra! :cry:

Läser en varierbar spänning på an0 och pressenterar på portc med 8 led. Alltså ett riktigt nybörjar exempel.
Felet är det att jag inte får ut något vettigt på portc.

Är det någon som kan hjälpa mig skulle jag vara tacksam! :D
min kod

#include "delay.h"
#pragma config |= 0x00D4

char rad;

void main(void)
{
TRISC=0b00000000; //portc output
TRISA.0 = 1; //porta0 input
ANSEL.0=1; //porta0 ADC
ANSELH=0x00;
ADCON1=0b01010000; //ADC oscillator clk rate 4us
ADCON0=0b00000001; //ADON=1, left justified, channel an0
delay(3);
while(1);
{
GO=1; //read ADC
while(GO) ; //wait GO=1
rad=ADRESH;
PORTC=rad;
delay(5);
}
}

Re: Problem ADC 16F690

Postat: 5 december 2009, 14:11:58
av sodjan
> Läser en varierbar spänning på an0...

Som kommer varifrån ?

> Felet är det att jag inte får ut något vettigt på portc.

Och det är väldigt hemligt vad du får ut ?

Re: Problem ADC 16F690

Postat: 5 december 2009, 14:37:29
av cpu
Hej Sodjan

Spänningen kommer från en potentiometer 0-5V. Har kontrollerat att spänningen verkligen varierar 0-5V på ano i detta fall PORTA.0.

Ut på PORTC får jag 0x01; hur jag än vrider på potentiometern lyser endast en lysdiod.

Mitt mål är att kunna bestämma vilka lysdioder som ska lysa mha potentiometer.

Tänker jag rätt eller är jag helt ute och cyklar?

Anders

Re: Problem ADC 16F690

Postat: 5 december 2009, 14:41:50
av nodanolo
Kommer det inte att hänga sig på raden "while(1);" ??

Kanske "while(1){ " funkar bättre.

Re: Problem ADC 16F690

Postat: 5 december 2009, 14:42:40
av sodjan
> Ut på PORTC får jag 0x01; hur jag än vrider på potentiometern lyser endast en lysdiod.

Är det avläsningen av ADC'n eller skrivningen till PORTC som strular ?

> Tänker jag rätt eller är jag helt ute och cyklar?

Nej, men någonstans gör du fel...

Re: Problem ADC 16F690

Postat: 5 december 2009, 15:05:25
av cpu
Tack Nodanolo nu fungerar det!

Anders