TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: huntergti en 25 de Octubre de 2007, 15:11:56

Título: Ayuda conversor A/D
Publicado por: huntergti en 25 de Octubre de 2007, 15:11:56
Muy buenas. Escribi hace tiempo para que me ayudarais a confurar un lcd, gracias a vuestros consejo y en especial a un compañero de aqui (Leon_Pic) consegui que funcionara. De nuevo vuelvo a solictar vuestra ayuda. Avanzando con el proyecto me han cambiado el pic a un pic18f4550, se que es uno de los hermanos mayores y no he encontrado libros en español para que me ayuden a configurarlo. El caso es que necesito de ese pic las entradas A/D. He estado leyendo el datasheet y no me entero muy bien de como configurarlas, por eso pido vuestra ayuda en stas dos cosas.

1-- Alguien tiene un codigo de ejemplo que este explicado y me pueda ayudar como guia
2-- Hay otro pic que tb tenga la entrada A/D y que tenga material de documetacion en español

Muchas gracias por todo, espero que me podais ayudar en esto tanto como en lo otro :P
Título: Re: Ayuda conversor A/D
Publicado por: RedPic en 25 de Octubre de 2007, 15:24:13
¿En qué idioma trabajas? ¿PIC Basic? ¿Niple? ¿CCS C? ¿ C18? ¿ASM?
Título: Re: Ayuda conversor A/D
Publicado por: huntergti en 26 de Octubre de 2007, 13:37:58
Pues de momento todo lo que he trabajado en pic ha sido en asm, podeis ayudarme?
Título: Re: Ayuda conversor A/D
Publicado por: Leon Pic en 26 de Octubre de 2007, 13:49:44
Hola Antonio. Te cuento que vas a tener que estudiar para empezar con C.

Pasa por aca http://www.todopic.com.ar/foros/index.php?topic=18587.0 que yo también me estoy inclinado por el C.

Nos vemos.
Título: Re: Ayuda conversor A/D
Publicado por: PalitroqueZ en 26 de Octubre de 2007, 17:13:50
mira aquí (http://www.todopic.com.ar/foros/index.php?topic=15208.msg95016#msg95016).
Título: Re: Ayuda conversor A/D
Publicado por: huntergti en 29 de Octubre de 2007, 13:40:40
Quería deciros que muchas gracias y feliciatros por el foro tan bien documentado que teneis y las personas tan dispuestas a ayudar que lo formais. En estos dias estoy recopilando la amxima informacion para ver si consigo hacer funcionar el conversor A/D de mi PIC school. Si tengo alguna duda volveré a postear y seguro que conseguis ayudarme. Gracias
Título: Re: Ayuda conversor A/D
Publicado por: huntergti en 29 de Octubre de 2007, 14:39:34
Donde esta la cabecera 18f4550.h ??
Título: Re: Ayuda conversor A/D
Publicado por: Leon Pic en 29 de Octubre de 2007, 14:43:33
Hola Antonio. Este viene con el compilador de C. El compilador CCS, lo trae. Si no está, deberas actualizar el compilador que uses.

Nos vemos.
Título: Re: Ayuda conversor A/D
Publicado por: huntergti en 29 de Octubre de 2007, 18:33:57
Perdona mi ignorancia David. A ver si me qda claro, necesito linux o con el knoppix (que no hace falta instalarlo) me vale para compilar? Puedo compilar con el mplab?? Algun programa xa compilar c en windows?? Para compillar hay que escribir la tipica frase de gcc - ...? Si me podeis dar algunas indicaciones sobre como compilar y probar este codigo en el mplab. Gracias :)
Título: Re: Ayuda conversor A/D
Publicado por: Leon Pic en 29 de Octubre de 2007, 21:31:30
Hola Antonio. No te preocupes que yo empece sin saber nada tambien.

No hay que mezclar el Sistema Operativo con el compilador. Yo utilizo el compilador CCS, que el nombre coincide con el lenguaje CCS, asegurate de que el compilador corra bajo el sistema operativo que tienes. El compilador CCS es como el MPLAB.

Se puede compilar con el MPLAB pero deberas primero especificar el compilador para el lenguaje CCS. Lo explico en un videotutorial ve aqui (http://www.todopic.com.ar/foros/index.php?topic=18743.0)

Nos vemos.
Título: Re: Ayuda conversor A/D
Publicado por: huntergti en 30 de Octubre de 2007, 16:42:40
A ver si me aclaro. Mi version del mplab es la 7.21 y me he bajado CCS_PCWH el cual he instalado. Entonces hago lo del proyecto wizard pero no me aparece la opcion CCS C compiler for PIC12/14/16/18. Asi que marco otra que pone Byte craft assembler & c compiler. El problema es que lod e assembler & compiler de abajo tiene una cruz roja y me da error a la hora de compilar. Como isntalos los plugins que le faltan al mplab??
Título: Re: Ayuda conversor A/D
Publicado por: PalitroqueZ en 30 de Octubre de 2007, 17:25:45
primero tienes que instalar el plugin (http://www.ccsinfo.com/downloads/setup_mplab_plugin.exe) que proporciona ccs, luego si todo va bien no te debe aparecer las x rojas (señal que encontró los archivos necesarios) el resto es como lo venias haciendo.
Título: Re: Ayuda conversor A/D
Publicado por: huntergti en 31 de Octubre de 2007, 14:15:56
Muchas gracias, por fin consegui que funcionara el ejemplo de ese tutorial tan currado palitroquez. Ahora me surge ptra duda que no creo q sea posible, pero la dejo ahi. Existe algun programa que pase de .asm a .c ? Lo digo porque todo lo anteriormente que he escrito esta en .asm y para el pic 16f84a, lo del pic es facil de cambiar pero todo el codigo como podria cambiarlo??. Si quereis que os envie mi codigo y os explique que es lo que quiero hacer decirmelo.
Título: Re: Ayuda conversor A/D
Publicado por: PalitroqueZ en 31 de Octubre de 2007, 19:29:21
... Existe algun programa que pase de .asm a .c ? ...

hasta la fecha no tengo conocimiento de programa que tenga esa función, lo que queda es aprender c y así "traducir" las lineas de código.



mi perspectiva:

aprender c para micros es lo más fácil del mundo, solo con leer un tuto para conocer la sintaxis del c y otros detalles es suficiente para mudar los programas en asm, al principio cuesta porque uno tiene que pasarse el switche con el lenguaje, después que aprendes c, te costará volver al asm.  8)
Título: Re: Ayuda conversor A/D
Publicado por: huntergti en 01 de Noviembre de 2007, 08:05:31
En mi carrera tocamos muchos lenguajes (java, c, html...). Es decir yo de c sé, pero ciertas instrucciones que haceis aqui no las entiendo (ejemplo etup_adc_ports( AN0 || VSS_VDD ); o por donde esta la instruccion que hace que al poner output_a(0) ponga todo a cero). A ver si me consigo explicar, todo lo que vi del tutorial de aitopes lo conocia, pero luego veo el codigo de palitroquez y en ciertas cosas me quedo pillao, hay algun sitio que explique o de algunas nociones el codigo c aplicado a los pic??
Por cierto respecto a mi primer post, en vez de reprogramarlo todo podria poner las directivas #asm y #end asm no?
Título: Re: Ayuda conversor A/D
Publicado por: MGLSOFT en 01 de Noviembre de 2007, 08:55:31
En mi carrera tocamos muchos lenguajes (java, c, html...). Es decir yo de c sé, pero ciertas instrucciones que haceis aqui no las entiendo (ejemplo etup_adc_ports( AN0 || VSS_VDD ); o por donde esta la instruccion que hace que al poner output_a(0) ponga todo a cero). A ver si me consigo explicar, todo lo que vi del tutorial de aitopes lo conocia, pero luego veo el codigo de palitroquez y en ciertas cosas me quedo pillao, hay algun sitio que explique o de algunas nociones el codigo c aplicado a los pic??
Por cierto respecto a mi primer post, en vez de reprogramarlo todo podria poner las directivas #asm y #end asm no?
El ejemplo del que hablas en tu Post esta hecho en CCS C, uno de los lenguajes mas utilizados por los foristas, lo que te han pasado son las lineas necesarias para hacer lo mismo que has hecho en asm pero hecho en C.
Título: Re: Ayuda conversor A/D
Publicado por: huntergti en 01 de Noviembre de 2007, 15:24:38
Si eso lo entiendo que esta programado en c con menos lineas de codigo y hace lo mismo, pero mi duda es que en que cabecera estan las funciones que utiliza Palitroquez, porque la de 18f4550 la he visto y ahi no esta, por eso no entiendo ciertos trozos de codigo, proque invoca a funciones que no sé donde están
Título: Re: Ayuda conversor A/D
Publicado por: huntergti en 01 de Noviembre de 2007, 16:18:01
Buenas vuelvo a ser yo y mi torpeza. A ver que no me sale ya ni el ejemplo de palitroquez. Quiero hacerlo con 8 bits solo, por lo que meto en el codigo Device adc 8 y quito el de 10. Me creo un estimulo nuevo que es igual que el que habi salvo el 1 2 y 3 que tiene al principio, pero cuando simulo no muestra nada por el portb, a que se debe eso??. por cierto me suena lo de las justificaciones me podeis refrescar la memoria para que eran y por que en el ejemplo de palitroquez el device 8 tiene ya por defecto la justificacion a la derecha?? Gracias
Título: Re: Ayuda conversor A/D
Publicado por: PalitroqueZ en 01 de Noviembre de 2007, 18:15:45
Hola huntergti

Si eso lo entiendo que esta programado en c con menos lineas de codigo y hace lo mismo, pero mi duda es que en que cabecera estan las funciones que utiliza Palitroquez, porque la de 18f4550 la he visto y ahi no esta, por eso no entiendo ciertos trozos de codigo, proque invoca a funciones que no sé donde están

lo que sucede es que el ccs tiene funciones que son BUILT IN, quiere decir que son funciones cerradas, no se pueden ver (a menos  que sea asm del listado) y por eso no las consigue en los ejemplos que hice.

por ejemplo setup_adc_ports( AN0 || VSS_VDD ) como su nombre lo indica, configura varios parametros del ADC o CAD en español. existe un manual de referencia (http://www.ccsinfo.com/downloads/CReferenceManual.pdf) que ofrece el ccs donde se explica el uso de cada una de sus funciones buil in (que es la misma ayuda del compilador).

Buenas vuelvo a ser yo y mi torpeza. A ver que no me sale ya ni el ejemplo de palitroquez. Quiero hacerlo con 8 bits solo, por lo que meto en el codigo Device adc 8 y quito el de 10. Me creo un estimulo nuevo que es igual que el que habi salvo el 1 2 y 3 que tiene al principio, pero cuando simulo no muestra nada por el portb, a que se debe eso??. por cierto me suena lo de las justificaciones me podeis refrescar la memoria para que eran y por que en el ejemplo de palitroquez el device 8 tiene ya por defecto la justificacion a la derecha?? Gracias

debe ser el ejemplo (http://www.todopic.com.ar/foros/index.php?topic=15208.msg97194#msg97194) donde justifico en tiempo de ejecución, fijate que utilizo lineas de asm para poder hacerlo que es válido.

la justificación hace MSB o LSB los 10 bits que convierte el CAD en un registro de 16 bits ADRESH:ADRESL

Título: Re: Ayuda conversor A/D
Publicado por: huntergti en 02 de Noviembre de 2007, 15:23:12
Muchas gracias por ese manual, era justo lo que necesitaba para entender lo del código. Lo unico que no me queda nada claro es lo de la justificacion. A ver si consigo explicarme bien, quiero solo utilizar 8 bit de salida, es decir el rango de 0 a 255. El caso es que para eso utilizo el código tuyo de ejemplo y le modifico el device a 8 para que supuestamente cuando invoque la funcion read_adc() lea los 8 bits que quiero, ni uno mas ni uno menos, pero cuando simulo el programa, no me muestra por el portb lo que quiero. En serio que siento mucho hacer estas preguntas que para  vosotros seran evidencias, pero es que pasar del 16f84a a este se me ha quedado grande. He estado barajando la posibilidad de irme al 16f877 que supongo será más facil, pero ya que estoy si entiendo esto en el otro no me costará mucho pillarlo. Alguien sabe por qué no me muestra x el portb el estimulo que simulo?? por cierto aqui no se pregunta por el go_done?? Agradeceria una explicacion para tontos que eso es lo que vengo siendo :(
Título: Re: Ayuda conversor A/D
Publicado por: PalitroqueZ en 02 de Noviembre de 2007, 17:05:09
Hola huntergti

primero que nada, olvidate del ejemplo donde se modifica la justificación.

el ccs por defecto la trae a 8 bits (no hace falta declararla).

segundo, no creo que haga falta mudarse al 16F, como estas en C, la portabilidad nos ayuda mucho.

un ejemplo sencillo para tomar muestras a 8 bits (modificado de un 16f pal 18f)

Código: C
  1. #include <18f4550.h>  
  2. #fuses XTPLL,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,NOVREGEN
  3. #use delay(clock=48000000)
  4.  
  5. void main() {
  6.    int value;
  7.  
  8.    setup_port_a( ALL_ANALOG );
  9.    setup_adc( ADC_CLOCK_INTERNAL );
  10.    set_adc_channel( 0 );
  11.  
  12.    while(TRUE){
  13.       delay_us(30);
  14.        value = Read_ADC();
  15.        // falta que hacer con value
  16.    }
  17. }

Título: Re: Ayuda conversor A/D
Publicado por: Leon Pic en 02 de Noviembre de 2007, 20:56:02
Que buen manual PalitroqueZ. Lástima que no está en castellano y por ende me va a llevar más tiempo en estudiarlo.

Nos vemos.
Título: Re: Ayuda conversor A/D
Publicado por: huntergti en 03 de Noviembre de 2007, 10:46:29
Una vez más he vuelto a suspender el examen y tampoco se muy bien por que. Inclsudo dandomelo todo hecho no me sale, por lo cual dejo el código aquí para ver cual es mi clamoroso error.

#
#include <18f4550.h> 
#
#fuses XTPLL,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,NOVREGEN
#
#use delay(clock=48000000)
#
 
#
void main() {
#
  int value;
#
 
#
  setup_port_a( ALL_ANALOG );
#
  setup_adc( ADC_CLOCK_INTERNAL );
#
  set_adc_channel( 0 );
#
 
#
  while(TRUE){
#
     delay_us(30);
#
      value = Read_ADC();
#
      output_b(value);
  }
}
 como podeis ver es el codigo de palitroquez pero que yo lo saco por el puerto b. Bien creando un estimulo que tiene A0 AA y FF, tras una compilacion existosa simulo pero egggg, error, por el puerto b solo sale 20 y ahi se queda, no varía aunque cambie la señal. Peor es cuando lo cambio a puerto c o puerto d, siguen sin darme el resultado que quiero. Dejo el código aqui para que prueben ustedes y me digan que mi ordenador lo hace mal (cosa que dudo muchiiiiisimo) o que soy un ceporro (que es lo más probable). una vez más me despido dandóles las gracias por su eterna paciencia y su sabios consejos.
Título: Re: Ayuda conversor A/D
Publicado por: Nocturno en 03 de Noviembre de 2007, 16:52:44
¿No tendrías que poner el TRISA como entradas?
Título: Re: Ayuda conversor A/D
Publicado por: huntergti en 04 de Noviembre de 2007, 10:43:56
Ya he añadido la linea set_tris_a(0x01), pero sigo en las mismas. Alguien ha simulado mi codigo?? Se os ocurre en que fallo? Pensaba que hacer que solo lea 8 bits iba a hacerlo más facil pero por lo que veo me equivoco. HELP ME!! :?
Título: Re: Ayuda conversor A/D
Publicado por: huntergti en 05 de Noviembre de 2007, 06:29:35
Una de dos o me dan como caso perdido o están simulando mi código y les pasalo mismo que a mí. espero que sea lo segundo y asi saber que tengo a alguien que esta en mi mismo problema y me puede ayudar, porque me encuentro perdidisimo :?
Título: Re: Ayuda conversor A/D
Publicado por: jfh900 en 05 de Noviembre de 2007, 07:20:24
¿Con qué programas estas haciendo la simulación?

Un saludo
Título: Re: Ayuda conversor A/D
Publicado por: huntergti en 05 de Noviembre de 2007, 13:19:30
mplab ide v.7.21
Título: Re: Ayuda conversor A/D
Publicado por: huntergti en 06 de Noviembre de 2007, 16:06:08
Nadie puede ayudarme? Alguien ha conseguido hacer una simulacion utilizando solo 8 bits? Por favor diganme algo :-S
Título: Re: Ayuda conversor A/D
Publicado por: PalitroqueZ en 06 de Noviembre de 2007, 18:57:06
hola huntergti. simulé el programa, faltaba:

- en el fuse añade: NOPBADEN
(significa que el portb no es analógico)

- cambia la línea:

setup_port_a( ALL_ANALOG );

por:

 setup_adc_ports( AN0 || VSS_VDD );
 
el programa te queda así:

Código: C
  1. #include <18f4550.h>  
  2. #fuses XTPLL,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,NOVREGEN,NOPBADEN
  3. #use delay(clock=48000000)
  4.  
  5. void main() {
  6.   int value;
  7.   set_tris_b(0);
  8.   setup_adc_ports( AN0 || VSS_VDD );
  9.   setup_adc( ADC_CLOCK_INTERNAL );
  10.   set_adc_channel( 0 );
  11.   while(TRUE){
  12.      delay_us(30);
  13.       value = Read_ADC();
  14.       output_b(value);
  15.   }
  16. }
Título: Re: Ayuda conversor A/D
Publicado por: huntergti en 07 de Noviembre de 2007, 18:36:02
Buenas! He probado tu codigo Palitroquez pero sigue sin realizar lo que pretendia. De todas formas estos dias he estado mirando el dataheet del pic y ya conozco mejor el modulo A/D, aunque tu tutorial fue el inicio de todo,jeje. Bueno pues he repasado líne a linea (mediante el disassembly listing del mplab) para saber como se comportaba el pic y por que no me devolvia los valores que qeriia. Tambien he repasado las funciones del manuald e referencia de c y no encontraba ningun error, asi que decidi darmle mi toque introduciendo algunas lineas de codigo de la mejor forma que se, es decir a traves del lenguaje ensamblador. Despues de varias pruebas y muchos fallos y en el borde de la desesperacion consegui que funcionara. Aqui os adjunto el codigo por si alguien le sirve
Codigo 8 bit (http://www.megaupload.com/?d=80K04QFA)
Pero la cosa no queda aqui ya que salto una piedra para toparme con otra mas grande. Empiezo a programar el pic's school y... ejj error  en la direccion 0h, mi gozo en un pozo, a partir de aqui os hago otro llamamiento para ver si em podeis ayudar a que funcione ya que tampoco estoy muy seguro de que vaya a funcionar en el entrenador. Os adjunto tambien un manual del entrenador pra que veais sobre que trabajo. Muchas gracias, espero vuestras respuestas. Manul pic's school (http://www.megaupload.com/?d=Q4TQJ9F2)
Título: Re: Ayuda conversor A/D
Publicado por: PalitroqueZ en 07 de Noviembre de 2007, 18:46:59
debe ser que algo te falta huntergti, porque he simulado en mplab y en proteus exitosamente (sin mencionar que el programa original fué montado en protoboard). Sospecho que debe ser al momento de cargar los estimulos.

respecto a los adjunto que pusiste, te ruego que lo pongas en otro servidor, pués toda la vida el megachimbo ese me dice:


Desafortunadamente, todo el ancho de banda disponible está reservado a nuestros usuarios premium. En consecuencia, las descargas gratuítas no estarán disponibles en las siguientes 60 minutos.


un saludo y espero que puedas solucionar el problema.  8)
Título: Re: Ayuda conversor A/D
Publicado por: huntergti en 08 de Noviembre de 2007, 16:42:57
Puesto que no me deja adjuntar el codigo te lo dejo aqui escrito. el proteus no se me da bien manejarlo. El manual es muy grande si quieres que te lo pase dame tu correo. Lo que me interesa ahora es que mi codigo me funcione en el entrenador. Muchas gracias, un saludo
#include <18f4550.h> 
#DEVICE ADC=8
#fuses XTPLL,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,NOVREGEN,NOPBADEN
#use delay(clock=48000000)

void main() {
 
  int value;
   set_tris_a(0xFF);
#ASM
   movlw   0b10001111;
   movwf   0xfc0;
   movlw   0b00000011;
   movwf   0xfc2;
   movlw   0b00001110;
   movwf   0xfc1;
#ENDASM
  while(TRUE){
     delay_us(30);
  value=read_adc();
#ASM
   movff   0xfc3,0x06
#ENDASM

     output_b(value);
#ASM
   movlw   0b00000011;
   movwf   0xfc2;
#ENDASM
  }
}
Título: Re: Ayuda conversor A/D
Publicado por: PalitroqueZ en 09 de Noviembre de 2007, 15:03:25
Hola huntergti

anoche revisé tu programa, aquí van mis comentarios:

- está bien si quieres usar asm incrustado en c, (es la libertad que ofrece el compilador) pero no es necesario en el ejemplo. Según veo tus requerimientos son los siguientes:

    // justif. derecha, Tadq=2Tad, clock conversión osc RC
    // Vref- = Vss, Vref+ = Vdd, AN0 analog resto digital
    // selección AN0

-justificación a la derecha nop, es justificación a la izquierda para 8 bits, es decir, ADFM=0 y se hace con la directiva #DEVICE ADC=8

- las Vref y configuración del canal lo hace:  setup_adc_ports( AN0 || VSS_VDD );
- el reloj de conversión lo hace: setup_adc( ADC_CLOCK_INTERNAL );
- la selección del canal lo hace:  set_adc_channel( 0 );

como podras notar es lo mismo que el ejemplo que colgué mas arriba, ahora veamos su listado en asm

(http://img218.imageshack.us/img218/4474/vertm9.th.jpg) (http://img218.imageshack.us/my.php?image=vertm9.jpg)

tanto adcon0 como adcon1 estan corregidos, falta cambiar el tiempo de adquisición a 2Tad (que no se como hacerlo en c entonces hay que irse a asm)

el programa queda:

Código: C
  1. #include <18f4550.h>  
  2. #fuses XTPLL,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,NOVREGEN,NOPBADEN
  3. #use delay(clock=48000000)
  4. #byte ADCON2 = 0xFC0
  5.  
  6. void main() {
  7.   int value;
  8.   set_tris_b(0);
  9.   setup_adc_ports( AN0 || VSS_VDD );
  10.   setup_adc( ADC_CLOCK_INTERNAL );
  11.   set_adc_channel( 0 );
  12.   #asm
  13.     BSF ADCON2, 3  //ACQT0
  14.   #endasm
  15.   while(TRUE){
  16.      delay_us(30);
  17.       value = Read_ADC();
  18.       output_b(value);
  19.           value=0;
  20.   }
  21. }

hay una cosa que hay que aclarar, a lo mejor ya lo sabes, pero por si las moscas :)
al justificar a la izquierda desplazas 8 posiciones los 10 bits del CAD, entonces tomas los 8 MSB y el cálculo es como se saca para un CAD de 8 bits, es decir, para este programa 5/255*value

ejemplo, en los estimulos usé

A0
AA
3FF

estos son resultados de 10 bits

A0*5/1023 = 0,782V
AA*5/1023 = 0,83V
3FF*5/1023 = 5V

el resultado en mplab-sim para value = Read_ADC()

0x28 *5/255 = 0,784V
2A *5/255 = 0,823V
FF *5/255 = 5V

Título: Re: Ayuda conversor A/D
Publicado por: huntergti en 12 de Noviembre de 2007, 15:11:33
Muchas gracias Palitroquez, la aclaracion del final era la que me hacia falta porque yo pensaba que addrssh y addressl debian de sacar el mismo estimulo que entraba, es decir si entraba AA debia de sacar AA. La formula esa donde la has sacado, me suena de haberla visto en algun sitio pero no lo encuentro. Una duda más, mi intencion es que lo que lo que mida el conversor pasarlo a un programa que aumenta el peso, evidentemente antes de sumar el resultado tendre que aplicar la formula no?? Para que me entiendas, imaginate que tengo en la EEPROM 128 y entra una persona que crea un estimulo de 50h por lo que adressl y addressh no me devolveran 50h sino otro valor, para convertirlo en 50h tendre que aplicar la formula no?? En caso de que sea asi no seria mas facil aplicar mi codigo?
Por cierto he intentado probar tu codigo en el pic's school pero vuelve a saltar con el maldito error 0h. El caso es que he preparado el icprog como pone el manual, si me das permiso te envio a tu correo el manual por si me puedes echar un cable. Gracias una vez mas
Título: Re: Ayuda conversor A/D
Publicado por: PalitroqueZ en 13 de Noviembre de 2007, 12:22:59
Hola

la formula la puedes ver en la wikipic: ADC (http://www.micropic.es/components/com_mambowiki/index.php?title=ADC) (además que explica en detalle el funcionamiento del módulo)

... Una duda más, mi intencion es que lo que lo que mida el conversor pasarlo a un programa que aumenta el peso, evidentemente antes de sumar el resultado tendre que aplicar la formula no?? Para que me entiendas, imaginate que tengo en la EEPROM 128 y entra una persona que crea un estimulo de 50h por lo que adressl y addressh no me devolveran 50h sino otro valor, para convertirlo en 50h tendre que aplicar la formula no??...

claro, necesitas aplicar la formula para llevar el número de pasos del resultado al sistema decimal que es el que usamos nosotros. Hay varias formas: la mencionada anteriormente y también usando tablas.



Título: Re: Ayuda conversor A/D
Publicado por: huntergti en 27 de Noviembre de 2007, 15:30:00
Buenas a todos!! Después de todo este tiempo he conseguido ensamblar todo el código en mi proyecto y aunque es milagroso me funciona. Ante todo muchas gracias a todos por vuestra ayuda, pero aún me quedan pequeños detalles que debo depurar y alguna que otra duda. Una de esas dudas es la siguiente, puesto que al cad no le doy un uso muy elevado decidi utilizar mi código (que al final nadie me dijo si está bien) pero cuando le envíó un estímulo no me toma en primer estimulo a la primera, me explico, creo un estimulo con estas señales BB, FF, AA, por ejemplo. El caso que cuando realiza la primera medicion empieza por FF, la sigueinte medicion es AA y la tercera toma el BB. eso por que puede ser? Espero sus valiosas respuestas, muchas gracias
Título: Re: Ayuda conversor A/D
Publicado por: PalitroqueZ en 27 de Noviembre de 2007, 17:40:40
Hola huntergti

me alegra que lo hayas hecho andar, la primera vez no importa como funciona, así dá animos de seguir adelante, después vendran las preguntas de porque funciona  :D

...pero cuando le envíó un estímulo no me toma en primer estimulo a la primera, me explico, creo un estimulo con estas señales BB, FF, AA, por ejemplo. El caso que cuando realiza la primera medicion empieza por FF, la sigueinte medicion es AA y la tercera toma el BB. eso por que puede ser? Espero sus valiosas respuestas, muchas gracias

cuando termina la conversión, el mplab-sim deberá enviar al ADRES(H:L) lo que tengas en el archivo de las muestras. en el ejemplo que mencionas si tienes BB,FF,AA entonces el resultado de la conversión irá en ese orden.


...puesto que al cad no le doy un uso muy elevado decidi utilizar mi código (que al final nadie me dijo si está bien) ...

no se a que código te refieres, por lo que he visto has mostrado uno y ya estan las posibles correciones.

Título: Re: Ayuda conversor A/D
Publicado por: huntergti en 28 de Noviembre de 2007, 13:50:51
Perdón por mi torpeza, ahora si dejo el código definitivo (transformado a ensamblador). Probad eso que digo, que si el orden de estimulos es BB, FF, AA me sale primero FF siguiente AA y por ultimo BB. Si os pasa lo mismo decidmelo, que no cual es el motivo porque al fin y al cabo funciona. Gracias por tus respuestas Palitroquez.

; ZONA DE DATOS *********************************************************************

   LIST P=18F4550      ;directive to define processor
   #include <P18F4550.INC>   ;processor specific variable definitions
   CONFIG FOSC = XTPLL_XT, PLLDIV = 1,CPUDIV = OSC1_PLL2,USBDIV = 2,PWRT = ON,BOR = SOFT, VREGEN = OFF
   CONFIG   WDT = OFF ,WDTPS = 1,MCLRE = ON,PBADEN = OFF,LVP = OFF,XINST = OFF,DEBUG = OFF

   peso          equ      0x06


   ORG    0
   goto   Inicio         ; Programa principal

Inicio:   

   CLRF      TBLPTRU
   BCF       RCON,7
   CLRF      FSR0H
   CLRF      FSR0
   MOVF      ADCON1,W
   ANDLW     0XC0
   IORLW     0X0F
   MOVWF     ADCON1
   MOVLW     0X07
   MOVWF     CMCON
   MOVLW     0XFF
   MOVWF     TRISA   
   movlw   0b10001111;
   movwf   0xfc0;
   MOVLW     0X03
   movwf   0xfc2;
   movlw   0b00001110;
   MOVLW     0X0E
   movwf   0xfc1;

continua:

   call   Retardo_50micros
   BSF       0XFC2,1
repite:
   BTFSC     0XFC2,1
   BRA       repite
   MOVFF     0XFC4,0X06
   movff   0xfc3,0x06

   CLRF      0XF93
   MOVFF     06,0XF8A
   movlw   0b00000011;
   movwf   0xfc2;

   goto   continua

   INCLUDE   <RETARDOS.INC>

END


Título: Re: Ayuda conversor A/D
Publicado por: huntergti en 02 de Diciembre de 2007, 13:43:53
Alguien lo ha probado?Me gustaria que me dierais una respuesta por favor, gracias :-)
Título: Re: Ayuda conversor A/D
Publicado por: huntergti en 12 de Diciembre de 2007, 17:29:40
Perdon por ser tan pesado, pero vuelvo a repetir lo de arriba, alguien ha podido probarlo? le pasa lo mismo que a mi? en que puedo estar equivocado? Agradeceria mucho una respuesta ya que como todos sabeis cuando uno cree q un programa esta bien le cuesta mucho ver el defecto. Espero ansioso vuestras respuestas. Gracias
Título: Re: Ayuda conversor A/D
Publicado por: PalitroqueZ en 13 de Diciembre de 2007, 12:28:42
Hola huntergti. No te había respondido por motivo de otras ocupaciones, pruebo el código que dejaste y te aviso.

PD: he notado que falta la rutina de RETARDOS.INC aunque no seria inconveniente ya que usas 50 uS de retardo.