AVR SPI
Detre Ors Hunor
detre at ludens.elte.hu
Thu Sep 30 13:24:51 CEST 2004
> Amugy a masodik a jo megoldas.
>
> SPI-t inicializaltad?
Igen. Úgy gondolom jól.
A program:
;---------------------------------------------------------------------------
---------
rcall SPI_MasterInit
;----------------------------------
Fociklus --------------------------------------
Loop:
rcall FLASH_Status_Read
out Port_OUT, SPI_in ; Rakjuk ki a státuszt a portra
rjmp Loop ;...újrakezdi
;-----------------------------------
Rutinok ---------------------------------------
FLASH_Status_Read:
cbi DDR_SPI, DD_SS ;Select Slave
ldi SPI_out, 0xD7 ;Irok SPI-re
rcall SPI_MasterTX ;Parancs ki
in SPI_in, SPDR ;Olvasok az SPI-rol
ret
;-----------------------------------
Rutinok ---------------------------------------
SPI_MasterInit:
; OUTPUT: MOSI, SCK, SLAVES_ELECT, RESET, WRITE_PROTECT, INPUT: MISO
ldi Temp,
(1<<DD_SS)|(1<<DD_SCK)|(1<<DD_MOSI)|(0<<DD_MISO)|(1<<DD_WP)|(1<<DD_RESET)
out DDR_SPI, Temp
ldi Temp, (1<<DD_RESET)|(0<<DD_WP)|(0<<DD_SS) ; /Reset=1, WP=0, /SS=0
out PORT_SPI, Temp
ldi Temp, (1<<SPE)|(1<<MSTR)|(1<<SPR1)|(1<<SPR0) ; Enable SPI, Master,
set clock rate fck/128
out SPCR, Temp
ret
SPI_MasterTX: ; Start transmission of data (SPI out)
out SPDR, SPI_out
Wait_Transmit: ; Wait for transmission complete
sbis SPSR, SPIF
rjmp Wait_Transmit
ret
More information about the Elektro
mailing list