Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

ADC sul pierin pic18

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[1] ADC sul pierin pic18

Messaggioda Foto Utentemangiare » 8 set 2013, 13:20

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
Avatar utente
Foto Utentemangiare
0 5
New entry
New entry
 
Messaggi: 59
Iscritto il: 28 lug 2008, 18:34

0
voti

[2] Re: ADC sul pierin pic18

Messaggioda Foto UtenteTardoFreak » 8 set 2013, 15:12

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.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[3] Re: ADC sul pierin pic18

Messaggioda Foto Utentemangiare » 10 set 2013, 12:14

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;
      }
  } 

  }


Avatar utente
Foto Utentemangiare
0 5
New entry
New entry
 
Messaggi: 59
Iscritto il: 28 lug 2008, 18:34

0
voti

[4] Re: ADC sul pierin pic18

Messaggioda Foto UtenteTardoFreak » 10 set 2013, 13:03

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.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[5] Re: ADC sul pierin pic18

Messaggioda Foto Utentemangiare » 10 set 2013, 13:44

E' all'inizio del main TRISD=0 :-)
Avatar utente
Foto Utentemangiare
0 5
New entry
New entry
 
Messaggi: 59
Iscritto il: 28 lug 2008, 18:34

0
voti

[6] Re: ADC sul pierin pic18

Messaggioda Foto UtenteTardoFreak » 10 set 2013, 13:47

Vero #-o

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.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

1
voti

[7] Re: ADC sul pierin pic18

Messaggioda Foto Utentec1b8 » 10 set 2013, 14:28

Se posso permettermi di aiutare Foto UtenteTardoFreak 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
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[8] Re: ADC sul pierin pic18

Messaggioda Foto Utentemangiare » 10 set 2013, 14:49

yesssss! grazie c1b8 mancava proprio quello ora funziona! :D
Vi vorrei chiedere se mi sapete orientare su qualche libro o guida online per imparare passo passo con ordine la programmazione delle PIC
Avatar utente
Foto Utentemangiare
0 5
New entry
New entry
 
Messaggi: 59
Iscritto il: 28 lug 2008, 18:34

0
voti

[9] Re: ADC sul pierin pic18

Messaggioda Foto UtenteTardoFreak » 10 set 2013, 15:04

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". :ok:

Grazie Fabio. iOi
"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.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[10] Re: ADC sul pierin pic18

Messaggioda Foto Utenteaduri » 12 set 2013, 8:33

Ciao,
io mi sono trovato bene con questa guida/manuale.
http://www.laurtec.it/italiano/tutorial ... y_step.pdf

Antonio
Avatar utente
Foto Utenteaduri
435 1 5 11
Expert
Expert
 
Messaggi: 937
Iscritto il: 29 giu 2005, 23:13
Località: Genova


Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 12 ospiti