AVR ATmega TWI Preguntas sobre hardware

0

He leído detenidamente la parte TWI de las hojas de datos de ATmega, pero todavía estoy confundido acerca de algunas cosas.

  1. Si escribo TWCR = (1 << TWINT); , ¿eso escribirá un cero a TWIE (y por lo tanto deshabilitará las interrupciones TWI)? Si escribo TWCR = (1 << TWINT) | (1 << TWIE); , ¿eso escribirá un uno a TWIE (y por lo tanto volverá a habilitar las interrupciones TWI)?

  2. En la hoja de datos más reciente de ATmega1284p, por ejemplo, la frecuencia de SCL se calcula de la siguiente manera:

    \ $ SCL = \ frac {F \ _CPU} {16 \ + \ (2 \ * \ TWBR \ * \ PreScaler)} \ $

    Sin embargo, en este documento: enlace La frecuencia de SCL se calcula de la siguiente manera:

    \ $ SCL = \ frac {F \ _CPU} {16 \ + \ (2 \ * \ TWBR) \ - \ (4 ^ {TWBR})} \ $

    e incluso he visto otras versiones en otros sitios web. ¿Ha cambiado la fórmula? ¿Cuál es la correcta?

  3. ¿Es seguro asumir que el hardware TWI es el mismo para todos los microcontroladores de la serie ATmega?
pregunta HaLailah HaZeh

2 respuestas

0
  1. TWCR puede ser un registro confuso, especialmente considerando que TWINT se borra escribiendo un uno (no un cero) y que el ORing (1 << TWINT) a TWCR no se borrará TWINT . Sin embargo, TWIE se comporta como un bit normal y, por lo tanto, como se esperaba, TWCR = (1 << TWINT); borrará tanto TWIE como TWINT y TWCR = (1 << TWINT) | (1 << TWIE); borrará TWINT y establecerá TWIE .

  2. Dado que todas las hojas de datos recientes tienen la primera fórmula, sospecho que es la correcta.

  3. Como señaló dannyf, el hardware TWI es probablemente el mismo para todos los chips de la serie ATmega.

respondido por el HaLailah HaZeh
0
  1. No es necesario establecer el bit de habilitación una vez establecido, a menos que por alguna razón lo hayas borrado.

  2. La segunda fórmula se ve mal. Me gustaría ir con la hoja de datos.

  3. Parece que el módulo NXP i2c con licencia de atmel: los ejemplos de código son idénticos a los de lpc210x. Pero revise la hoja de datos para estar seguro.

respondido por el dannyf

Lea otras preguntas en las etiquetas