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