Hallo allemaal,

Ik probeer met een PIC16F877 via SPI data te verzenden. Nu heb ik een experimenteerbord (EasyPIC 5) waar een hoop LED-jes op zitten, waarmee ik de status van het programma controleer. Ik heb het programma zover gekregen, dat het, zoals het nu lijkt geen botsingen meer heeft en gewoon lekker achter elkaar data verzend (dit om te testen of er data uit komt). Maar als ik een logic analyzer erop aan sluit, meet ik helemaal niks.

Heeft iemand enig idee of ik wat verkeerd doe?
Ik programmeer in assembly en het programma ziet er als volgt uit:


#include	<P16F877.INC>

			errorlevel 	0,-302
			errorlevel 	0,-219

			CBLOCK H'20'
							
			ENDC

;----- Reset

			ORG	H'0'	

RESET		        MOVLW	B'00000000'		; SPI, instellingen: poort UIT, clock = Fosc/4 = 2 Mbps, CKP = 0 (low level)
			MOVWF	SSPCON

			MOVLW	B'00000000'		; SPI, interrupts op 0
			MOVWF	PIR1

			MOVLW	B'11000000'		; SPI, interrupts AAN
			MOVWF	INTCON

			BSF	STATUS,RP0		; Bank 1

			MOVLW	B'11010111'		; Optie's instellen
			MOVWF	OPTION_REG

			MOVLW	B'01000000'		; SPI, instellingen: CKE = 1 (rising edge)
			MOVWF	SSPSTAT

			MOVLW	B'00001000'		; SPI, interrupts AAN
			MOVWF	PIE1
	
			MOVLW	B'00000000'		; Poort B, LED
			MOVWF	TRISB

			MOVLW	B'00000000'		; Poort C, SPI
			MOVWF	TRISC

			BCF	STATUS,RP0		; Bank 0

			CLRF	PORTB			; LED uit

;----- Program

			BSF	SSPCON,SSPEN	        ; SPI aanzetten

BEGIN		        MOVF	SSPBUF,W		; Register leegmaken

			BSF	PORTB,D'0'		; LED 0	
			BCF	PORTB,D'1'		; LED 1 uit			
	
WRITE		        MOVLW	B'01100101'		; Versturen
			MOVWF	SSPBUF

			NOP

			BSF	PORTB,D'1'		; LED 1
			BCF	PORTB,D'2'		; LED 2 uit

			BTFSC	SSPCON,WCOL		; Botsing?
			GOTO	EMPTY

			BSF	PORTB,D'2'		; LED 2
			BCF	PORTB,D'0'		; LED 0 uit

			GOTO	BEGIN

EMPTY		        MOVF	SSPBUF,W		; Register leegmaken
			BCF	SSPCON,WCOL		; Interrupt WCOL verwijderen

			BSF	PORTB,D'7'		; LED 7

			GOTO	WRITE			; Terug

			END 

Edit: De PIC is in master mode

Wat probeer je er mee aan te sturen, en waarom staat de SPI interrupt aan terwijl je helemaal geen ISR hebt?
(In master mode valt er ook weinig te interrupten...)

Op 13 december 2009 16:27:35 schreef Arco:
Wat probeer je er mee aan te sturen, en waarom staat de SPI interrupt aan terwijl je helemaal geen ISR hebt?
(In master mode valt er ook weinig te interrupten...)

Ik weet dat er in master mode weinig te interrupten valt. En ik probeer gewoon data eruit te krijgen. Het is uiteindelijk de bedoeling om een LED-driver aan te sturen, maar dan moet ik uiteraard wel data eruit krijgen. Dus die byte die ik probeer te versturen, heeft verder geen betekenis. Puur om te testen.