Donde MOSI se activa bajo o alto

Envío y recepción de datos //Función para enviar y recibir datos tanto para el maestro como para el esclavo

unsigned char spi_tranceiver (unsigned char data)

    {
        // Load data into the buffer
        SPDR = data;

        //Wait until transmission complete
        while(!(SPSR & (1<<SPIF) ));

        // Return received data
        return(SPDR);
    }

¿Qué parte establece el pin (MOSI) alto y bajo para transferir bits? Todo lo que veo es la espera del bit de interrupción (SPIF).

¿AVR MCU maneja automáticamente todas las rutinas con respecto a los pines pusling simplemente configurando el bit SPE en 1?

"Para enviar datos, cárguelos en el registro de datos SPI (SPDR) y luego espere hasta que se establezca el indicador SPIF. Cuando se establece el indicador SPIF, los datos que se transmitirán ya se transmiten y se reemplazan por los datos recibidos. Entonces, simplemente devuelva el valor del registro de datos SPI (SPDR) para recibir datos".

Otra línea de la misma publicación: no espero que mcu comience a transmitir tan pronto como ingrese datos en el registro de datos

"No espero que mcu comience a transmitir tan pronto como coloque datos en el registro de datos" bueno, eso es exactamente lo que sucede, si las cosas están configuradas correctamente.

Respuestas (2)

El sistema tiene un búfer simple en la dirección de transmisión y un búfer doble en la dirección de recepción. Esto significa que los bytes que se transmitirán no se pueden escribir en el registro de datos SPI antes de que se complete todo el ciclo de turno. Sin embargo, al recibir datos, se debe leer un carácter recibido del registro de datos SPI antes de que el siguiente carácter se haya desplazado por completo. De lo contrario, se perderá el primer byte.

En el modo SPI Slave, la lógica de control muestreará la señal entrante del pin SCK. Para garantizar el muestreo correcto de la señal del reloj, los períodos mínimos alto y bajo deben ser más largos que dos ciclos de reloj de la CPU.

Cuando el SPI está habilitado, la dirección de datos de los pines MOSI, MISO, SCK y SS se anula de acuerdo con la siguiente tabla. Para obtener más detalles sobre las anulaciones automáticas de puertos, consulte la descripción del puerto IO. Tabla 23-1. Pasador SPI

http://ww1.microchip.com/downloads/en/devicedoc/atmel-42735-8-bit-avr-microcontroller-atmega328-328p_datasheet.pdf

"¿Qué parte establece el pin (MOSI) alto y bajo para transferir bits".

Esta línea:

SPDR = data;

envía los datos.

Dios mío, una pregunta tan antigua, pero sí, ya me di cuenta :)