He leído detenidamente la parte TWI de las hojas de datos de ATmega, pero todavía estoy confundido acerca de algunas cosas.
-
Si escribo
TWCR = (1 << TWINT);
, ¿eso escribirá un cero aTWIE
(y por lo tanto deshabilitará las interrupciones TWI)? Si escriboTWCR = (1 << TWINT) | (1 << TWIE);
, ¿eso escribirá un uno aTWIE
(y por lo tanto volverá a habilitar las interrupciones TWI)? -
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?
- ¿Es seguro asumir que el hardware TWI es el mismo para todos los microcontroladores de la serie ATmega?