Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

26/04/2014 #1


problema al mostrar en display
la pregunta es porque al mostrar en el display el valor no me muestra lo que deberia..
estoy trabajando con PBP, el codigo de interes es muy sencillo aca lo anexo, asumiendo que A es igual a 21, el resultado de X en decimal seria aproximadamente 8, pero en el display cuando lo veo en proteus me sale es 255, y asi varie el valor de A me sigue mostrando el valor de 255 en realidad no se que esta pasando..

BUCLE:
adcin 0, A
CONT = A
X = ((4681/10000)*CONT)-(17739/10000)
LCDOUT $fe,2,"Disparo a "
lcdout $fe,$c0, " ",DEC X, " "
goto BUCLE
26/04/2014 #2

Avatar de ByAxel

Si se considera que el PBP no trabaja con valores decimales y solo con enteros, se tiene:

4681/10000 = 0.46, PBP no redondea nada, el resultado es cero.
17739/10000 = 1.7, PBP no redondea nada, rel resultado es uno.

El resultado de tal operación es -1 y como tampoco puede representar valores negativos... -1 es $FF, por eso al mostrar en el LCD siempre es 255.

Cambia tu método o descarga la librería para trabajar con números de punto flotante en Melabs, página de PBP, Ojo que puede ocupar mucha memoria.

PD: PBP3 no se si tenga alguna novedad respecto a eso.
26/04/2014 #3


hm ya pero para el caso que propuse entonces no deberia de arrojar 8 como valor ?
el resultado con X = 21 es 8,0562
26/04/2014 #4

Avatar de ByAxel

Abre la calculadora de Windows, cambialo a modo Programador... ese modo es como computa normalmente el PBP... intenta dividir esos números y veráz que el resultado no es para nada decimal, tampoco redondea...

4681/10000 = 0 en calculadora y PBP
17739/10000 = 1 en calculadora y PBP

X = ((0)*CONT)-(1) ' Sea cual sea el valor de CONT, el resultado es -1 o para el PBP es 255.
26/04/2014 #5


..... ya entiendo, que problematico necesitaba esa operacion para una conversion
26/04/2014 #6

Avatar de ByAxel

Podrias hacer una tabla en Excel con todos los posibles valores del ADC que correspondan al resultado que buscas. Por ejemplo.

ADC - Resultado
20 - 8
25 - 9
etc...

Utilizar los valores de 10 en 10 por ejemplo de la tabla y colocar en PBP... con LookUp por ejemplo, cada vez que se lee el ADC se puede comparar y buscar con LookUp el más aproximado...

Es un forma, igual no se que intentas hacer y tal vez se puede recurrir a otros métodos a nivel matemático y solo trabajando con enteros... bueno...

Saludos.
26/04/2014 #7


gracias por tu respuesta ya veo la forma en la que dices de hacerlo con la funcion lookup, serian 100 valores pero es una solucion !
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.