ADC sul pierin pic18
Moderatore:
Paolino
10 messaggi
• Pagina 1 di 1
0
voti
Salve vorrei acquisire un segnale analogico con il pierin PIC 18, ho fatto qualche prova ma sempre con esito negativo. Vorrei chiedervi come posso fare e quali funzioni vanno utilizzate
0
voti
Puoi leggere QUESTO.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
0
voti
Grazie TardoFreak ho scritto un programma molto semplice che mi dovrebbe permettere di acquisire un segnale analogico e se questo è uguale a zero mi dovrebbe accendere il led2 , se invece è diverso da zero mi dovrebbe accendere il led1. Il fatto è che mi rimane sempre acceso il led2 cioè quello che indica che il valore acquisito è uguale a zero, nonostante cambi il valore analogico con un trimmer. Dov'è che sbaglio? grazie
- Codice: Seleziona tutto
// File di definizione dei registri del micro.
#include "p18f47j53.h"
// File di configurazione dei fuses
#include "configurazione.h"
// Mappatura delle interrupt
#include "mappa_int.h"
// Header del main
#include "main.h"
//------------------------------------------------------------------------------
// Variabili globali
//------------------------------------------------------------------------------
#pragma udata
typedef long int int32_t;
//------------------------------------------------------------------------------
// Funzione di servizio delle interrupt ad ALTA priorità
//------------------------------------------------------------------------------
#pragma code
#pragma interrupt highPriorityInterrupt
void highPriorityInterrupt()
{
}
//------------------------------------------------------------------------------
// Funzione di servizio delle interrupt a BASSA priorità
//------------------------------------------------------------------------------
#pragma interruptlow lowPriorityInterrupt
void lowPriorityInterrupt()
{
}
//------------------------------------------------------------------------------
// Prototipi delle funzioni
//------------------------------------------------------------------------------
#pragma code
//------------------------------------------------------------------------------
// Funzioni
//------------------------------------------------------------------------------
#pragma code
void adc_deInit(void)
{
ADCON0 = 0;
ADCON1 = 0;
IPR1bits.ADIP = 0; // Bit di priorità interrupt ADC
PIE1bits.ADIE = 0; // Interrupt disabilitta
PIR1bits.ADIF = 0; // Flag interrupt azzerato
}
//------------------------------------------------------------------------------
// MAIN FUNCTION
//------------------------------------------------------------------------------
void main(void)
{
LATD=0;
TRISD=0;
// Inizializza tutti i pin come digitali
ANCON0 = 0xFF;
ANCON1 = 0x1F;
// Inizializza il pin AN7 (RE2) come ingresso analogico
ANCON0bits.PCFG7 = 0; // 12/08/2013 corretto BUG segnalato da c1b8
// De-inizializza l' ADC
adc_deInit();
// Seleziona Vref positiva Vdd
ADCON0bits.VCFG0 = 0;
// Seleziona Vref negatica Vss
ADCON0bits.VCFG1 = 0;
// Seleziona il tempo di conversione 20TAD
ADCON1bits.ACQT = 7;
// Clock di conversione FOSC/64
ADCON1bits.ADCS = 6;
// Formato del risultato allineato a destra
ADCON1bits.ADFM = 1;
for(;;)
{
int32_t valore;
// Calibrazione ADC
ADCON1bits.ADCAL = 1;
ADCON0bits.GO = 1;
while(ADCON0bits.GO);
ADCON1bits.ADCAL = 0;
// Seleziona l' ingresso da misurare
ADCON0bits.CHS = 7;
valore = 0;
// Fa partire la conversione 45 us.
ADCON0bits.GO = 1;
// Aspetta la fine della conversione
while(ADCON0bits.GO);
// Legge il valore convertito
valore = ADRES;
if(valore!=0)
{
LATDbits.LATD6 = 1;
LATDbits.LATD7 = 0;
}
else
{
LATDbits.LATD6 = 0;
LATDbits.LATD7 = 1;
}
}
}
0
voti
Non vedo l' inizializzazione di RD6 e RD7 come output.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
0
voti
Vero
Se ho tempo questa sera lo guarderò per bene. Oggi sono nella m... ehm, sono impegnatissimo.
Se ho tempo questa sera lo guarderò per bene. Oggi sono nella m... ehm, sono impegnatissimo.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
1
voti
Se posso permettermi di aiutare
TardoFreak a spalare... ehm, a non distrarsi... mi sembra di vedere che manchi l'abilitazione del modulo ADC: bisogna settare a 1 il bit 0 di ADCON0.
Fabio
0
voti
yesssss! grazie c1b8 mancava proprio quello ora funziona!
Vi vorrei chiedere se mi sapete orientare su qualche libro o guida online per imparare passo passo con ordine la programmazione delle PIC
Vi vorrei chiedere se mi sapete orientare su qualche libro o guida online per imparare passo passo con ordine la programmazione delle PIC
0
voti
Nel sito del PIERIN PIC18 ci sono diversi articoli di EY che trattano dei PIC18.
In ogni caso, se trovi una risorsa in rete valida, fammelo sapere. Metterò il link nel sito alla sezione "guide".
Grazie Fabio.
In ogni caso, se trovi una risorsa in rete valida, fammelo sapere. Metterò il link nel sito alla sezione "guide".

Grazie Fabio.

"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
0
voti
Ciao,
io mi sono trovato bene con questa guida/manuale.
http://www.laurtec.it/italiano/tutorial ... y_step.pdf
Antonio
io mi sono trovato bene con questa guida/manuale.
http://www.laurtec.it/italiano/tutorial ... y_step.pdf
Antonio
10 messaggi
• Pagina 1 di 1
Torna a Realizzazioni, interfacciamento e nozioni generali.
Chi c’è in linea
Visitano il forum: Nessuno e 12 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)



