TODOPIC
Otros Microcontroladores / Dispositivos programables => Microcontroladores ARM => Mensaje iniciado por: marvicdigital 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
-
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.