Autor Tema: Sobre TM0DH : TM0DL , valores hexadecimales  (Leído 1771 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado marvicdigital

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 311
Sobre TM0DH : TM0DL , valores hexadecimales
« en: 23 de Septiembre de 2009, 09:14:48 »
Cordial saludo.
Bueno la formula para hallar los valores de estos 2 registros TM0DH:TM0DL la formula es la siguiente:


TM0DH:TM0DL= (Ts x Freq.Osc)/(4 x Pr escaldor)

Donde:

Ts= Tiempo en segundos
Freq.Osc = Frecuencia oscilador
Pr Escalador =Valor de el pre-escalador

Por ejemplo para un segundo, con pre-escalador 64 y un oscilador de 4MHZ sería:

TM0DH:TM0DL= (1s x 4 x 10^6)/(4 x 64) = 15625

Hasta acá nada nuevo 8), el problema viene que el resultado es decimal, y debo convertirlo a hexadecimal para llevarlo a los registros TM0DH:TM0DL; que en este ejemplo sería:

15625(10) = 3D09 (16) 

TM0DH:3D
TM0DL:09

La pregunta es, como hago para convertir el valor decimal a hexadecimal y separar este valor en los 2 pares hexadecimales para ser llevados a los registros?

Estoy buscando información en Freescale, pero con tanto documento me he perdido y no ogro encontrar esta respuesta.

Mil gracias por la ayuda.

Saludos

Desconectado al303576RELOADED

  • PIC10
  • *
  • Mensajes: 11
Re: Sobre TM0DH : TM0DL , valores hexadecimales
« Respuesta #1 en: 02 de Octubre de 2009, 16:04:27 »
Mira lo que puedes hacer es hacer una union como la siguiente.
union  myDataName
{
    word 16bitword;
    struct
    {
             byte HigtPart;
            byte LowPart;
    }separatedRegisters;
}

y accesar a los reseultados individualmente y asignarlos
myDataName.HigtPart= parte alta;
myDataName.LowPArt= parte baja;


Pero bueno no dices para que quieres hacer esto, los valores los puedes meter directamente en los registros si ya los precalculaste o quieeres que esto se haga en run time?

TMODL=0xAB;
TMODH=0xCD;

?? da mas informacion para poderte ayudar.




 

anything