Kód: Vybrat vše
unsigned char SPI_Write(unsigned char dataout)
{
SPDR = dataout; //zapis do prenosoveho registru
while(!(SPSR & (1<<SPIF))); //cekani na dokonceni prenaseni
PORTB = (1<<PB2); //SS pin log 0
_delay_us(1); //zpozdeni 1us
PORTB = ~(1<<PB2); //SS pin log 1
}A teď mám pár otázek. PB2 je pin slave select, čili když chci zapisovat musím jej nastavit na log 0. Proč se toto děje až po zápisu do přenosového registru SPDR? Proč mi nefunguje, když PB2 nastavím na log 0 již před samotným zápisem do registru? Dále proč je tam to zpoždění 1us a proč to bez něj někdy funguje a někdy ne? Je to tak, že SPDR registr funguje jako nějaká cache do zařízení se data odešlou až po nastavení SS na log0? Za každou odpověď díky.


