Autor Tema: Como mostrar resultado de conversion  (Leído 2383 veces)

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

Desconectado fergar2

  • PIC10
  • *
  • Mensajes: 27
Como mostrar resultado de conversion
« 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.

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Como mostrar resultado de conversion
« Respuesta #1 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

Desconectado fergar2

  • PIC10
  • *
  • Mensajes: 27
RE: Como mostrar resultado de conversion
« Respuesta #2 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("");
}
   

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Como mostrar resultado de conversion
« Respuesta #3 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

Desconectado fergar2

  • PIC10
  • *
  • Mensajes: 27
RE: Como mostrar resultado de conversion
« Respuesta #4 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

Desconectado lu6vg

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 313
RE: Como mostrar resultado de conversion
« Respuesta #5 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

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Como mostrar resultado de conversion
« Respuesta #6 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

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Como mostrar resultado de conversion
« Respuesta #7 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

Desconectado fergar2

  • PIC10
  • *
  • Mensajes: 27
RE: Como mostrar resultado de conversion
« Respuesta #8 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.


 

anything