Autor Tema: No envía info por serial  (Leído 2725 veces)

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

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
No envía info por serial
« en: 13 de Octubre de 2006, 18:20:02 »
Hola

Estoy probando el siguiente programa y no veo información en el hyperterminal. Nunca había programado el 18F452 en lenguaje C usando ADC y RS232 al mismo tiempo, no sé cual pueda ser la falla.

El programa tampoco funciona en Proteus.

Por favor, díganme que estoy haciendo mal.

Código: C
  1. //Convierte señal analógica en RA0
  2. //voltaje de referencia 5V
  3.  
  4. // Santiago Villafuerte
  5. // 13oct2006
  6.  
  7. #include "18f452.h"
  8.  
  9. #device adc=10 //Usa resolución de 10 bits
  10. #use delay(clock=4000000)
  11. #fuses xt,nowdt,noput,nobrownout,nolvp,noprotect,nodebug
  12.  
  13. #use rs232(baud=9600, xmit=PIN_c6, rcv=PIN_c7)
  14.  
  15. void main (void)
  16. {
  17.    int16 medicion; //directo del adc
  18.    float vopto; //conversión de voltajes
  19.    set_tris_a (0xff); //a es todo entrada
  20.  
  21.    setup_adc (adc_clock_div_32); //Enciende ADC
  22.    setup_adc_ports (RA0_RA1_RA3_ANALOG); //REF=VDD
  23.    set_adc_channel (0); //Elige canal a medir RA0
  24.  
  25.    while(1)
  26.       {
  27.       delay_ms(1000);
  28.  
  29.       medicion=read_adc(); //Hace conversión AD
  30.       delay_us(20);
  31.  
  32.       vopto=(float)(medicion*5)/1024; //convierte de binario a voltaje
  33.  
  34.       printf("Voltaje medido: %1.4f \n",vopto); //Saca texto por RS232
  35.       }
  36. }

Redpic: He puesto [c o d e = c] para poder verlo mejor.
« Última modificación: 13 de Octubre de 2006, 21:47:45 por RedPic »

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: No envía info por serial
« Respuesta #1 en: 14 de Octubre de 2006, 15:30:00 »
¿Puedes adjuntar el fichero de Proteus para probarlo?

Desconectado fastyx

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 353
Re: No envía info por serial
« Respuesta #2 en: 15 de Octubre de 2006, 12:35:42 »
prueba tonta : si escribis un printf tipo hola mundo antes del main , lo escribe en la terminal?( probalo...)

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: No envía info por serial
« Respuesta #3 en: 16 de Octubre de 2006, 12:33:19 »
Lamento informarles que cometí el error de no conectar tierra al puerto serial  :D :D :oops: :oops: :oops:

Gracias por su ayuda amigos  :)

El programa final es este...

Código: [Seleccionar]
//Convierte señal analógica en RA0
//voltaje de referencia 5V

// Santiago Villafuerte
// 13oct2006

#include "18f452.h"

#device adc=10 //Usa resolución de 10 bits
#use delay(clock=4000000)
#fuses xt,nowdt,noput,nobrownout,nolvp,noprotect,nodebug

#use rs232(baud=9600, xmit=PIN_c6, rcv=PIN_c7)
#use fast_io (a)
#use fast_io (c)

void main (void)
{
   int16 medicion; //directo del adc
   float vopto; //conversión de voltajes
   set_tris_a (0xff); //a es todo entrada
   
   setup_adc (adc_clock_div_32); //Enciende ADC
   setup_adc_ports (RA0_ANALOG); //REF=VDD
   set_adc_channel (0); //Elige canal a medir RA0
   delay_us(20);

   while(1)
      {
      delay_ms(1000);
      medicion=read_adc(); //Hace conversión AD

      vopto=(float)(medicion*5)/1024; //convierte de binario a voltaje
      printf("Voltaje medido: %f \n\r",vopto); //Saca texto por RS232
      }

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: No envía info por serial
« Respuesta #4 en: 16 de Octubre de 2006, 14:31:55 »
Ja, ja, ja  :D  :D  :D

Ánimo gran Santiago que todos cometemos errores.

(En mi último proyecto, el de las EEPROM gigantes, estuve varias horas perdido porque puse al revés los pines del I2:oops:)

« Última modificación: 16 de Octubre de 2006, 14:34:29 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

adbensi

  • Visitante
Re: No envía info por serial
« Respuesta #5 en: 20 de Octubre de 2006, 22:42:18 »
Ola!

 Estoy hacendo un projecto similar em C18, e my codigo es mui vezes maior rss
 CSS es uno compilador agradavel. :D Bueno Santiago;

 Una duda, se me permite citar o contenido de su post:
 Es possible rodar un codigo C18 en proteus como hacem con CSS?

Saludos!

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: No envía info por serial
« Respuesta #6 en: 21 de Octubre de 2006, 00:32:45 »
Hola!

Yo creo que sí se puede, hay que ver si C18 genera archivos .COFF para poder simular el pic con proteus.  :mrgreen:

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: No envía info por serial
« Respuesta #7 en: 21 de Octubre de 2006, 06:19:09 »
Aunque no te genere el archivo .coff siempre te queda la posibilidad de cargarle el archivo .hex.

Una cosa que no he entendido, ¿el código es mayor en CCS o en C18?


Suerte!!!
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: No envía info por serial
« Respuesta #8 en: 21 de Octubre de 2006, 15:14:25 »
Hey Vszener

Me parece que con el HEX no se puede depurar el programa, con el coff se puede ejecutar instrucción por instrucción en C.

adbensi

  • Visitante
Re: No envía info por serial
« Respuesta #9 en: 21 de Octubre de 2006, 15:42:07 »
Ola,

 Desculpa, tieno dificuldade para escreber en su lingua, mas queria comentar que codigo del  C18 >> CSS :)
 Tieno mui parametros para configurar en C18 que no existe en CSS, me parece que CSS es + gracefull.

 El codigo de migsantiago és clean, comparado com my codigo em C18.

 Una duda, tienes dificuldade con represetação del 1 LSB? En my aplicacion, o ultimo bit varia muito, ejemplo:
 5 vcc en AD0 resulta en: 1023, 1023, 1022, 1023, 1020, 1023... deberia ser somente 1023, mas aparece outros valores;

Saludos!

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: No envía info por serial
« Respuesta #10 en: 21 de Octubre de 2006, 16:16:01 »
Hola Abdensi

Sí tuve dificultades con el LSB del ADC, pero lo solucioné poniendo un capacitor de 1uF en paralelo a la terminal AD0 y en las terminales Vdd y Vss del PIC.  :mrgreen:

adbensi

  • Visitante
Re: No envía info por serial
« Respuesta #11 en: 22 de Octubre de 2006, 09:37:45 »
Hola migsantiago :D

 Tieno capacitores de tantalo (1u y 0.1u) en las patitas VCC y GND, pero no tieno nada en las patitas AD0 y GND;
 Estoy anexando una figura, en la figura tiene sentido hacer el circuito proposto?

Gracias por su ayuda :D

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: No envía info por serial
« Respuesta #12 en: 22 de Octubre de 2006, 12:58:19 »
Ahh, yo lo conecté así...


Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: No envía info por serial
« Respuesta #13 en: 22 de Octubre de 2006, 14:33:51 »
Sí, con el .hex símplemnte podremos 'correr' el programa pero no depurarlo, me refería que si carga el .hex podrá ver, sin depurarlo, si funciona el código o no.


Suerte!!! ;)
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte