Danke für die Antwort
mh.. ich versteh meinen fehler nicht. ich bekomme im Master immer das als ergebnis, was ich auch rausgeschickt hab? mein Master arbeitet mit 12mhz der slave mit 8mhz, ist das oki?
beim Slave hab ich mich gegen die SS=enable-Variante entschieden weil ich nicht weiß wie man abfragt ob eben genau der Pic gemeint ist,wird das automatisch erkannt?.
Bis jetzt hab ich das einfach in der Schleife gemacht.
das sind die config-Sachen
;SPI initialisieren
bsf STATUS,RP0 ;Bank 1
bcf SSPSTAT,BF ;Bufferfull bit clear
bcf SSPSTAT,CKE
bcf SSPSTAT,SMP
bcf STATUS,RP0 ;Bank0
;SPI Master mode ,clock speed
bcf SSPCON,SSPM0 ;SPI Master mode,clock = OSC/4 (62,5 KHZ)
bcf SSPCON,SSPM1
bcf SSPCON,SSPM2
bcf SSPCON,SSPM3
hier steht für den slave
bsf SSPCON,SSPM0
bcf SSPCON,SSPM1
bsf SSPCON,SSPM2
bcf SSPCON,SSPM3
der rest ist wieder gleich
bsf SSPCON,CKP
bcf SSPCON,SSPOV ;kein überlauf bit
bcf SSPCON,WCOL ;
bsf SSPCON,SSPEN ;SPI mode eingeschaltet
hier der Master-code für diese stelle
SPI_Routine
bcf Slave88 ;Pic16F88 einschalten mit #define Slave88 PORTC,2 definiert
movlw B'00000000' ;Tacho_0
movwf SSPBUF ;
call BF_Bit
movwf Tacho_0
movlw B'00000000' ;Tacho_1
movwf SSPBUF
call BF_Bit
movwf Tacho_1
movlw B'00000000' ;Dreh_H
movwf SSPBUF ;
call BF_Bit
movwf Dreh_H
movlw B'00000000' ;Dreh_L
movwf SSPBUF ;
call BF_Bit
movwf Dreh_L ;
bsf Slave88 ;PIC16F88 ausschalten
return
;BF Bit Kontrollieren
BF_Bit
BF1
bsf STATUS,RP0 ;Bank 1
btfss SSPSTAT,BF
goto BF1
bcf STATUS,RP0 ;Bank0
movfw SSPBUF
return
und hier der slave code
; Intrupt servic routine
Int_serv
btfss PIR1,SSPIF ;kam es vom SPI
goto Signal
; auf Master übertragen
btfss Slave88 ;Pic16F88 gemeint?
goto SPI_run
bsf STATUS,RP0 ;Bank 1
bcf SSPSTAT,BF
bcf STATUS,RP0 ;Bank 0
bcf PIR1,3 ;Interrupt-Bit löschen
goto Int_end
SPI_run
btfsc Kontrolle,0
goto Kon_2
Kon_1 bsf Kontrolle,0
movfw D'15' ;Fester Wert als test
movwf SSPBUF
goto Int_end
Kon_2 btfsc Kontrolle,1
goto Kon_3
bsf Kontrolle,1
movfw D'16' ;Fester Wert als test
movwf SSPBUF
goto Int_end
Kon_3 btfsc Kontrolle,2
goto Kon_4
bsf Kontrolle,2
movfw D'17' ;Fester Wert als test
movwf SSPBUF
goto Int_end
Kon_4
movfw D'18' ;Fester Wert als test
movwf SSPBUF
clrf Kontrolle
goto Int_end
Signal
Unterprogramm......
Int_end
swapf s_copy, w ; STATUS zurück
movwf STATUS
swapf w_copy, f ; w zurück mit flags
swapf w_copy, w
bsf INTCON, GIE ; enable Interupt
retfie
Ich versteh auch noch nich ganz wie der Slave gleichzeitig mit dem Master senden kann, weil eigendlich möcht ich doch erst daten vom master zum slave übertragen,vom slave auswerten lassen und dann die entsprechenden Daten wieder zum master senden.
vielen dank.