![]() |
|
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 |
![]() |
#91 |
Đệ tử 6 túi
Tham gia ngày: Jul 2007
Bài gửi: 154
: |
bác nào làm giao tiếp i2c giữa pic với eeprom 24XX rồi chỉ cho tôi với.
dùng protue có mô phỏng eeprom 24XX được không hả các bác. khi tôi mô phỏng thì không thấy chạy gì cả. kích chuột vào eeprom thì thấy nó đòi có file binary ở phần initial contents ò memory không biết file này phải lấy từ đâu ra nhỉ mong các cao thủ chie giúp |
![]() |
![]() |
![]() |
#92 |
Đệ tử 1 túi
Tham gia ngày: Apr 2007
Bài gửi: 20
: |
Chào mọi người!
Cho mình hỏi về ví dụ của bạn Hoanf (ví dụ có kèm hình sơ đồ nguyên lý), mình mô phỏng bằng protues thì chạy đúng như yêu cầu bài toán, nhưng lắp mạch thật thì không chạy được. Có cẩn phải chú ý gì từ sơ đồ đó không! ![]() |
![]() |
![]() |
![]() |
#93 | |
Đệ tử 1 túi
Tham gia ngày: Jul 2007
Bài gửi: 22
: |
Trích:
![]() ![]() ![]() Mình mới viết xong một chương trình I2C dùng 1 Master điều khiển mạng 4 Slave bằng 4 nút ngắt RB, tất cả đều dùng 16f877a, mình xin post lên đây mong các bạn góp ý. Phần cứng: 4 nút nhấn ngắt ngoài rb4 -> rb7 dùng để điều khiển 4 Slave, nhấn nút nào thì Master gọi Slave đó chạy ct Master gửi xuống, còn các Slave khác "ngồi chơi". 2 chân SDA và SCL của các VDK nối nhau kéo lên 4k7, PORTD của 4 Slave quét 8 led... Phần mềm: 4 Slave có địa chỉ lần lượt là 0x10, 0x20, 0x30, 0x40 nên chương trình của 4 Slave hoàn toàn như nhau, chỉ khác cái khai báo ban đầu address là 4 địa chỉ trên. ct của Master: Code:
#include <16f877a.h> #include <def_877a.h> #use delay(clock = 20000000) #fuses HS, NOPUT, NOWDT, NOBROWNOUT, NOLVP, NOPROTECT #use i2c(MASTER, SDA=PIN_C4, SCL=PIN_C3, force_hw) const unsigned int8 dulieu[]={1,2,4,8,16,32,64,128}; const unsigned int8 address_slave[]={0,0x10,0x20,0x30,0x40}; int8 a,i,kytu; void ghi(int8 address,int8 data) { i2c_start(); i2c_write(address); i2c_write(data); i2c_stop(); } #INT_RB void ngat_RB() { if((RBIF)&&(RBIE)) { if(RB4==0) { a=1; i=0; } else if(RB5==0) { a=2; i=0; } else if(RB6==0) { a=3; i=0; } else if(RB7==0) { a=4; i=0; } } RBIF=0; } void main() { enable_interrupts(GLOBAL); enable_interrupts(INT_RB); set_tris_d(0); portd=0; while(TRUE) { kytu=a; delay_ms(100); while(kytu==a) { if(a!=0) { delay_ms(50); ghi(address_slave[a],dulieu[i]); i++; if(i==8) { i=0; } } } } } Code:
#include <16f877a.h> #include <def_877a.h> #use delay(clock = 20000000) #fuses HS, NOPUT, NOWDT, NOBROWNOUT, NOLVP, NOPROTECT #use i2c(SLAVE, SDA=PIN_C4, SCL=PIN_C3, address=0x10, force_hw) int8 dulieu; #INT_SSP void ngat_i2c() { int8 state; state = i2c_isr_state(); if(state < 0x80) { dulieu = i2c_read(); portd = dulieu; delay_ms(50); } } void main() { enable_interrupts(GLOBAL); enable_interrupts(INT_SSP); set_tris_d(0); while(TRUE) { portd = 0; } } Em muốn post sơ đồ mạch lên mà không biết chèn code như thế nào, mong Admin chỉ giùm em cách tải file từ máy... thay đổi nội dung bởi: namqn, 15-06-2008 lúc 07:11 PM. Lý do: xóa thông tin không cần thiết |
|
![]() |
![]() |
![]() |
#94 | |
Đệ tử 6 túi
Tham gia ngày: Jul 2007
Bài gửi: 146
: |
![]() Trích:
mấy hôm rồi mình bị mất đồng bộ gửi nhận suốt, các bạn nếu mới làm nhớ để ý bên con slaver trong quá trình nhận nhé mình khuyến cáo nên dùng cấu trúc sau để nhận trong trình xử lý ngắt #INT_SSP ssp : while(count_i2c!=4) { while(!i2c_poll()) ; buffer[count_i2c++]= i2c_read(); //Read Next } hy vọng ko ai phải mất thời gian về i2c nhiều như mình .hichic
__________________
mạch nạp - kit phát triển - linh kiện điện tử www.PNLabvn.com |
|
![]() |
![]() |
![]() |
#95 |
Đệ tử 1 túi
Tham gia ngày: Aug 2008
Bài gửi: 14
: |
Hi ! Có bạn nào nghiên cứu về I2CSB-I2C Slave Base không thươ1ng dẫn em nhé!Thanks.Có tài liệu chi tiết nào về sơ đồ khối hay gì đó thì send cho em nhé!Thiết kế I2CSB giống nhu thiết kế 1 khối IP phải ko ạh?Help me please!!!
|
![]() |
![]() |
![]() |
#96 |
Đệ tử 1 túi
Tham gia ngày: Aug 2008
Bài gửi: 14
: |
so đồ khối i2CSB!Ai biết phân tích dùm nhé!!!
Đây là sơ đồ khối chi tiết cuả I2CSB!Bạn nào biết phân tích chi tiết nhiệm vụ và chức năng của từng khối cho mình nhé!mình cảm ơn nhiều.Và nếu mình thiết kế 1 khối IP-I2CSB như vậy thì cần phải bắt đầu như thế nào ,mong các bạn góp ý nhé!Thanks a lot!!!
|
![]() |
![]() |
![]() |
#97 | |
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 |
|
![]() |
![]() |
![]() |
#98 |
Đệ tử 1 túi
Tham gia ngày: Aug 2008
Bài gửi: 14
: |
Vậy trong www.dientuvietnam.net bạn có biết topic nào nói về I2C không thì chỉ cho mình với nhé?Hoặc có trang web tiếng việt nào bàn về I2C ko thì báo dùm mình với nhé!!!Thanks.
|
![]() |
![]() |
![]() |
#99 |
Đệ tử 5 túi
Tham gia ngày: Jan 2008
Bài gửi: 96
: |
I2C trên MikroC
I2C với Pic 16f877A:
http://www.picvietnam.com/forum//showthread.php?t=2644 I2C với Pic 16f84A: http://www.picvietnam.com/forum//showthread.php?t=2671 thay đổi nội dung bởi: minhsondaklak, 17-08-2008 lúc 10:27 PM. |
![]() |
![]() |
![]() |
#100 |
Nhập môn đệ tử
Tham gia ngày: Aug 2008
Bài gửi: 1
: |
Chào các bạn,
Tôi đang dùng PIC 18F4520 làm đồng hồ thời gian thực sử dụng ds1307. Dùng MPLAB C18 để lập trình và các thư viện chuẩn của MCC18. Tôi mô phỏng trên proteus thì chạy ngon lành nhwng mang ra làm mạch thật thì không chạy. Tôi dùng hàm OpenI2C(MASTER, SLEW_OFF) để cho phép I2C và tạo tốc độ 100kHz trên SCL (theo chú thích trong thư viện) nhưng thực tế thì khi dùng osciloscope để đo tần số trên SCL thì thấy tốc độ khoảng 500kHz khi có truyền dữ liệu. Bạn nào biết lý do tại sao và cách khắc phục thi giúp tôi nhé. Thanks nhiều. hmk |
![]() |
![]() |
![]() |
#101 | |
Nhập môn đệ tử
Tham gia ngày: Jul 2008
Bài gửi: 1
: |
Trích:
|
|
![]() |
![]() |
![]() |
#102 | |
Đệ tử 6 túi
Tham gia ngày: Jul 2007
Bài gửi: 146
: |
Trích:
__________________
mạch nạp - kit phát triển - linh kiện điện tử www.PNLabvn.com |
|
![]() |
![]() |
![]() |
#103 |
Đệ tử 1 túi
Tham gia ngày: Aug 2008
Bài gửi: 14
: |
Chào!Mình đang nghiên cứ giao tiếp giữa LCD thường với I2c điều khiển bởi Master là Pic.Vậy giao tiếp giữa LCD và I2C trên thực tế phần cứng mình phải giao tiếp như thế nào đây,giao tiếp những chân nào với nhau ?Còn đối vớ Rom thì sao?Vì Rom ngoài địa chỉ Slave ra còn có địa chỉ của từng thanh ghi trong Rom ,Mình sẽ giao tiếp với từng thanh ghi như thế nào đây?Trên thị trường hiện nay có Lcd,Rom nào tích hợp sẵn I2C không nhỉ?Hepl me!Please!
|
![]() |
![]() |
![]() |
#104 |
Đệ tử 1 túi
Tham gia ngày: Aug 2008
Bài gửi: 14
: |
Àh,hình như chuẩn I2C không có cơ chế báo lỗi bit trên đường truyền phải không các bạn?Ngoài ACK chỉ dùng báo khi truyền hết một byte dữ liệu còn Nack chỉ dùng khi không nhận được vậy còn cơ chế báo lỗi ,kiểm tra lỗi bit hay lỗi trên đường truyên thì không có phải không?Ai biết giúp mình với nhé!Thanks.
|
![]() |
![]() |
![]() |
#105 |
Đệ tử 5 túi
Tham gia ngày: Mar 2008
Nơi Cư Ngụ: Bình Thạnh, TPHCM
Bài gửi: 98
: |
theo mình được biết thì có mấy loại eeprom của atmel có tích hợp i2c đó: At24c01,at24c02,04,...
__________________
------------------------------------------------------------------- Cung cấp bo mạch thực hành Arduino và các mạch sáng tạo. Mời tham quan: https://www.facebook.com/eshop1109 Cung cấp dịch vụ order hàng từ Aliexpress Liên hệ: https://www.facebook.com/Mua-h%E1%BB...5265931515571/ |
![]() |
![]() |
![]() |
|
|