Atmega16 SPI komunikace

S

sanatdutta

Guest
ahoj Jsem nový programování, jsem měl pochybnosti
v SPI při psaní char jsme jen zkopírovat char na SPDR odpor

Při čtení jsme se opět kopírovat char na SPDR pak znovu zkopírovat do nějaké proměnné.

Prosím, pomozte: cry:

 
neplatné WriteByteSPI (unsigned char byte)
(

SPDR = byte; / / Load byte na datový registr
while (! (SPSR & (1 <<SPIF))); / / Počkat na dokončení přenosu

)

char ReadByteSPI (char addr)
(
SPDR = addr; / / Load byte se datový registr
while (! (SPSR & (1 <<SPIF))); / / Počkat na dokončení přenosu
addr = SPDR;
návrat addr;
)
v komunikaci UART pro odesílání dat jsme čekat, až UDRE odpor je nastaven pak zkopírovat proměnnou UDR tímto způsobem vysílá data, zatímco příjem budeme čekat až RX je nastaven pak zkopírujte UDR proměnné.

zatímco v SPI příjem se liší

 
V UART máme 2 registry pro vysílání a příjem.

Zatímco v SPI přijatá data bude také uložen v SPDR sám.

Nandhu

 
v UART máme jen jeden odpor UDR
přijatých a předaných údajů oba jsou kopírovány do UDR pouze

 
Stále nemůžu přijít na to, vaše pochybnosti.Aby bylo zřejmé, jaký problém se díváte s SPI

To vám může pomoci pochopit, o SPI

http://elm-chan.org/docs/spi_e.html

Nandhu

 
sanatdutta napsal:

v komunikaci UART pro odesílání dat jsme počkat až UDRE odpor je nastaven pak zkopírovat proměnnou UDR tímto způsobem vysílá údaje, zatímco příjem budeme čekat do RX je nastaven pak zkopírujte UDR proměnné.

zatímco v SPI příjem se liší
 
Nezapomeňte!v SPI a zároveň je to odesílání byte, to čte byte ...

takže byste mohli udělat obousměrnou komunikaci, a to zasláním byte a čekat, až je to transmited a číst obdržené byte v tomtéž leteckém rejstříku ... (to je vaše ReadSPI podprogram)!

Pokud jste první poslat byte (váš kód bude fungovat!) a po tom, měli byste dávat impulsy číst byte, můžete "figurína write" a číst SPI rejstříku po tom ..(Jako posílání číst = ReadSPI (0xFF)).

 
Kurenai_ryu napsal:

Za to, že byste měli dávat impulsy číst byte, můžete "figurína write" a číst SPI rejstříku po tomto ..
(Jako posílání číst = ReadSPI (0xFF)).
 

Welcome to EDABoard.com

Sponsor

Back
Top