TODOPIC

Simuladores, editores de PCB, etc => Simuladores de circuitos => Mensaje iniciado por: fergar2 en 29 de Octubre de 2003, 04:19:00

Título: Como mostrar resultado de conversion
Publicado por: fergar2 en 29 de Octubre de 2003, 04:19:00
Hola!!.
Sigo con la conversion A/D y ya he logrado q funcione.
Ahora estoy probando a mostrar el resultado por la VTERM pero al tratarse de un float no se como mandarselo para q me lo muestre.
Alguien ha probado algo parecido?.
Muchas gracias por anticipado.
Título: RE: Como mostrar resultado de conversion
Publicado por: pocher en 29 de Octubre de 2003, 11:26:00
Yo sí que he probado en C de CCS, a enviar una variable float al terminal virtual y va bien. Si quieres pon tu código y lo revisamos.

Un saludo
Título: RE: Como mostrar resultado de conversion
Publicado por: fergar2 en 30 de Octubre de 2003, 03:18:00
Hola, estoy usando el compilador PICC de Hi Tech, este es el codigo, la parte q contiene los comentarios es en la q esta el problema.
Gracias por la ayuda.


#include <pic.h>
#include <stdio.h>
#include "delay.h"
#include "adc.h"

#define   BYTE   unsigned char
#define INT_16   short

void rs232_init() {
   
   RC6 = 0;            // RC6 = TX Salida
   RC7 = 1;            // RC7= RX Entrada
   
   SPBRG = 0x81;          

   TXSTA = 0b00100100;         // Configuración RS232 transmisión:
                  //   modo asíncrono, 8 bits, alta velocidad (K=16) a 19200
   RCSTA = 0b10010000;         // Configuración RS232 recepción: 8 bits, recepción continua         
}

void rs232_send(unsigned char data) {
   TXREG = data;
   while (!TRMT);
}


void main()
{   

   BYTE canal,bajo,alto;
   INT_16 valor;
   float res;

   rs232_init();    /*Inicializacion de la USART */


   TRISB=0x00;    /*Todos los pines del puerto B (los 8) son de salida para seleccion de los MUX*/
   TRISA0=1;
   TRISA2=1;
   TRISA3=1;
   ADCON1=0b11001100;
   PORTB=0x00;
      
   canal=0x00;
   
   adc_read(canal);      //Funcion que realiza la conversion A/D
   
   DelayUs(2);
   bajo=ADRESL;
   alto=ADRESH;
   valor=ADRESH;
   valor=(valor<<8)+ADRESL;
   res=valor*0.004883;      //Lo multiplico por 0.004883 pq estoy usando un Vref+ de 5v (5/1024=0.004483)
               //y asi conozco el valor de entrada analogico.
   
   rs232_send(res);      //El problema es q al enviar la USART los datos byte a byte no se como
               //enviarle un dato q ocupe mas de un byte para q la terminal lo reconozca
               //como un float o un int.
   
   
   //rs232_send(bajo);
   //rs232_send(alto);
   //rs232_send(valor);
   //rs232_send("");
}
   
Título: RE: Como mostrar resultado de conversion
Publicado por: pocher en 30 de Octubre de 2003, 11:58:00
Con Hitech he trabajado muy poco. En CCS yo lo que hago es definir:

long medidaADC;     //Para 8 bits con int sería suficiente

float const resoluc=5.0/256.0;    //Conversión de 8 bits

float valor;

.
.
.

... y este valor lo puedes mandar a la LCD o al terminal.

Un saludo
Título: RE: Como mostrar resultado de conversion
Publicado por: fergar2 en 03 de Noviembre de 2003, 05:31:00
Hola pocher.
Lo primero gracias por tu ayuda pero no entiendo como se puede mandar un float a la VTERM.
La rutina que uso yo solo manda 1 byte cada vez, existe alguna en CCS que envie un float de manera que la terminal lo interprete como tal??, en ese caso me podrias indicar donde encontrarla??.
Un saludo.

Fernando
Título: RE: Como mostrar resultado de conversion
Publicado por: lu6vg en 03 de Noviembre de 2003, 07:30:00
Hola

En el C de CCS usas la instruccion printf para las salidas por el puerto serier del pic por lo que

printf("%f",variable);

te manda un valor float por el puerto serie.

Una manera de evitar usar variables float es usar milivolts por lo que en lugar de tener 5/1024 (o 5/256) tendrias 5000/1024 (o 5000/256) lo que te da valores enteros y asi ahorrar memoria.

Saludos

Luis
Título: RE: Como mostrar resultado de conversion
Publicado por: pocher en 03 de Noviembre de 2003, 09:55:00
De acuerdo con lo que dice lu6vg. Por si quieres enviarlo también a la LCD aquí hay un ejemplo:  http://miarroba.com/foros/ver.php?temaid=1062827&foroid=46840

Un saludo
Título: RE: Como mostrar resultado de conversion
Publicado por: pocher en 03 de Noviembre de 2003, 09:59:00
Si no te aclaras con el envio del resultado de la conversión al terminal, te pongo el programa entero.

Un saludo
Título: RE: Como mostrar resultado de conversion
Publicado por: fergar2 en 05 de Noviembre de 2003, 04:32:00
Gracias por las respuestas, no se me habia ocurrido el usar milivoltios, es lo q tiene ser novato .
Un saludo.