Conversor A/D PIC16F877

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Conversor A/D PIC16F877

Mensagempor mdaj » 10 Fev 2010 10:00

Bom dia, gente!

Estou começando com o PIC nao tem mto tempo e estou tendo uns problemas com o conversor A/D dele. Estou programando em C.

Estou colocando a captura numa variável float que recebe o valor da função abaixo:

float ler_adc (int canal)
{
setup_adc_ports(AN0);
setup_adc (ADC_CLOCK_INTERNAL);
set_adc_channel(canal);
return read_adc();
}

No caso, eu uso o RA0.

Feito isso ele funciona, porém , eu queria trabalhar com o conversor de 10 bits, e pela simulação do Poteus ele vai de 0 a 255, ou seja, usa apenas 8 bits.

Outra coisa, quando na instrução setup_adc_ports eu uso qulquer outra configuração (que não AN0), não aparece resultado algum no display. Alguém sabe o porquê disso?

Obrigado desde já!
mdaj
Bit
 
Mensagens: 31
Registrado em: 20 Jan 2010 07:26

Mensagempor ze » 10 Fev 2010 10:16

float não combina com os 10 bits do ad (e muito menos com 8 bits do núcleo deste uC). use unsigned int.
ccs não combina com quem quer aprender mais a fundo. vá de mikroc (por enquanto). Procure entender o pic por sua verdadeira identidade (hw/datasheet) e não pelo que falam sobre ele (sw/ccs). Assim vc aprende + tanto c como pic.
abç
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor cristian » 10 Fev 2010 10:22

mude de float e usa uma var inteira de 16bits

no proteus vc seleciona o tipo de variavel para double word assim ele vai exibir o valor certo
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor mdaj » 10 Fev 2010 10:28

Muito obrigado, gente! Vou mudar a variável aqui!

E vou baixaro mikroc tbm pra ver se aprendo de fato. Pq eu vi que era no ADCON1 que configurava, pq para conseguir usar os 10 bits tem que justificar a esquerda, mas nao sabia como configurar em C.

Mais uma vez MUITO obrigado!

Abraços!
mdaj
Bit
 
Mensagens: 31
Registrado em: 20 Jan 2010 07:26

Mensagempor mdaj » 10 Fev 2010 10:59

Então cristian, eu não sei se está configurado para double word, mas quando eu cliquei sobre o pic no programa, existe m campo "Program Configuration Word" e na frente dele está uma palavra 0x3FFB, isso significa algo.

E no mais, mesmo mudando a variável para unsigned long, o valor varia apenas varia de 0 a 255!

Obrigado!
mdaj
Bit
 
Mensagens: 31
Registrado em: 20 Jan 2010 07:26

Mensagempor mdaj » 10 Fev 2010 13:24

Boa tarde gente! Então, para quem olhou e não soube tbm, acabei descobrindo aqui.

Para configurar o adc para 10bits (pelo menos com o CCS) tem que usar uma diretiva espcífica no programa:

#device adc = 10

Ela deve vir logo após o
#include <16F877.h>
que é declaraado no início do programa.

Vlw pela ajuda, principalmente cristian e Lellis

Abraços!
mdaj
Bit
 
Mensagens: 31
Registrado em: 20 Jan 2010 07:26

Mensagempor barboza » 10 Fev 2010 20:11

mdaj escreveu:
Para configurar o adc para 10bits (pelo menos com o CCS) tem que usar uma diretiva espcífica no programa:

#device adc = 10

Ela deve vir logo após o
#include <16F877.h>
que é declaraado no início do programa.




Tem coisas que Mastercard resolve, outras só o ccs faz por você!!!
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x