![]() |
|
Tài trợ cho PIC Vietnam |
Giao tiếp USB, CAN, I2C, SPI, USART... Những giao tiếp được tích hợp trên PIC |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Đệ tử 1 túi
Tham gia ngày: Oct 2008
Bài gửi: 11
: |
Vâng ạ em cảm ơn anh .
Đề tài của em làm là nhà thông minh ý định của em là định sử dụng 10-15con PIC6F88 slave đặt ở các khu vực hiện trường(như cầu thang,cửa,nhà bếp....)và 1 con master 16F877A mater thu thập dữ liệu từ các slave và kết nối với PC,tốc độ xung clock của em là 500khz,cáp xoắn đôi thì những ý tưởng của em đó liệu trong thực tế có ổn không anh? Mong các bá giúp đỡ thanks các bác nhiều. |
![]() |
![]() |
![]() |
#2 |
Đệ tử 1 túi
Tham gia ngày: Oct 2008
Bài gửi: 11
: |
Em tìm hiểu trên mạng thì được biết có con IC 82B715 để nâng cao khoảng cách truyền thông I2C ,nhưng em ko biết con này có mặt trên thị trường không nhỉ?em tìm mua mà không thấy có ,bác nào biết chỉ giùm em với.
thanks |
![]() |
![]() |
![]() |
#3 | |
Đệ tử 1 túi
Tham gia ngày: Oct 2008
Bài gửi: 11
: |
Trích:
|
|
![]() |
![]() |
![]() |
#4 |
Đệ tử 6 túi
Tham gia ngày: Apr 2009
Bài gửi: 132
: |
không có hình các bạn ơi????????????mình không hiểu
|
![]() |
![]() |
![]() |
#5 |
Nhập môn đệ tử
Tham gia ngày: Apr 2010
Bài gửi: 3
: |
bác nào có chương trình giao tiếp i2c với con TC74 và 16F877A ko,cho mình xin với
|
![]() |
![]() |
![]() |
#6 |
Nhập môn đệ tử
Tham gia ngày: May 2010
Bài gửi: 10
: |
khi giao tiếp i2c giữa hai pic 16f877a có bác nào gặp trường hợp M truyền không đúng địa chỉ nhưng S vẫn nhận khí thế không? cái này em chưa làm mạch thật, mới mô phỏng và thấy vậy.
|
![]() |
![]() |
![]() |
#7 |
Nhập môn đệ tử
Tham gia ngày: May 2010
Bài gửi: 10
: |
hì, giờ mới làm mạch thật giao tiếp I2C giữa 1 con master ( 16f877a ) và 2 con sleve ( 16f877a ) thấy nó đều hoạt động đúng, chứ không như mô phỏng. ngày trước thì chỉ là làm giao tiếp với ds1307 thôi, mãi đến hôm nay có người nhờ mới làm tới giao tiếp giữa các pic với nhau. non quá, mong các bác giúp đỡ nhiều nhé.
|
![]() |
![]() |
![]() |
#8 |
Nhập môn đệ tử
Tham gia ngày: May 2010
Bài gửi: 10
: |
à, tới em định học về ARM có bác nào rỗi rãi chỉ giúp em nhé
|
![]() |
![]() |
![]() |
#9 |
Nhập môn đệ tử
Tham gia ngày: May 2010
Bài gửi: 10
: |
bác namquan cho em hỏi, vì sao khi em nạp luôn ct example về ethenet của 16f877a có sẵn trong mikroc lại không chạy gì cả, nhưng vẫn cái mạch ấy em nạp ct của con 18f4580 vẫn chạy ạ, đó là vì sao hả bác?
|
![]() |
![]() |
![]() |
#10 |
Đệ tử 1 túi
Tham gia ngày: Dec 2009
Bài gửi: 24
: |
I2C không chịu chay.
Các bác giúp e vụ i2c này với. code lấy của bác Hoàn. mô phỏng thì chạy cứ ầm ầm. nhưng vô mạch thật thì ... híc híc e nó nằm im.
Đây là code của Master Code:
#include <16F877A.H> #fuses XT,NOWDT,NOPROTECT,NOLVP #use Delay(Clock=4000000) #use i2c(master, sda=PIN_C4, scl=PIN_C3, force_hw) void write_I2C(int8 value, int8 slave_addr) { i2c_start(); i2c_write(slave_addr); i2c_write(value); i2c_stop(); } int8 read_I2C(int8 slave_addr) { int8 value_re; i2c_start(); i2c_write(slave_addr + 1); value_re = i2c_read(0); i2c_stop(); return value_re; } void main() { int8 value_re; int8 i; const int8 N = 8; const int8 DIGITS[N] ={ 0b11111111, 0b11111110, 0b11111100, 0b11111000, 0b11110000, 0b11100000, 0b11000000, 0b10000000, }; const int8 slave_addr = 0x10; set_tris_b(0x00); while(1){ for(i = 0; i<8; i++){ write_I2C(DIGITS[i], slave_addr); delay_ms(500); value_re = read_I2C(slave_addr); output_b(value_re); } } } Còn đây là code của Slave: Code:
#include <16F877A.H> #fuses XT,NOWDT,NOPROTECT,NOLVP #use delay(Clock=4000000) #use i2c(SLAVE, SDA=PIN_C4, SCL=PIN_C3, address=0x10, force_hw) int8 value = 0x01; #INT_SSP void i2c_isr() { int8 state; state = i2c_isr_state(); if(state < 0x80) value = i2c_read(); if(state == 0x80){ i2c_write(value); } } void main() { enable_interrupts(GLOBAL); enable_interrupts(INT_SSP); set_tris_d(0x00); while(1){ output_d(value); } } thay đổi nội dung bởi: chungcb86, 11-10-2010 lúc 04:50 PM. |
![]() |
![]() |
![]() |
#11 |
Đệ tử 1 túi
Tham gia ngày: Dec 2009
Bài gửi: 24
: |
Bác nào sử bít code bị mắc ở đâu sửa giúp mình với.
|
![]() |
![]() |
![]() |
#12 |
Nhập môn đệ tử
Tham gia ngày: May 2013
Bài gửi: 1
: |
i2c
mình viết y chang nhưng sao không mô phỏng được
chỗ code của slave , cuối cùng là output_b chứ hả, mình thấy giá trị output của slave lúc nào cũng là value=0x01 ban đầu.....không có sự thay đổi nên chắc chưa có giao tiếp giữa slave và master. |
![]() |
![]() |
![]() |
#13 |
Đệ tử 1 túi
Tham gia ngày: Dec 2009
Bài gửi: 24
: |
ok mach đã chạy. nguyên nhân : đứt mạch nên 1 chân không được nối với trở thanh
|
![]() |
![]() |
![]() |
#14 |
Nhập môn đệ tử
Tham gia ngày: Sep 2010
Bài gửi: 1
: |
Giúp em i2c
giúp em i2c với em mới học về pic và i2c : dipswitch truyền dữ liệu cho master , master truyền cho slave ,slave hiển thị lên led(giống việc điều khiển đèn bằng dipswitch qua chuẩn i2c)
code Master: #include <16F877A.H> #fuses XT,NOWDT,NOPROTECT,NOLVP #use Delay(Clock=4000000) #byte portb=0x06 #define SLAVE_ADDRESS 0x10 #use i2c(master, sda=PIN_C4, scl=PIN_C3) #use Fast_IO(b) void write_I2C(int8 data) { i2c_start(); i2c_write(SLAVE_ADDRESS); i2c_write(data); i2c_stop(); } void main() { int8 data; set_tris_b(255); data=input_b(); while(1) { write_I2C(data); delay_ms(100); } } code slave: #include <16F877A.H> #fuses XT,NOWDT,NOPROTECT,NOLVP #use delay(Clock=4000000) #use i2c(SLAVE,SDA=PIN_C4,SCL=PIN_C3) #define SLAVE_ADDRESS 0x10 #use Fast_IO(b) void read_I2C() { int8 data; i2c_start(); i2c_read(SLAVE_ADDRESS); data=i2c_read(); delay_ms(100); i2c_stop(); } void main() { int8 data; set_tris_b(0x00); while(1) { read_I2C(); output_b(data); } } không biết sai ở đâu nữa mô phỏng bằng proteus không chạy gì cả thay đổi nội dung bởi: liemcena, 26-10-2010 lúc 10:55 PM. |
![]() |
![]() |
![]() |
#15 |
Nhập môn đệ tử
Tham gia ngày: Mar 2009
Bài gửi: 4
: |
em dùng code của bác Hoan cho vô protues thì không thấy chạy gì cả, không hiểu sai chỗ nào luôn
|
![]() |
![]() |
![]() |
|
|