fiuba-labo-de-micro-miercoles / 2019-2c-primer-proyecto-mati1297

2019-2c-primer-proyecto-mati1297 created by GitHub Classroom
0 stars 0 forks source link

Ejercicios de flip flop JK y promedio de "Hola mundo" #1

Open mati1297 opened 5 years ago

mati1297 commented 5 years ago

Hola, ya subí el ejercicio del flip flop JK de la clase pasada y el que dieron de tarea (promedio de Hola mundo). Tengo una duda respecto al de la tarea (aunque lo pude hacer), como los datos se guardaban en la memoria de programa ustedes hicieron una aclaración sobre el puntero, pero no pude entenderla bien, me fije en la teorica y lo que hace es, cuando carga el puntero, shiftea uno a la izquierda, es decir: LDI ZH, HIGH(DATA<<1) LDI ZL, LOW(DATA<<1) hice esto y funcionó bien, pero no entiendo porqué.

Les dejo el link a la carpeta https://github.com/fiuba-labo-de-micro-miercoles/2019-2c-primer-proyecto-mati1297/tree/master/ejercicios

El micro con el que lo probé en el simulador es un ATmega328p a 8MHz

Muchas gracias Saludos

rarias commented 5 years ago

Respecto al puntero Z imagen Intento una expliación: Z apunta a un byte (numera los bytes de la memoria flash), en tanto que la etiqueta de la tabla en flash, por ejemplo (en segmento de código) TABLA_FLASH: .DB dato1, dato2, etc numera los WORDS de memoria (y 1 WORD = 2 BYTES). O sea en la dirección TABLA_FLASH están dato1 dato2 concatenados como un bloque de 16 bits. En la dirección TABLA_FLASH+1, están los 2 bytes dato3 y dato4 como un bloque de 16 bits, y así sucesivamente. Z se usa como puntero (iterador, numerador) para acceder a 1 byte, por lo que necesita la posición de dato1 contada en bytes (no en words), por simple aritmética, TABLA_FLASH*2 (= TABLA_FLASH<<1 = TABLA_FLASH+TABLA_FLASH) es la posición del byte dato1 contando byte por byte de la memoria flash. Si no te queda claro, lo intentamos de vuelta.

rarias commented 5 years ago

Respecto al ejercicio del flip-flop, hice comentarios en https://github.com/fiuba-labo-de-micro-miercoles/2019-2c-primer-proyecto-mati1297/blob/master/ejercicios/flipflop_jk.asm Podrías hacerlo mucho más fácil, y lo que no está bien es que leés 3 veces el pin B (con una vez es suficiente). De hecho, uno quisiera, que ni bien sube el clock, se muestrean J y K en simultáneo, para emular lo mejor posible el comportamiento de un flip-flop real.

rarias commented 5 years ago

En cuanto al promedio con signo, optimicé tu código en https://github.com/fiuba-labo-de-micro-miercoles/2019-2c-primer-proyecto-mati1297/blob/master/ejercicios/promedio_holamundo.asm