Este es mi primer momento de trabajar con un microcontrolador "más grande", ATmega128. Hasta ahora he trabajado con ATmega328, ATmega8, etc.
Al leer la hoja de datos, no entendí un par de puntos
-
Ese conjunto de instrucciones AVR puede admitir un máximo de 64 ubicaciones de E / S. ¿Porqué es eso? ¿El conjunto de instrucciones AVR toma 6 bits para una ubicación de E / S?
-
Para acomodar la E / S extendida en ATmega128 (160 más), estas 160 ubicaciones se asignaron a la SRAM interna justo después de las 64 existentes. Entonces, de hecho, de la SRAM de 4KB que proporciona ATmega128, 160 son ocupadas por estas ubicaciones de E / S extendidas. ¿Qué sucede si se establece el fusible de compatibilidad ATmega103 (programado de forma predeterminada)? ¿Tengo acceso a estas 160 ubicaciones entonces?
-
¿Cómo accedo exactamente a estas ubicaciones extendidas? La hoja de datos solicita utilizar LD / LDS / LDD y ST / STS / STD. Cualquier ejemplo de esto como nunca he usado el montaje antes. Estoy un poco confundido sobre cómo se integrará esto en mi flujo de trabajo de código C? Digamos que necesito acceder a DDRF y PORTF. ¿Necesitaría saber su dirección (en SRAM) por adelantado o hay alguna macro en avr-gcc?
¡Cualquier ejemplo de código o enlace para leer y entender arriba sería genial!