TODOPIC
Microcontroladores PIC => dsPIC => Mensaje iniciado por: azael007 en 09 de Noviembre de 2007, 18:49:25
-
Qué tal, saludo a todos los foreros, tengo una pregunta, estoy trabajando en un proyecto de fin de carrera, necesito usar unas tablas con valores inicializados, buscando a través de las aplicaciones que tiene microchip en su página he podido crear la tabla, sin embargo aun no doy con la razón por la cual siempre al iniciar con la declaración de la tabla tienen que especificar un valor de alineación (ejem .align 4 ), ¿alguien sabe para qué es esto y qué criterio se sigue para especificarlo aparte de que tiene que ser un múltiplo de base 2?
Muchas gracias de antemano.
Aqui pongo el ejemplo del que me estoy guiando:
******************************************************
.section .vocabulary, "x"
.align 4
.global SR_VOCABULARY
SR_VOCABULARY:
.pword 0x6e7520,0x636f6c,0x206b
.pword 0x6f6420,0x206e77
.pword 0x616820,0x20746c
.pword 0x696820,0x206867
.pword 0x6e6920
.pword 0x656c20,0x207466
.pword 0x6f6c20,0x2077
.pword 0x656d20,0x756964,0x206d
.pword 0x756f20,0x2074
.pword 0x697220,0x746867
.pword 0x707520
.pword 0x6e7520,0x6f6e6b,0x206e77
******************************************************
-
Hola, descubriste ya porque? Yo no tengo mucho idea tampoco, porque estoy empezando con los dspic también, pero consulta este documento en la web de microchip "DS70151a", en la página 75 tienes una breve explicación.
Yo creo que es un tema, de que como las direcciones son de 8 bits, pero el procesador trabaja con 16bits, es para alinear los datos y que no quede un dato colgando entre dos direcciones de memoria... ejemplo:
quieres guardar el valor 0xFFFF si no lo alineas te podía quedar así (lo siguiente que voy a poner corresponderían a 4 celdas del mapa de memoria, cada celda de 8 bits, pero claro, el procesador trabaja con 16 bits; con lo que en realidad son 2 celdas):
0xXX 0xFF
0xFF 0xXX
mientras que al alinearlo quedaría:
0xFF 0xFF bien alineado y no colgando entre dos "celdas" de 16 bits. Aunque ya te digo que no estoy seguro, pero por ahí van los tiros.
Un saludo! :-/