This shows you the differences between two versions of the page.
pm:lab:lab5-2022 [2023/04/11 17:12] alexandru.predescu [8. Exerciții] |
pm:lab:lab5-2022 [2023/04/13 15:16] (current) liliana.grigoriu [5. Configurări de SPI] |
||
---|---|---|---|
Line 46: | Line 46: | ||
Clock Polarity (CPOL) configurează starea IDLE a ceasului. După cum putem vedea, pentru CPOL = 0, când ceasul este inactiv valoarea semnalului SCLK este pe LOW, iar pentru CPOL = 1 ceasul inactiv are SCLK pe HIGH. | Clock Polarity (CPOL) configurează starea IDLE a ceasului. După cum putem vedea, pentru CPOL = 0, când ceasul este inactiv valoarea semnalului SCLK este pe LOW, iar pentru CPOL = 1 ceasul inactiv are SCLK pe HIGH. | ||
- | Clock Phase (CPHA) configurează momentul când datele sunt generate pe ieșire și când datele sunt citite la intrare. Pe una dintre fronturile ceasului (de întâmpinare sau de sfârșit) datele sunt generate, iar pe cealaltă datele sunt citite. | + | Clock Phase (CPHA) configurează momentul când datele sunt generate pe ieșire și când datele sunt citite la intrare. Pe unul dintre fronturile ceasului (de întâmpinare sau de sfârșit) datele sunt generate, iar pe cealaltă datele sunt citite. |
Frontul de pornire al ceasului este prima schimbare de ceas. Ex: Pentru un ceas care merge de la LOW la HIGH și înapoi la LOW, frontul de întâmpinare este frontul crescător(tranziția de la LOW la HIGH). | Frontul de pornire al ceasului este prima schimbare de ceas. Ex: Pentru un ceas care merge de la LOW la HIGH și înapoi la LOW, frontul de întâmpinare este frontul crescător(tranziția de la LOW la HIGH). | ||
Line 114: | Line 114: | ||
<code> | <code> | ||
/* set master mode */ | /* set master mode */ | ||
- | SPCR0 |= (1 << MSTR0); | + | SPCR |= (1 << MSTR); |
/* set prescaler 16 */ | /* set prescaler 16 */ | ||
- | SPCR0 |= (1 << SPR00); | + | SPCR |= (1 << SPR); |
/* enable SPI */ | /* enable SPI */ | ||
- | SPCR0 |= (1 << SPE0); | + | SPCR |= (1 << SPE); |
</code> | </code> | ||
Line 126: | Line 126: | ||
<code> | <code> | ||
/* Start transmission */ | /* Start transmission */ | ||
- | SPDR0 = data; | + | SPDR = data; |
/* Wait for transmission complete */ | /* Wait for transmission complete */ | ||
- | while(!(SPSR0 & (1 << SPIF0))); | + | while(!(SPSR & (1 << SPIF))); |
</code> | </code> | ||
Line 135: | Line 135: | ||
<code> | <code> | ||
/* Wait for reception complete */ | /* Wait for reception complete */ | ||
- | while(!(SPSR0 & (1 << SPIF0))); | + | while(!(SPSR & (1 << SPIF))); |
/* Return Data Register */ | /* Return Data Register */ | ||
- | return SPDR0; | + | return SPDR; |
</code> | </code> | ||