Autor Tema: tengo problemas con las operaciones matemáticas del proton  (Leído 2133 veces)

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

Desconectado sandra

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 374
tengo problemas con las operaciones matemáticas del proton
« en: 02 de Abril de 2007, 15:24:33 »
Hola pues eso tengo problemas con las operaciones  matemáticas del proton ds(metal) unas las realiza correctamente y otras me dan como resultado cero cuando el resultado esperado debería ser distinto e seguido las recomendaciones para instalar el proton ds instalarlo en la raíz de c utilizar nombres de archivo cortos, la carpeta de proyectos esta también en c y utilizo nombres de archivo cortos, también tengo instalado el mpsam versión 4.10 según dicen que si no esta instalado no compila pero yo e probado  quitando el mpsam y si lo ase pero por no dejar esta instalado.
Ase tiempo que utilizo el proton ds y la verdad es que no me había dado problemas asta ahora que me veo en la necesidad de realizar operaciones matemáticas y no tengo ni puta idea de que esta pasando espero me puedan  echar una manita para ver que esta pasando por que unas operaciones si las ase y otras no para darme a entender mejor les marco  en el programa donde tengo problemas.

Nota1, me chute las rutinas para la conversión de la temperatura y altura del amigo navaismo espero no te molestes.
Nota2, el programa esta en borrador por lo cual hay muchas burradas por depurar como setear los bits de configuración correctamente, los registros tris y port entre otras cosas
Así que no sean muy duros con migo que todavía no termino la tarea.






Device 18F252
XTAL=20

'******   configuracion puerto serie fisico  *****

HSERIAL_BAUD=9600
HSERIAL_RCSTA=%10010000
HSERIAL_TXSTA=%00100000
HSERIAL_CLEAR=On

'****** configuracion puerto analogico/digital ***

Declare ADIN_RES 8
Declare ADIN_TAD frc
Declare adin_delay 50
TRISA=%00000111
ADCON1=%00000000

'============ configuracion bus 12c por programa =========

SCL_PIN = PORTC.3
SDA_PIN = PORTC.4



'========= variables temperatura =========

Dim samples As Word
Dim sample As Byte
Dim temp As Byte
Dim mv As Float
Dim temp2 As Float
samples=0

'========variables presion =======

Dim vadc As Byte
Dim vout As Float
Dim p As Float
Dim c  As Float
Dim b  As Float
Dim i  As Float
Dim VSS As Float
Symbol P_0 = 1013.3   
'======== variables altura =========

Dim hp As Float
Dim defp As Float
Dim loga As Float
Dim m1 As Float
Dim m2 As Float
Dim h As Float

'=========== variables luxometro ========

Dim vadc2 As Byte
Dim vout2 As Float
Dim mvolts As Float
Dim uwats  As Float

'======== variables rtc  =======
Dim SEGUNDOS As Byte
Dim MINUTOS As Byte
Dim HORA As Byte
Dim dia As Byte
Dim fecha As Byte
Dim mes As Byte
Dim ano As Byte

'======== inicializar rtc   ======

BusOut %11010000,7,[%00010000] 'int externa 1hz
BusOut %11010000,0,[0] 'inicialisa ds1
DelayMS 40

'=========  hora actual del pc =============

 If PORTB.0=0 Then
 
   DelayMS 40            ' Delay for 100ms for debounce
   
   
   SEGUNDOS=HRSin            ' Read the Seconds serially
   
   MINUTOS=HRSin            ' Read the Minutes serially
   
   HORA=HRSin            ' Read the Hours serially
   
   fecha=HRSin            ' Read the Date serially
   
   mes=HRSin            ' Read the Month serially
   
   ano=HRSin            ' Read the Year serially
   
   
   SetTime:
    BusOut $D0,$00,[SEGUNDOS,MINUTOS,HORA,dia,fecha,mes,ano] ' write time
 
    EndIf
   

'============= rutina principal =================

While 1=1
High PORTC.0
GoSub temperatura
GoSub precion_altimetro
GoSub luxometro
GoSub GetTime
HRSOut "time"," ", HEX2 HORA,":",HEX2 MINUTOS,":",HEX2 SEGUNDOS," ","data"," ",HEX2, fecha ,"/",HEX2,mes,"/",HEX2 ano ,10,13
HRSOut 10,13
HRSOut "temperatura="," ",DEC2 temp2,"c"," ","precion="," ","kpa",Dec p," ","haltura=",Dec h,"mts"," ","LUXOMETRO=",DEC2 uwats,"uw",DEC2 mvolts ,DEC2 vout2 ,10,13
Low PORTC.0
DelayMS 250
Wend
' ************ mcp9700  **********************
temperatura:


For sample=1 To 20
temp=ADIn 0
samples=samples+temp
DelayMS 250
Next sample

temp=samples/20
mv=(temp * .0195-.400)
temp2=mv/.0195
'HRSOUT "temperatura="," ",dec2 temp2,"C" ,10,13
samples=0
Return

'************** precion altimetro mpx4115as   ****

                 


   precion_altimetro:

   
   
    vadc = ADIn 1
    vout =(vadc * 5)/256 '<----- resultado ok
   
    precion:          'get_Presion: <-----est es la rutina original
    c = .475           'c = .095 * 5 <------ esta operacion da 0 cuando deveria dar .475             
    b =  .045           'b = .009 * 5 <------ esta operacion da 0 cuando deveria dar .045                                                          [0 por lo cual tuve que realizar_
    p = (vout + c)/(b)   'P = (vout + c)/(b)                                                 
    '====== altura =====                                                                         
    hp = p * 10
    defp = P_0 / hp
    loga = Log defp
    m1 = 8430.153 * loga
    m2 = (loga * .095)+1
    h  = m1 / m2 
    Return
   
    luxometro:
    vadc2=ADIn 2
    vout2=(vadc2 * 5)/256 '<------- a qui si meda el resultado correcto
    mvolts =(vout2/1000)'<--------- esta operacio me da como resultado 0 (cero)
    uwats =(mvolts/19)  '<--------- esta operacion me da como resultado 0
    Return   
       
   
   '================== leer la hora actual =============
   
   GetTime:

    BusIn $D1,$00,[ SEGUNDOS,MINUTOS,HORA,dia,fecha,mes,ano]
     
    Return

   
   
   

                             

« Última modificación: 02 de Abril de 2007, 17:35:11 por sandra »
El pesimista se queja del viento
El optimista espera que cambie
El realista ajusta las velas

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: tengo problemas con las operaciones matemáticas del proton
« Respuesta #1 en: 02 de Abril de 2007, 15:49:20 »
Pues parece ser un Bug del programa ya que tus variables si estan en FLOAT. y si lo intentas con el proton normal el "steel"
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado Marioguillote

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1926
    • Servisystem
Re: tengo problemas con las operaciones matemáticas del proton
« Respuesta #2 en: 02 de Abril de 2007, 20:35:24 »
Hola gente !

Espero hacerme entender en el concepto.

Y si trabajas con número más grandes ? No con decimales. Sería hacer una redundancia, pero sería hacer trabajar al Protón con valores más altos y no en decimales tan bajos, después volvés a convertirlos.

Te explico el concepto, a ver que les parece.

Multiplicas todo por 100 en una línea y le haces creer a Protón que está trabajando con números más grandes. Por ejemplo en vez de hacer :

b = .009 * 5
Podrías hacer :

b1 = .9 * 5  ó sino hacer  b1 = 9 * 5 y luego vas a tu valor deseado con b = b1/100 ó b = b1/1000

Se entiende la idea ? Espero que sí.

Saludos
Mario

Desconectado sandra

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 374
Re: tengo problemas con las operaciones matemáticas del proton
« Respuesta #3 en: 03 de Abril de 2007, 21:10:21 »
Hola como siempre agradezco a todos sus respuestas en esta ocasión no me que da mas que  pedir disculpas y retirarme :oops: ( así se dice por acá entre colegas cuando cometemos un error  tan obvio una tontería, estupidez o babosada como lo conozcan)
El problema no estaba en que el protón no me realizara la operación sino en la forma de visualizar el resultado si el resultado esperado es r= .0045 y yo ago esto
Print  dec2 r es muy obvio que en el displey boy a visualizar  r=0.00  la forma correcta de hacerlo seria print dec4 r y en el displey boy a visualizar r=.0045 ese era todo mi problema  aunque podría jurar que ya lo había probado así y me daba  .0000 en fin tal vez los duendes de la electrónica me jugaron una mala pasada  o tal vez . los tragos de tequila :mrgreen:
El pesimista se queja del viento
El optimista espera que cambie
El realista ajusta las velas


 

anything