|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
01-11-2010, 04:37 PM | #1 |
Nhập môn đệ tử
Tham gia ngày: Jul 2009
Bài gửi: 4
: |
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??????? |
|
|