Ðăng Nhập

View Full Version : Pro xem hộ chương trình giao tiếp SPI


hoathanlq
01-11-2010, 04:37 PM
Có pro nào xem hộ mình với....Mình dùng 2 PIC :
16F887 làm master...
16F690 làm slave...
kết nối phần cứng ok...Thế mà mãi không chạy.....
Mục đích chương trình là: Master đo ADC rồi truyền qua SPI, Slave nhận giá trị ADC bên Master rồi hiển thì qua cổng Com mt.....

Code bên 16F887:

#include "D:\PIC\c_pic\test1\SPI truyen.h"
#include <float.h>
#include <stdio.h>
#use rs232(baud=19200,parity=n,xmit=pin_a7,rcv=pin_a1)
//#use spi(DI=PIN_B1, DO=PIN_B0, CLK=PIN_B2, ENABLE=PIN_B4, BITS=8)
#use spi(force_HW)
int8 x,z,n;
float y;
void ADC(void)
{
//x++;
//delay_ms(z);
x=read_adc();
output_d(read_adc());
if (input(pin_a2)==0)
{
z=0;
delay_ms(2000);
y=read_adc()*4.97/255;
printf("Gia tri ADC: %f (v) \r\n ",y);
}
else z=500;
}

void main()
{

setup_adc_ports(sAN0|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_2);
setup_spi(SPI_MASTER|SPI_L_TO_H|SPI_CLK_DIV_64);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard
setup_oscillator(OSC_8MHZ);
set_tris_d(0);
set_tris_a(7);
set_tris_c(16);
set_adc_channel(0);
// TODO: USER CODE!!
while (1)
{
ADC();
spi_write(x);
}
}



Code cho Slave 16F690:

#include "D:\PIC\c_pic\test1\SPI nhan.h"
#use rs232(baud=19200,parity=n,xmit=pin_c4,rcv=pin_b7)
int8 x;

void main()
{

setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_2);
setup_spi(SPI_SLAVE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard
enable_interrupts(INT_TBE);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
setup_oscillator(OSC_8MHZ);
set_tris_c(0);
// TODO: USER CODE!!
//lai:
do
{

//while(spi_data_is_in()==true)
//{
if (spi_data_is_in())
{
x=spi_read();
printf ( "Gia tri SPI nhan duoc la: %u \r\n",x);
delay_ms(2000);
}
}
while(1);
//}
//else goto lai;
}



Các thứ khác đã ngon...chỉ có SPI không chạy??????????? Có pro nào xem hộ mình thiết lập mode SPI đúng chưa???? Sai chỗ nào không???????