PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Pro xem hộ chương trình giao tiếp SPI (http://www.picvietnam.com/forum/showthread.php?t=7290)

hoathanlq 01-11-2010 04:37 PM

Pro xem hộ chương trình giao tiếp SPI
 
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???????


Múi giờ GMT. Hiện tại là 01:00 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam