Hallo,
ich versuche mich gerade an einer SPI-Kommunikation. Dazu benutze ich den Hardwaretreiber SPIDriver. (aktueller Compiler wird verwendet)
Nun habe ich ein Verständnisproblem mit dem Assemblercode, den der Compiler erzeugt.
So wie ich den Code verstehe, wird beim Lesen mit SPIinpByte immer zuerst ein Nullbyte gesendet, in SYSTEM._SPIputget. Habeich das richtig verstanden? Ist das denn richtig so?
Wenn ja, bitte warum?
Viele Grüße aus dem herbstlichem Petershagen!
Rolf
; ============ Library ============
SYSTEM._SPIputget:
OUT SPDR,_ACCA
.EXECOFF
SYSTEM._L0172:
IN _ACCA, SPSR
SBRS _ACCA, 7
RJMP SYSTEM._L0172
.EXECON
IN _ACCA, SPDR
RET
SYSTEM.SPIoutByte:
CBI PORTB, 4
RCALL SYSTEM._SPIputget
SBI PORTB, 4
RET
SYSTEM.SPIinpByte:
CBI PORTB, 4
CLR _ACCA
RCALL SYSTEM._SPIputget
SBI PORTB, 4
RET
ich versuche mich gerade an einer SPI-Kommunikation. Dazu benutze ich den Hardwaretreiber SPIDriver. (aktueller Compiler wird verwendet)
Nun habe ich ein Verständnisproblem mit dem Assemblercode, den der Compiler erzeugt.
So wie ich den Code verstehe, wird beim Lesen mit SPIinpByte immer zuerst ein Nullbyte gesendet, in SYSTEM._SPIputget. Habeich das richtig verstanden? Ist das denn richtig so?
Wenn ja, bitte warum?
Viele Grüße aus dem herbstlichem Petershagen!
Rolf
Code
; ============ Library ============
SYSTEM._SPIputget:
OUT SPDR,_ACCA
.EXECOFF
SYSTEM._L0172:
IN _ACCA, SPSR
SBRS _ACCA, 7
RJMP SYSTEM._L0172
.EXECON
IN _ACCA, SPDR
RET
SYSTEM.SPIoutByte:
CBI PORTB, 4
RCALL SYSTEM._SPIputget
SBI PORTB, 4
RET
SYSTEM.SPIinpByte:
CBI PORTB, 4
CLR _ACCA
RCALL SYSTEM._SPIputget
SBI PORTB, 4
RET