Cuando se configura el SPI como maestro (MSTR en SPCR está a set),
el usuario puede determinar la dirección del pin SS'. Si SS' se configura como una
salida, el pin es un pin de salida general que no afecta al sistema SPI. Si SS' se
configura como una entrada, debe mantenerse a nivel alto para asegurar el funcionamiento
SPI del maestro. Si el pin SS' se maneja a nivel bajo por la circuitería periférica
cuando el SPI se configura como maestro con el pin SS' definido como una entrada, el
sistema SPI interpreta esto como otro maestro que selecciona el SPI como un esclavo y
empieza a enviarle datos. Para evitar la disputa en el bus, el sistema SPI realiza las
acciones siguientes:
1. El bit MSTR en SPCR es borrado y el sistema SPI se convierte en
esclavo. Como resultado de que el SPI se vuelva esclavo, los pines MOSI y SCK se vuelven
entradas.
2. El flag SPIF en SPSR está a set, y si la interrupción de SPI se
habilita y el bit I en SREG está a set, la rutina de interrupción se ejecutará.
Así, cuando se usa el transmisor SPI de manejo de interrupciones en
modo maestro y existe una posibilidad que SS' se utilice a nivel bajo, la interrupción
siempre debe verificar que el bit MSTR todavía está a set. Una vez que el bit MSTR ha
sido borrado por un esclavo seleccionado, debe ponerse a set por el usuario para
repermitirle el modo maestro de SPI.
Cuando el SPI se configura como esclavo, el pin SS' siempre es una
entrada. Cuando SS' se mantiene a nivel bajo, el SPI se activa y MISO se vuelve una salida
si se configuró así por el usuario. Los demás pines son entradas. Cuando SS' se maneja
a nivel alto, todos los pines son entradas y el SPI es pasivo, lo que significa que no
recibirá datos entrantes. Observa que la lógica de SPI se reseteará una vez el pin SS'
se ponga a nivel alto. Si el pin SS' es puesto a nivel alto durante una transmisión, el
SPI dejará de enviar y recibir inmediatamente y ambos datos recibidos y transmitidos
deben ser considerados como perdidos. |