|
Tài trợ cho PIC Vietnam |
dsPIC - Bộ điều khiển tín hiệu số 16-bit Theo dự kiến của Microchip, vào khoảng năm 2011 dsPIC sẽ có doanh số lớn hơn PIC |
|
Ðiều Chỉnh | Xếp Bài |
01-09-2006, 11:45 AM | #31 |
Đệ tử 1 túi
Tham gia ngày: Aug 2005
Bài gửi: 12
: |
OK, em hiểu rồi.
Nếu ta cấu hình chip như thế này : _FOSC(CSW_FSCM_OFF & FRC & XT_PLL16); _FOSC(CSW_FSCM_OFF & FRC & XTL); Thì trong cả hai trường hợp này XT_PLL16 và XTL là không có ý nghĩa. Trong cả hai trường hợp trên chip đều sử dụng mạch dao động FRC trong, nhưng cấu hình của FPR<3:0> vẫn để ở XT_PLL16 hoặc XTL. Vậy mục đích của việc thiết kế này chỉ là để làm hài lòng người dùng thôi ư, nếu người sử dụng muốn thay đổi nguồn clock việc gì mà không cấu hình lại từ đầu. Hay mục đích của việc này là nhờ vào clock switch để 1 chip có thể chạy nhiều tần số khác nhau ở những khoảng khác nhau . Hi , thấy nó cứ là lạ. |
01-09-2006, 06:13 PM | #32 | |
Trưởng lão PIC bang
|
Trích:
Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
06-01-2008, 11:26 PM | #33 |
Đệ tử 1 túi
Tham gia ngày: Nov 2005
Bài gửi: 19
: |
Mong các bác chỉ giúp em phần I2C slave cho dsPIC.
Đây là toàn bộ chương trình cho con slave : Code:
#include <p30f4011.h> _FOSC(CSW_FSCM_OFF & FRC_PLL4); _FWDT(WDT_OFF); _FBORPOR(PBOR_ON & BORV_27 & PWRT_4 & MCLR_EN & RST_IOPIN); _FGS(CODE_PROT_OFF); #include <i2c.h> void SI2C_init(void); void slave_reply(unsigned char data); unsigned char rcv_data,trn_data; unsigned char data_request; void _ISR_PSV _SI2CInterrupt(void) { _SI2CIF = 0; if(_R_W) //Read data from Slave { data_request = 1; }else //Write data to Slave { if(_D_A) //I2CRSR chua du lieu rcv_data = I2CRCV;//doc du lieu else //I2CRSR chua dia chi Nop();//Khong lam gi ca } } int main(void) { SI2C_init(); while(1) { if(data_request) { data_request = 0; trn_data ++; slave_reply(trn_data); } if(rcv_data) { rcv_data = 0; } } return 0; } void SI2C_init(void) { I2CADD = 0x10; I2CCON = I2C_ON & I2C_IDLE_STOP & I2C_CLK_REL & I2C_IPMI_DIS & I2C_7BIT_ADD & I2C_SLW_DIS & I2C_SM_DIS & I2C_GCALL_DIS & I2C_STR_DIS & I2C_ACK & I2C_ACK_DIS & I2C_RCV_DIS & I2C_STOP_DIS & I2C_RESTART_DIS & I2C_START_DIS; IPC3bits.SI2CIP = 1; IEC0bits.SI2CIE = 1; _SI2CIF = 0; } void slave_reply(unsigned char data) { I2CTRN = data; _SCLREL = 1;//Giai phong SCL } thay đổi nội dung bởi: alamanda, 08-01-2008 lúc 09:29 PM. Lý do: Bổ sung code |
16-01-2008, 10:33 PM | #34 |
Đệ tử 1 túi
Tham gia ngày: Nov 2005
Bài gửi: 19
: |
hic,sao kô thấy các cao thủ có cao kiến gì vậy? Chẳng lẽ chưa ai tìm hiểu về I2C Slave trên dsPIC?
|
17-01-2008, 02:51 AM | #35 |
Trưởng lão PIC bang
|
Giả sử các hằng số _R_W và _D_A đã được bạn định nghĩa đúng, chương trình bên phía slave của bạn về giải thuật là ổn. Tuy nhiên, chương trình bên phía master của bạn ra sao, phần cứng của bạn thế nào thì bạn chưa nói. Master của bạn làm việc với EEPROM không có nghĩa là nó sẽ làm việc với một slave dsPIC. Bạn có thể cần chỉnh lại phần cứng, có thể cần phải thay đổi chương trình của master (địa chỉ slave mới chẳng hạn), và những vấn đề thực tế khác (thời gian chờ giữa các giai đoạn chẳng hạn, phần này khi giao tiếp với EEPROM thì hardware của EEPROM thực hiện cho bạn, còn khi viết slave thì bạn phải hiện thực nó).
Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
22-01-2008, 11:28 PM | #36 |
Đệ tử 1 túi
Tham gia ngày: Nov 2005
Bài gửi: 19
: |
Về phần cứng,ban đầu em dùng 2 điện trở 1.5k kéo lên;sau khi tham khảo datasheet,em đổi sang dùng điện trở 2.2k,kết quả vẫn như nhau.
Về chương trình Master,em viết theo chương trình Tutorial về I2C của anh,kiểm tra bit _Ackstat sau mỗi lần gửi,nếu ko có tín hiệu Ack trả về thì dừng,và báo lỗi qua UART2(do đó,em biết được I2C bị lỗi ở giai đoạn nào).Nếu có tín hiệu Ack trả về,thì tiếp tục truyền (như vậy ko biết em còn phải chờ gì nữa?).Còn về phần địa chỉ, em cũng đã thử thay đổi địa chỉ slave nằm trong vùng địa chỉ cho phép, nhưng cũng ko ăn thua. Hiện tại em ko biết mình sai ở phần nào,phần cứng hay phần mềm? |
|
|
Similar Threads | ||||
Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
dsPIC Tutorial 1-Tạo và biên dịch một project (ASM30) | namqn | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 16 | 22-08-2012 12:35 AM |