PIC Vietnam

Go Back   PIC Vietnam > Truyền thông > Giao tiếp USB, CAN, I2C, SPI, USART...

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc Vi điều khiển

Giao tiếp USB, CAN, I2C, SPI, USART... Những giao tiếp được tích hợp trên PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 11-09-2008, 12:46 AM   #106
dientubk3
Đệ tử 1 túi
 
Tham gia ngày: Aug 2008
Bài gửi: 14
:
Chà !Sao ko thấy anh em giúp mình vậy cà?Help me ,please!!!
dientubk3 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-09-2008, 12:52 AM   #107
dientubk3
Đệ tử 1 túi
 
Tham gia ngày: Aug 2008
Bài gửi: 14
:
Àh,còn câu hỏi nữa là các đường SDA,SCL sử dụng theo hàm "And "nối dây.Vậy thì trên một bus I2C có nhiều Mater và Slave thì cấu trúc mạch thực tế như thế nào ?Có hàm And nối dây trên mạch hay không ?Có gì úp dùm mình một tấm hình thực tế nhé!Mình nghĩ đây cũng là những điều cơ bản về I2C.Chắc mọi người sẽ dành thời gian giúp mình .Thanks a lot!
dientubk3 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-09-2008, 11:22 AM   #108
hopeman
Đệ tử 6 túi
 
hopeman's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 146
:
Trích:
Nguyên văn bởi dientubk3 View Post
À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.
việc ở trạng thái thông thường cả SDA và SCL ở mức cao cũng là một cách để nhận biết được sự cố "đứt dây" trong quá trình truyền, còn cơ chế báo lỗi bit thì thực sự là mình chưa nghe nói đến ở chuẩn giao tiếp I2C
__________________
mạch nạp - kit phát triển - linh kiện điện tử www.PNLabvn.com
hopeman vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-09-2008, 02:57 PM   #109
piano lover
Nhập môn đệ tử
 
Tham gia ngày: Aug 2007
Bài gửi: 5
:
Cho mình hỏi cách khai báo tốc độ truyền I2C trong CCS như thế nào, vì phần cứng chỉ hổ trợ tối đa 400 Kbps nhưng trong phần help có ví dụ fast=450000 (sets the target speed to 450 KBSP) và giá trị đó khai báo bao nhiêu cũng không báo lỗi, chẳng bít thằng CCS nó hiểu như thế nào? và 400Kbps là tốc độ tối đa trong Pic hay là tốc độ tối đa của chuẩn I2C? chiều dài tối đa của bus I2C hổ trợ là bao nhiêu? trên trang web này nó bảo là 100m ở tốc độ 500Hz http://www.esacademy.com/faq/i2c/q_and_a/faq/i2cqa1.htm
piano lover vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-09-2008, 05:47 PM   #110
thienthan_den
Nhập môn đệ tử
 
Tham gia ngày: Sep 2006
Bài gửi: 3
:
Đồng Bộ Trong Giao Tiếp I2C

Em có một chút thắc mắc về giao tiếp I2C: Không biết quá trình truyền và nhận dữ liệu giữa master và slave được đồng bộ nhờ phần cứng hay là nhờ thằng CSS hoặc là tự mình phải làm lấy? Chuyện gì xảy ra khi master truyền dữ liệu mà không nhận được ACK từ slave? Nó sẽ truyền lại byte dó hay là cứ chờ? Một vấn đề nữa là khi dùng hàm i2c_isr_state() đọc trạng thái của bus i2c và trả về giá trị <0x80 thì mình có phải đợi cho dữ liệu ổn định bằng cách dùng delay_ms(x) trước khi dùng i2c_read() không? Chương trình của em viết khi không có delay_ms() thì slave không đọc được giá trị về? Không biết có phải em viết sai không. Mong mọi người giúp đỡ.
PS: hôm nay không mang code theo nên không up lên được,mong mọi người thông cảm.
thienthan_den vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-09-2008, 05:49 PM   #111
piano lover
Nhập môn đệ tử
 
Tham gia ngày: Aug 2007
Bài gửi: 5
:
Sao không ai giúp mình hết vậy?
piano lover vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-10-2008, 10:19 PM   #112
dientubk3
Đệ tử 1 túi
 
Tham gia ngày: Aug 2008
Bài gửi: 14
:
Mình đang làm về I2CSB,dùng để diều khiển các thiết bị thụ động như LCD ,ram.Bây giờ mình ra ngoài thị trường mua loại LCD bình thường không tích hợp bus I2C và một Pic có tích hợp I2C làm Master điều khiển.con I2CSB mình sẽ tạo ra ,vậy mình nên mua lạoi LCD nào ?Pic nào phổ biến trên thị trường để phục vụ cho nghiên cứu của mình đây!Vui lòng giúp mình nhé!!!Thanks
dientubk3 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-10-2008, 09:21 AM   #113
duong4747
Nhập môn đệ tử
 
Tham gia ngày: Sep 2008
Bài gửi: 1
:
Red face Giao tiep I2C

Chào các bác, e đang viết chương trình giao tiếp dùng I2C giữa Pic16f877 và DS1307 trong MPLAP IDE mà không được, vấn đề nằm ở chỗ khai báo sử dụng chân SCL và SDA trong portc. Xin hỏi bác nào có đoạn code khai báo viết trong MPLAP IDE thì port lên cho e với, e cảm ơn nhiều!
duong4747 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-10-2008, 11:39 AM   #114
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 154
:
i2c

chào các bác mình đang làm giao tiếp i2c với 24c64.
mình coppy trong file hell của ccs ra và chạy thử cho 1 byte.
khi hàm ghi và đọc được dùng ở ngoài vòng lặp white() thì chương trình đọc đúng giá trị ghi vào.
nhưng khi bỏ hàm ghi và đọc và vòng lặp white() thì chương trình chỉ đọc đúng lần đầu tiên. khi lặp lại vòng lặp thì bị sai.
hoặc nếu ghi và đọc nhiều lần cho từng byte thì data dọc ra cũng bị sai. mình không rỏ vì sao mong các bạn chỉ giúp.
#include<18f4680.h>
#fuses NOLVP,NOWDT,PUT,hs,NOPROTECT,NOBROWNOUT
#device 18f4680*=16 ADC=10 // high_ints=true
#use delay(clock=20000000)
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#use fast_io(e)
int k;

////////////////////////////////////////////////////////////////////////
#ifndef EEPROM_SDA

#define EEPROM_SDA PIN_b1 //b1
#define EEPROM_SCL PIN_b0//b0

#endif

#use i2c(master, sda=EEPROM_SDA, scl=EEPROM_SCL)

#define EEPROM_ADDRESS long int
#define EEPROM_SIZE 8192

void init_ext_eeprom()
{
output_FLOAT(EEPROM_SCL);
output_FLOAT(EEPROM_SDA);
}

void write_ext_eeprom(long int address, BYTE data)
{
short int status;
i2c_start();
i2c_write(0xa0);
i2c_write((address>>8)&0x1f);
i2c_write(address);
i2c_write(data);
i2c_stop();
status=i2c_write(0xa0);
while(status==1)
{
i2c_start();
status=i2c_write(0xa0);
}
}

BYTE read_ext_eeprom(long int address) {
BYTE data;
i2c_start();
i2c_write(0xa0);
i2c_write((address>>8)&0x1f);
i2c_write(address);
i2c_start();
i2c_write(0xa1);
data=i2c_read(0);
i2c_stop();
output_d(data);
return(data);
}

void main()
{
set_tris_A(0x00);
set_tris_b(0x00);
set_tris_C(0x00);
set_tris_D(0x00);
set_tris_E(0x00);
/////////////////////////
write_ext_eeprom(10,8);
read_ext_eeprom(10);
while(1)
{
delay_ms(1000);

}
}
/////////////////////////////////////////////////
nếu bỏ các hàm vào vòng lặp thì chỉ chạy đúng lần đầu tiên. các lần còn lại là sai
while(1)
{
write_ext_eeprom(10,8);
read_ext_eeprom(10);
delay_ms(1000);

}
//////////////////////////////
ghi và đọc nhiều lần cũng bị sai data
while(1)
{
write_ext_eeprom(10,8);
read_ext_eeprom(10);
delay_ms(1000);
write_ext_eeprom(12,6);
read_ext_eeprom(12);
delay_ms(1000);


}
tungtot_vl vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-10-2008, 03:04 PM   #115
ketxanh
Đệ tử 3 túi
 
ketxanh's Avatar
 
Tham gia ngày: Aug 2008
Bài gửi: 53
:
tui moi lam xong giao tiep i2c giữa pic8f2550 và pic 18f4550, chương trình chạy ngon lành. anh em nào có hứng thú tui post lên cho
ketxanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-11-2008, 01:14 PM   #116
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Trích:
Nguyên văn bởi ketxanh View Post
tui moi lam xong giao tiep i2c giữa pic8f2550 và pic 18f4550, chương trình chạy ngon lành. anh em nào có hứng thú tui post lên cho
Bạn nên post bài của bạn lên luôn, vì rất nhiều người đã làm vấn đề này, và cần càng nhiều bài tham khảo càng tốt, từ đó người đọc sẽ biết thêm nhiều cách để tối ưu code của mình.

Chúc vui
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-11-2008, 11:21 PM   #117
ketxanh
Đệ tử 3 túi
 
ketxanh's Avatar
 
Tham gia ngày: Aug 2008
Bài gửi: 53
:
Talking I2c

Xin lỗi anh em vi minh post hơi chậm.Mong mọi người đóng góp ý kiến nhé
File Kèm Theo
File Type: rar I2C.rar (27.5 KB, 511 lần tải)
ketxanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-12-2008, 08:30 AM   #118
ketxanh
Đệ tử 3 túi
 
ketxanh's Avatar
 
Tham gia ngày: Aug 2008
Bài gửi: 53
:
không biết co ai quan tâm cái i2c của tui không, mà không thấy đóng góp ý kiên gì, hay cái cảm ơn gì hết ta.....buồn wa. không thi mọi ngừoi chê tui cũng được đặng tui còn biết để mà sửa lỗi lầm
__________________
Hãy cho trước khi nhận
ketxanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-12-2008, 10:19 AM   #119
bien_van_khat
...Damned...
 
bien_van_khat's Avatar
 
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
:
Trích:
Nguyên văn bởi ketxanh View Post
không biết co ai quan tâm cái i2c của tui không, mà không thấy đóng góp ý kiên gì, hay cái cảm ơn gì hết ta.....buồn wa. không thi mọi ngừoi chê tui cũng được đặng tui còn biết để mà sửa lỗi lầm
Có thể bây giờ chưa có bạn nào gặp rắc rối về I2C, tuy nhiên mai mốt, ai đó cần code mẫu về I2C cho cả slave - master viết = CCS chắc chắn sẽ rất cảm ơn code của bạn.
__________________
- Xin đọc trước khi post bài

Xin đặt code trong thẻ [ code ] [ /code ]
bien_van_khat vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-12-2008, 11:06 PM   #120
dientubk3
Đệ tử 1 túi
 
Tham gia ngày: Aug 2008
Bài gửi: 14
:
Hi các Pro !Em có chương trình viết cho Pic 16f877A,chế độ Mater i2c.Giao tiếp với LCD16x2 chế độ 4bit,giao tiếp với i2c slave và bàn phím 4x4 nữa!Chương trình của em là :
+Khi nhấn một phím 4x4 thì sẽ phát một dữ liệu lên LCD và đồng thời dữ liệu đó cũng được truyền trên I2C Bus tới Slave.Em chỉ mới biết C cho CCS ,còn non quá!Bác nào có thể chỉ giáo em giao tiếp pic 16f877a với bàn phím 4x4 đồng thời hiển thị LCD và truyền I2C như trên được ko ?Thanks các Pro!
dientubk3 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ðiều Chỉnh
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


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


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam