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?