ATmega16u4 y ATmega32u4 i2c error en el modelo Proteus AVR?

1

Estoy intentando usar i2c con ATmega16u4 / ATmega32u4 en Proteus (versión 8.5 SP1) y en mi código i2c la siguiente línea de código cuelga la MCU:

while(wait && (TWI_MTX == twi_state)){

Nunca pasa esto. Haciendo un poco de depuración, verifiqué que TWCR nunca cambia en la simulación de Proteus, por lo que es imposible habilitar i2c, que es la causa de este bloqueo.

Intenté configurarlo directamente, con TWCR = 0xFF solo para pruebas, pero el valor de registro nunca cambia, siempre es 0 durante toda la simulación. Si hago lo mismo en ATmega328p, el registro cambia con éxito.

Si subo el código a un procesador físico, funciona bien. Si uso el mismo código en la simulación ATmega328p en Proteus, también funciona.

Esto no es un problema de resistencia o comunicación. Tengo 4.7 k pull ups digitales conectados, pero el problema es que, en primer lugar, los pines nunca cambian de estado, porque no puedo hacer que la MCU configure los registros de habilitación i2c.

Esto me parece un problema o un error del modelo Proteus. ¿Alguien ha conseguido que ATmega32u4 funcione con i2c en la simulación de Proteus?

    
pregunta cyberponk

1 respuesta

0
  

Esto me parece un problema o error del modelo Proteus.

otra posibilidad es que el archivo de encabezado no tuviera la definición correcta para TWCR. verifique contra la hoja de datos.

    
respondido por el dannyf

Lea otras preguntas en las etiquetas