Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Problema PIC16F876A e LM35

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] Problema PIC16F876A e LM35

Messaggioda Foto Utentealle588 » 24 mag 2012, 17:48

ciao ragazzi ho un problema....voglio leggere la temperatura dall'lm35 ma non riesco a leggerla perché secondo me sbaglio configurazione dei registri ADCON0 e ADCON1

Codice: Seleziona tutto
ADCON0 = 0b10011000;
ADCON1 = 0b10001111;


i dati li leggo dal pin5 del PIC ovvero AN3
mentre quando voglio leggere la temperatura che è di circ 25mV (dipende dai casi poi)
faccio cosi:
Codice: Seleziona tutto

void Rileva_Temperatura()
{
        int Temp;
        DelayMs(20);
        ADGO = ON //ON = 1 OFF = 0
        while ( ADGO )  continue
        Temp = ADRESL + (ADRESH << 8) * 5
        //RESETTO IL REGISTRO ADCON0
        ADCON0 = 0b10011000;
        Manda_Temperatura ( Temp ); // La mando su seriale
       return;
}



e invece questa è la funzione per inviare la temperatura su seriale
ma secondo me Temp non assume nessun valore perché quando provo ad inviare su seriale dopo averlo convertito in vettore di caratteri è = 0....per favore aiutatemi che è una cosa di scuola e devo finirlo per la settimana prossima
Avatar utente
Foto Utentealle588
0 1 2
 
Messaggi: 16
Iscritto il: 3 feb 2012, 10:21

0
voti

[2] Re: Problema PIC16F876A e LM35

Messaggioda Foto UtentePaolino » 29 mag 2012, 7:56

Prova a dare un'occhiata a questo articolo.

Attenzione che quando scrivi:
Codice: Seleziona tutto
        ADGO = ON //ON = 1 OFF = 0

hai dimenticato un ";" alla fine della riga. Va corretto così:

Codice: Seleziona tutto
        ADGO = ON; //ON = 1 OFF = 0


Infine: che compilatore usi? Puoi farci vedere lo schema? Usa FIdoCADJ per disegnarlo.

Ciao.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,5k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4220
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[3] Re: Problema PIC16F876A e LM35

Messaggioda Foto UtenteKirkegaard » 29 mag 2012, 19:32

Se utilizzi l'ingresso analogico AN3 la configurazione dei registri non è corretta.

Da datasheet del micro leggo che I primi 4 bit del registro ADCON1 sono PCFG3:PCFG0: A/D Port Configuration Control bits.

se li metti tutti a 1 come indicato

ADCON0 = 0b10011000;
ADCON1 = 0b10001111;

configuri la porta AN0 come ingresso Analogico e AN3 come ingresso per la Vref.
Per il resto questa è la sequenza che la Microchip consiglia di effettuare per la corretta conversione

To do an A/D Conversion, follow these steps:
1. Configure the A/D module:
• Configure analog pins/voltage reference and
digital I/O (ADCON1)
• Select A/D input channel (ADCON0)
• Select A/D conversion clock (ADCON0)
• Turn on A/D module (ADCON0)
2. Configure A/D interrupt (if desired):
• Clear ADIF bit
• Set ADIE bit
• Set PEIE bit
• Set GIE bit
3. Wait the required acquisition time.
4. Start conversion:
• Set GO/DONE bit (ADCON0)
5. Wait for A/D conversion to complete by either:
• Polling for the GO/DONE bit to be cleared
(interrupts disabled); OR
• Waiting for the A/D interrupt
6. Read A/D Result register pair
(ADRESH:ADRESL), clear bit ADIF if required.
7. For the next conversion, go to step 1 or step 2
as required. The A/D conversion time per bit is
defined as TAD.


fammi sapere....
Avatar utente
Foto UtenteKirkegaard
7.415 1 7 10
Master
Master
 
Messaggi: 17
Iscritto il: 12 giu 2011, 19:09


Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite