spi 32 bit haberleşme sorunu

Başlatan 10f200.h, 18 Şubat 2019, 12:38:55

10f200.h

Arkadaşlar merhaba
18f46k22 (master) ve 16f1826 (slave ) kullanarak spi ile haberleşme yapmaya çalışıyorum.
timer1 den harici olarak aldığım pulse ları spi üzerinden mastera gönderdiğimde beklediğim datadan çok farklı değerler alıyorum.
master
void main()
{
   setup_spi(SPI_MASTER | SPI_MODE_0 | SPI_CLK_DIV_4 );
   output_high(cs);
while(1)
{
output_low(cs);
okunan1=spi_read(4);
output_high(cs);
delay_ms(10);

output_low(cs);
okunan2=spi_read(5);
output_high(cs);
delay_ms(10);

output_low(cs);
okunan3=spi_read(6);
output_high(cs);
delay_ms(10);

output_low(cs);
okunan4=spi_read(7);
output_high(cs);
delay_ms(10);


digital1=make16(okunan4,okunan3);
digital2=make16(okunan2,okunan1);
}
}


slave

void main()
{
   
   setup_timer_1(T1_EXTERNAL  | T1_DIV_BY_1);
   setup_timer_0(T0_EXT_L_TO_H | T0_DIV_1);
    set_timer1(0);
    set_timer0(0);
setup_spi(SPI_SLAVE | SPI_MODE_0);
enable_interrupts(INT_TIMER1);
enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);
while(TRUE)
{
    timer1_say=get_timer1();
    timer0_say=get_timer0();
    sonuc = (timer1_say + (timer1_overf*65536)) - (timer0_say + (timer0_overf * 65536)); 
    data4=make8(sonuc,0);
    data1=make8(sonuc,1);
    data2=make8(sonuc,2);
    data3=make8(sonuc,3);
    
while(!spi_data_is_in())
{
val=spi_read();
if(val==4)
{
spi_read(data1);
}
if(val==5)
{
spi_read(data2);
}
if(val==6)
{
spi_read(data3);
}
if(val==7)
{
spi_read(data4);
}
}
}
}
sorunu bulmamda yardımcı olur musunuz?