Autor Tema: Cuánto tiempo requiere el conversor ADC  (Leído 21663 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Jorge_

  • PIC10
  • *
  • Mensajes: 30
Re: Cuánto tiempo requiere el conversor ADC
« Respuesta #15 en: 26 de Enero de 2008, 06:26:20 »
Significa: Analog to Digital Conversion Timeout.

Si te funcionó en el prototipo, yo creo que has descubierto un bug en el simulador del mplab, porque en el Stimulus sólo aparecen los canales AN0 a AN9

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Cuánto tiempo requiere el conversor ADC
« Respuesta #16 en: 26 de Enero de 2008, 06:38:51 »
Gracias Jorge.

Pero ¿qué significa ese timeout?¿a qué se refiere? en otras palabras ¿cuándo se produce esta interrupción?

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Cuánto tiempo requiere el conversor ADC
« Respuesta #17 en: 26 de Enero de 2008, 12:07:44 »
El caso es que eligiendo el canal 12, el prototipo real funciona, a pesar del aviso que muestra MPlab.

Por eso te preguntaba en qué se configuraba el ADCON2 para saber lo que sucedía y ver si no era algo mal del CCS o si era algo del Simulador.

Has posteado este problema en el support de microchip?

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado PerriPic

  • PIC10
  • *
  • Mensajes: 24
Re: Cuánto tiempo requiere el conversor ADC
« Respuesta #18 en: 30 de Enero de 2008, 08:03:40 »
Yo utilizo el 2550 q tiene el mismo datasheet q el 2455 y te dice q no tiene implementadas las An7, AN6 y AN 5, ahora bien, tb utilizo el c18 y en la libreria adc.h así como en la funcion setchanel, solo te deja utilizar del CH_0 a CH_9. Con lo q imagino q aunq en el micro la entrada se llama AN12 al programarlo se utilizan del 0 al 9...

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Cuánto tiempo requiere el conversor ADC
« Respuesta #19 en: 30 de Enero de 2008, 08:51:13 »
Pues en CCS C no es así PerriPic. Aparentemente sólo funciona si eliges específicamente el canal 12.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Cuánto tiempo requiere el conversor ADC
« Respuesta #20 en: 30 de Enero de 2008, 10:18:31 »
Yo utilizo el 2550 q tiene el mismo datasheet q el 2455 y te dice q no tiene implementadas las An7, AN6 y AN 5, ahora bien, tb utilizo el c18 y en la libreria adc.h así como en la funcion setchanel, solo te deja utilizar del CH_0 a CH_9. Con lo q imagino q aunq en el micro la entrada se llama AN12 al programarlo se utilizan del 0 al 9...

Estas mezclando las cosas.

El C18 'si' permite seleccionar el canal 12, en ese micro.  De hecho para confirmarlo puedes verlo en cómo queda configurado el registro ADCON0.

Poniendo SetChanADC(ADC_CH12) y habiendo encendido previamente el modulo A/D, queda

ADCON0 = 0b00110001;

Donde la parte roja es la que corresponde al canal, en este caso el canal 12.

Es un problema del SIMULADOR (MPSIM) , no del CCS ni del C18.

Ya mismo voy a poner un ticket en microchip para que lo solucionen en sucesivas versiones.



Código para probar el problema

Código: C
  1. #include <adc.h>
  2. #include <delays.h>
  3.  
  4. unsigned int myad;
  5.  
  6. #pragma code
  7. void main (void) {
  8.  
  9.     OpenADC(ADC_FOSC_2 & ADC_RIGHT_JUST & ADC_8_TAD ,
  10.             ADC_CH0 & ADC_CH1 & ADC_CH2 & ADC_CH12 & ADC_INT_OFF & ADC_REF_VDD_VSS,
  11.             ADC_13ANA);
  12.        
  13.  
  14.   while(1) {
  15.      SetChanADC(ADC_CH12);
  16.      ConvertADC();
  17.      myad = ReadADC();
  18.      Delay1KTCYx(100);  
  19.   }    
  20. }
« Última modificación: 30 de Enero de 2008, 10:23:38 por maunix »
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado PerriPic

  • PIC10
  • *
  • Mensajes: 24
Re: Cuánto tiempo requiere el conversor ADC
« Respuesta #21 en: 30 de Enero de 2008, 10:41:54 »
Creo q me expliqué mal :D, lo q keria decir es q en el adc.h te dice q si defines 182550 solo utilizas del 0 al 9. Pongo lo q yo creo q es:

/* ***** channel selection ***** */
#define ADC_CH0          0b10000111  // Channel 0
#define ADC_CH1          0b10001111  // Channel 1
#define ADC_CH2          0b10010111  // Channel 2
#define ADC_CH3          0b10011111  // Channel 3
#define ADC_CH4          0b10100111  // Channel 4
#define ADC_CH5          0b10101111  // Channel 5
#define ADC_CH6          0b10110111  // Channel 6
#define ADC_CH7          0b10111111  // Channel 7
#define ADC_CH8          0b11000111  // Channel 8
#define ADC_CH9          0b11001111  // Channel 9
#if !defined(__18F2455) && !defined(__18F2550) && \
    !defined(__18F2510) && !defined(__18F2520)
#define ADC_CH10         0b11010111  // Channel 10
#define ADC_CH11         0b11011111  // Channel 11
#define ADC_CH12         0b11100111  // Channel 12
#if !defined(__18F4455) && !defined(__18F4550) && \
    !defined(__18F4410) && !defined(__18F4420) && \
    !defined(__18F4510) && !defined(__18F4520)
#define ADC_CH13         0b11101111  // Channel 13
#define ADC_CH14         0b11110111  // Channel 14
#define ADC_CH15         0b11111111  // Channel 15
#endif

Es lo q e entendido, si estoy en un error s x mi ignorancia,jejejeje. Esto es en C18, en CCS no tengo ni idea.

akbo de hacer la prueba y si pongo CH_12 con 18f2550 definido, me da error!!!

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Cuánto tiempo requiere el conversor ADC
« Respuesta #22 en: 30 de Enero de 2008, 13:00:11 »
Ahhh, estas en microchip también jajaja.

Te paso lo que tengo en el adc.h del  C18 v2.14


#ifdef USE_OR_MASKS
/* ***** channel selection ***** */
#define ADC_CH0          0b00000000  // Channel 0
#define ADC_CH1          0b00001000  // Channel 1
#define ADC_CH2          0b00010000  // Channel 2
#define ADC_CH3          0b00011000  // Channel 3
#define ADC_CH4          0b00100000  // Channel 4
#define ADC_CH5          0b00101000  // Channel 5
#define ADC_CH6          0b00110000  // Channel 6
#define ADC_CH7          0b00111000  // Channel 7
#define ADC_CH8          0b01000000  // Channel 8
#define ADC_CH9          0b01001000  // Channel 9
#define ADC_CH10         0b01010000  // Channel 10
#define ADC_CH11         0b01011000  // Channel  11
#define ADC_CH12         0b01100000  // Channel 12
#define ADC_CH13         0b01101000  // Channel 13
#define ADC_CH14         0b01110000  // Channel 14
#define ADC_CH15         0b01111000  // Channel 15
#define ADC_CH_MASK      (~ADC_CH15)
//------------------------------------------------
#else
/* ***** channel selection ***** */
#define ADC_CH0          0b10000111  // Channel 0
#define ADC_CH1          0b10001111  // Channel 1
#define ADC_CH2          0b10010111  // Channel 2
#define ADC_CH3          0b10011111  // Channel 3
#define ADC_CH4          0b10100111  // Channel 4
#define ADC_CH5          0b10101111  // Channel 5
#define ADC_CH6          0b10110111  // Channel 6
#define ADC_CH7          0b10111111  // Channel 7
#define ADC_CH8          0b11000111  // Channel 8
#define ADC_CH9          0b11001111  // Channel 9
#define ADC_CH10         0b11010111  // Channel 10
#define ADC_CH11         0b11011111  // Channel 11
#define ADC_CH12         0b11100111  // Channel 12
#define ADC_CH13         0b11101111  // Channel 13
#define ADC_CH14         0b11110111  // Channel 14
#define ADC_CH15         0b11111111  // Channel 15
#endif
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Cuánto tiempo requiere el conversor ADC
« Respuesta #23 en: 05 de Marzo de 2008, 15:13:07 »
Es un problema del SIMULADOR (MPSIM) , no del CCS ni del C18.

Ya mismo voy a poner un ticket en microchip para que lo solucionen en sucesivas versiones.
Bueno, me acaban de responder luego de una pequeña lucha en que no podían compilar el proyecto que les había pasado en C18 ,a pesar que yo utilizaba las .h y demás del último C18 disponible.  Al parecer quienes atienden los reclamos no son expertos en C18, al menos no los que me tocaron a mí.

El problema lo vieron cuando les pasé el mismo problema pero en assembler básico.  Me informaron por el ticket de support que el tema ya pasó al sector de "development tools" y que lo van a ver de resolver.



Código assembler para reproducir el problema

Código: ASM
  1. List P=PIC18F2455
  2.         #include P18F2455.INC
  3.  
  4.         config DEBUG   = OFF
  5.         config FOSC    = HS          ; Osc section bits
  6.         config BORV    = 3
  7.         config BOR     = OFF
  8.         config WDT     = OFF
  9.               config PBADEN  = ON
  10.    
  11. #define a       0
  12. #define       bsr             1
  13.  
  14. gpr0          udata
  15. DELAY         res     3
  16.  
  17.  
  18.  
  19. VECTORS       code
  20.               goto          _STARTUP
  21.  
  22.  
  23. PROGRAMPAGE   code
  24. _STARTUP:
  25.         ;INIT A/D
  26.         movlw   0x00
  27.         movwf   ADCON0,a
  28.         movlw   0x02
  29.         movwf   ADCON1,a
  30.         movlw   0xA2
  31.         movwf   ADCON2,a
  32.         bsf     ADCON0,0,a    ;Turns ON AD Module
  33.  
  34.  
  35. _ADLOOP:        movlw   b'00110001'
  36.         movwf   ADCON0,a        ;Select CH12 - ADon
  37.         bcf     PIR1,ADIF,a
  38.        
  39.         movlw         .104
  40.         call          _DELAY
  41.  
  42.               ;Convert Analog Value
  43.               bsf           ADCON0,GO,a   ;Shows warning "Selected channel 12 is an invalid channel."
  44.  
  45. _WAITADCH12:  btfss         PIR1,ADIF,a
  46.               goto          _WAITADCH12
  47.              
  48.               nop
  49.               goto          _ADLOOP
  50.  
  51.  
  52.  
  53.  
  54. _DELAY:       movwf         DELAY+1,bsr
  55. _DELAYloop:
  56.               movlw         0xFF
  57.               movwf         DELAY+0,bsr
  58.              
  59.               decfsz        DELAY+0,f,bsr
  60.               goto          $-2
  61.              
  62.               decfsz        DELAY+1,f,bsr
  63.               goto          _DELAYloop
  64.              
  65.              
  66.              
  67.               return
  68.              
  69.               end


Linker File


// File: 18f2455.lkr
// Sample linker script for the PIC18F2455 processor

// Not intended for use with MPLAB C18.  For C18 projects,
// use the linker scripts provided with that product.

LIBPATH .

CODEPAGE   NAME=vectors    START=0x0            END=0x29           PROTECTED
CODEPAGE   NAME=page       START=0x2A           END=0x5FFF
CODEPAGE   NAME=idlocs     START=0x200000       END=0x200007       PROTECTED
CODEPAGE   NAME=config     START=0x300000       END=0x30000D       PROTECTED
CODEPAGE   NAME=devid      START=0x3FFFFE       END=0x3FFFFF       PROTECTED
CODEPAGE   NAME=eedata     START=0xF00000       END=0xF000FF       PROTECTED

ACCESSBANK NAME=accessram  START=0x0            END=0x5F
DATABANK   NAME=gpr0       START=0x60           END=0xFF
DATABANK   NAME=gpr1       START=0x100          END=0x1FF
DATABANK   NAME=gpr2       START=0x200          END=0x2FF
DATABANK   NAME=gpr3       START=0x300          END=0x3FF
DATABANK   NAME=usb4       START=0x400          END=0x4FF          PROTECTED
DATABANK   NAME=usb5       START=0x500          END=0x5FF          PROTECTED
DATABANK   NAME=usb6       START=0x600          END=0x6FF          PROTECTED
DATABANK   NAME=usb7       START=0x700          END=0x7FF          PROTECTED
ACCESSBANK NAME=accesssfr  START=0xF60          END=0xFFF          PROTECTED


SECTION    NAME=PROGRAMPAGE   ROM=page
SECTION    NAME=VECTORS       ROM=vectors



- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)


 

anything