Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

10/11/2010 #1


Como trabajar con A/D en Pic 18F2553
Estimados Señores:
Una consulta, hemos adquirido Pic18F2553, podrian decirme como habilitar el A/D ó donde puedo encontrar informacion adicional y ejemplos al respecto, ya que antes usabamos el 18F2550 y usabamos conversor A/D externo, pero ya que el 18F2553 cuenta con A/D interno necesito habilitarlo.

Desde ya gracias.

Saludos
10/11/2010 #2

Avatar de ByAxel

Que tal:
- El PIC18F2550 si tiene ADC interno hasta 10bit de resolución.
- El PIC18F2553 tiene hasta 12bits de resolución (esta bueno)...
- Sobre info al respecto no hay nada mejor que ver primero el datasheet (configuración de registrios) PIC18F2553.
- Que lenguaje usas? pero básicamente se tiene que configurar el registro ADCON1 para determinar que pines son entradas análogas, ADCON2 para la velocidad de adquisición y ADCON0 para selecciona el canal a leer junto con el inicio de la conversión.
- El resto es similar, el valor lo obtienes en los registros ADRESH y ADRESL.

PD: Depende que lenguaje y el compilador que uses puede ser más fácil/amplio de configurar.

saludos
10/11/2010 #3


Gracias ByAxel por la respuesta
Ahi te doy mas detalles:

Trabajo en Lenguaje C y MPLab con CCS te incluyo el archivo el cual necesito habilitar el A/D desde el mismo Pic 18F2553.

Gracias
Archivos Adjuntos
Tipo de Archivo: rar harimuya.rar (1,5 KB (Kilobytes), 26 visitas)
10/11/2010 #4

Avatar de ByAxel

En el CCS por ejemplo:
Código:
setup_adc_ports(AN0|VSS_VDD); // Entrada por AN0, Vref a V+ y GND
setup_adc(ADC_CLOCK_DIV_2) // Velocidad;
...
...
SET_TRIS_x(); // El/los pines que uses como entrada ADC
...
...
// Para obtener el valor
Value = read_adc(); // Value es una variable de 16 bits
El resto de configuraciones las vez en el archivo del PIC 18F2553.h...

Código:
////////////////////////////////////////////////////////////////// ADC
// ADC Functions: SETUP_ADC(), SETUP_ADC_PORTS() (aka SETUP_PORT_A),
//                SET_ADC_CHANNEL(), READ_ADC()
// Constants used for SETUP_ADC() are:
#define ADC_OFF               0           // ADC Off
#define ADC_CLOCK_DIV_2   0x100
#define ADC_CLOCK_DIV_4    0x04
#define ADC_CLOCK_DIV_8    0x01
#define ADC_CLOCK_DIV_16   0x05
#define ADC_CLOCK_DIV_32   0x02
#define ADC_CLOCK_DIV_64   0x06
#define ADC_CLOCK_INTERNAL 0x07           // Internal 2-6us

// Constants used in SETUP_ADC_PORTS() are:
#define NO_ANALOGS   0x0F   // None
#define ALL_ANALOG   0x00   // A0 A1 A2 A3 A5 B2 B3 B1 B4 B0              
#define AN0_TO_AN11  0x03   // A0 A1 A2 A3 A5 B2 B3 B1 B4                 
#define AN0_TO_AN10  0x04   // A0 A1 A2 A3 A5 B2 B3 B1                    
#define AN0_TO_AN9   0x05   // A0 A1 A2 A3 A5 B2 B3                       
#define AN0_TO_AN8   0x06   // A0 A1 A2 A3 A5 B2                          
#define AN0_TO_AN4   0x0A   // A0 A1 A2 A3 A5
#define AN0_TO_AN3   0x0B   // A0 A1 A2 A3
#define AN0_TO_AN2   0x0C   // A0 A1 A2
#define AN0_TO_AN1   0x0D   // A0 A1
#define AN0          0x0E   // A0
#define AN0_TO_AN11_ANALOG     0x03   //!old only provided for compatibility
#define AN0_TO_AN10_ANALOG     0x04   //!old only provided for compatibility
#define AN0_TO_AN9_ANALOG      0x05   //!old only provided for compatibility
#define AN0_TO_AN8_ANALOG      0x06   //!old only provided for compatibility
#define AN0_TO_AN4_ANALOG      0x0A   //!old only provided for compatibility
#define AN0_TO_AN3_ANALOG      0x0B   //!old only provided for compatibility
#define AN0_TO_AN2_ANALOG      0x0C   //!old only provided for compatibility
#define AN0_TO_AN1_ANALOG      0x0D   //!old only provided for compatibility
#define AN0_ANALOG             0x0E   //!old only provided for compatibility

// The following may be OR'ed in with the above using |
#define VSS_VDD               0x00              // Range 0-Vdd
#define VREF_VREF             0x30              // Range VrefL-VrefH
#define VREF_VDD              0x20              // Range VrefL-Vdd
#define VSS_VREF              0x10              // Range 0-VrefH


// Constants used in READ_ADC() are:
#define ADC_START_AND_READ     7   // This is the default if nothing is specified
#define ADC_START_ONLY         1
#define ADC_READ_ONLY          6
10/11/2010 #5


Gracias ByAxel

Saludos.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.