PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Hỏi về chân chức năng I2C của 16F877a (http://www.picvietnam.com/forum/showthread.php?t=5699)

nhanh0112 07-01-2010 12:02 AM

Hỏi về chân chức năng I2C của 16F877a
 
Trước đây tui sử dụng 89C51 thì định nghĩa 2 chân (thuộc port in/out) bất kỳ làm chân giao tiếp SDA, SCL đc. Ở PIC 16F877a có làm đc như vậy ko? Nếu đc thì khác với việc sử dụng chân chức năng I2C có sẵn (RC3,RC4) ở chỗ nào?
Bác nào biết chỉ giùm tui nha! Cảm ơn các bác trước :)

Mr.Bi 07-01-2010 12:16 AM

Trích:

Nguyên văn bởi nhanh0112 (Post 32884)
Trước đây tui sử dụng 89C51 thì định nghĩa 2 chân (thuộc port in/out) bất kỳ làm chân giao tiếp SDA, SCL đc. Ở PIC 16F877a có làm đc như vậy ko? Nếu đc thì khác với việc sử dụng chân chức năng I2C có sẵn (RC3,RC4) ở chỗ nào?
Bác nào biết chỉ giùm tui nha! Cảm ơn các bác trước :)

Tại sao 8051 k hỗ trợ I2C vẫn giao tiếp đc , đó là vì u đang giả lập , tức dùng phần mềm giả lập giao tiếp I2C . Điều đó cũng có nghĩa bất kì con VDK nào cũng giao tiếp đc I2C .
Với PIC ,vì bản thân có hỗ trợ I2C ở 2 chân RC3 và RC4 nên
cách 1 : nếu mắc vào 2 chân này và khai báo dùng i2c thì sau khi khai báo xong , u chỉ việc gọi hàm và đọc giá trị về ...
cách 2 : Nếu k mắc vào 2 chân này ( hoặc có mắc mà k khai báo dùng i2c) , bắt buộc u phải viết đoạn code giả lập

Đơn giản như đang giỡn

nhanh0112 07-01-2010 08:58 AM

Trích:

Nguyên văn bởi Mr.Bi (Post 32885)
cách 1 : nếu mắc vào 2 chân này và khai báo dùng i2c thì sau khi khai báo xong , u chỉ việc gọi hàm và đọc giá trị về ...
cách 2 : Nếu k mắc vào 2 chân này ( hoặc có mắc mà k khai báo dùng i2c) , bắt buộc u phải viết đoạn code giả lập

Như vậy có nghĩa là nếu sử dụng 2 chân khác thì tui phải viết (ví dụ)
Code:

.....
void i2c_write(){
SDA=1;
SCL=0;
.....

Thay vì sử dụng i2c_write như một cái đương nhiên có khi sử dụng với đúng 2 chân chức năng của nó phải ko!
Cảm ơn bác nhiều nha, đã hiểu.

bien_van_khat 07-01-2010 09:06 AM

Trích:

Nguyên văn bởi nhanh0112 (Post 32892)
Như vậy có nghĩa là nếu sử dụng 2 chân khác thì tui phải viết (ví dụ)
Code:

.....
void i2c_write(){
SDA=1;
SCL=0;
.....


Nếu bạn muốn "thích chân nào làm I2C thì làm" thì bạn có thể chuyển qua PIC24F. Với tính năng Peripheral Pin Select bạn có thể lựa chọn chân cho module ngoại vi khá thoải mái.

nghia_tdh21 07-01-2010 04:07 PM

Trong trường hợp nếu vi điều khiển ko có module hỗ trợ I2C thì có thể dùng bất cứ chân nào có chức năng I/O để giao tiếp, tuy nhiên viết chương trình cũng khá phức tạp. Trình dịch MikroC có hỗ trợ thư viện dùng cho dạng này, ví dụ:
Code:

Soft_I2C_Config
Soft_I2C_Start
Soft_I2C_Read
Soft_I2C_Write
Soft_I2C_Stop



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

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam