Autor Tema: Ayuda conversor A/D  (Leído 11400 veces)

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

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Ayuda conversor A/D
« Respuesta #15 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.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado huntergti

  • PIC12
  • **
  • Mensajes: 62
Re: Ayuda conversor A/D
« Respuesta #16 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

Desconectado huntergti

  • PIC12
  • **
  • Mensajes: 62
Re: Ayuda conversor A/D
« Respuesta #17 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

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Ayuda conversor A/D
« Respuesta #18 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 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 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

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado huntergti

  • PIC12
  • **
  • Mensajes: 62
Re: Ayuda conversor A/D
« Respuesta #19 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 :(

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Ayuda conversor A/D
« Respuesta #20 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. }

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: Ayuda conversor A/D
« Respuesta #21 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.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado huntergti

  • PIC12
  • **
  • Mensajes: 62
Re: Ayuda conversor A/D
« Respuesta #22 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.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Ayuda conversor A/D
« Respuesta #23 en: 03 de Noviembre de 2007, 16:52:44 »
¿No tendrías que poner el TRISA como entradas?

Desconectado huntergti

  • PIC12
  • **
  • Mensajes: 62
Re: Ayuda conversor A/D
« Respuesta #24 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!! :?

Desconectado huntergti

  • PIC12
  • **
  • Mensajes: 62
Re: Ayuda conversor A/D
« Respuesta #25 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 :?

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Ayuda conversor A/D
« Respuesta #26 en: 05 de Noviembre de 2007, 07:20:24 »
¿Con qué programas estas haciendo la simulación?

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado huntergti

  • PIC12
  • **
  • Mensajes: 62
Re: Ayuda conversor A/D
« Respuesta #27 en: 05 de Noviembre de 2007, 13:19:30 »
mplab ide v.7.21

Desconectado huntergti

  • PIC12
  • **
  • Mensajes: 62
Re: Ayuda conversor A/D
« Respuesta #28 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

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Ayuda conversor A/D
« Respuesta #29 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. }
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek


 

anything