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 Bài Trong Ngày 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 16-01-2008, 11:50 AM   #76
picthanh
Đệ tử 2 túi
 
Tham gia ngày: Jun 2007
Bài gửi: 44
:
kbd và I2C

xin lỗi các huynnh cho đệ hỏi 1 câu ngu ngóc .em muốn tìm mua một con pic loại rẻ tiền nhất mà có đáp ứng nhu cầu sau: kết nối với bàn phím 4x3 và truyền thông tin phím nhấn ra bus I2C .em chỉ cần hai tinh năng đó thôi.chú ý là loại nào có giá thấp nhất mà có bán trên thị trường Việt Nam.mong các huynh quan tâm giúp đỡ ,tiểu đệ xin cảm ơn trước.
picthanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-01-2008, 07:07 PM   #77
tiendungkct
Đệ tử 4 túi
 
Tham gia ngày: May 2007
Bài gửi: 69
:
bạn có thể tìm con 16f887 giá hình như 48.000vnd bạn có thể liên hệ anh F
tiendungkct vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-01-2008, 07:43 PM   #78
picthanh
Đệ tử 2 túi
 
Tham gia ngày: Jun 2007
Bài gửi: 44
:
bạn tiendungkct oi ! mình vừa xem datasheet of con 16f887 xong thấy nó có nhiều ký hiệu lạ trên các chân quá (trước giờ mình mới làm việc việc với con 16f877a thôi)mình thấy con 16f876/873 chỉ có 28 chân nhưng ko biết giá nó bao nhiêu nhỉ.mình o nha trang nếu mua trên picvietnam thì ko biết nhận thế nào nhỉ,và trả tiền ra sao? a nhân tiện bạn cho mình hỏi mình có thể mua bàn phím 4x3 (loại chế tạo sẵn có vỏ bọc bảo vệ ,chống nước ,vì mình muốn đặt nó ngoài trời để điều khiển mà) ở đâu và bao nhiêu?
picthanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-02-2008, 12:49 AM   #79
quoc_nguyen
Nhập môn đệ tử
 
Tham gia ngày: Jan 2008
Bài gửi: 4
:
Nack

Bạn nào cho mình hỏi muốn gửi xung NACK từ Master --> slave thì làm thế nào.
Thanks
quoc_nguyen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-02-2008, 01:29 AM   #80
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi quoc_nguyen View Post
Bạn nào cho mình hỏi muốn gửi xung NACK từ Master --> slave thì làm thế nào.
Thanks
Bạn đọc phần I2C ở trang web sau vậy, vì bạn không cho biết là PIC 8-bit hay 16-bit.
http://namqn.byethost7.com/Commu.php

Master gửi ACK/NACK khi nó đọc từ slave, muốn làm việc này thì ở thao tác đọc chỉ cần cho phép ACK/NACK và bật/tắt bit trạng thái ACK/NACK (bật là NACK, tắt là ACK).

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

thay đổi nội dung bởi: namqn, 26-10-2008 lúc 12:31 AM.
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-03-2008, 12:20 AM   #81
quoc_nguyen
Nhập môn đệ tử
 
Tham gia ngày: Jan 2008
Bài gửi: 4
:
Cam on ban Namqn. Web bạn gửi mình đọc không được. Mình dùng 2 con 16f877a giao tiếp qua i2c và lập trình css C. có phải i2c_read(0) tức là nhận dữ liệu và gửi xung NACK đi không. Mình gửi 5byte dữ liệu liên tiếp từ slave--->master, giờ cho nó dừng lại để làm việc khác nhưng không biết dừng bằng cách nào hết. Bạn cho mình biết rõ hơn về lệnh i2c_isr_state() , giá trị 0x80 và lớn hơn 0x80 khác nhau chỗ nào.
thanks.
quoc_nguyen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-03-2008, 01:09 AM   #82
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi quoc_nguyen View Post
Cam on ban Namqn. Web bạn gửi mình đọc không được. Mình dùng 2 con 16f877a giao tiếp qua i2c và lập trình css C. có phải i2c_read(0) tức là nhận dữ liệu và gửi xung NACK đi không. Mình gửi 5byte dữ liệu liên tiếp từ slave--->master, giờ cho nó dừng lại để làm việc khác nhưng không biết dừng bằng cách nào hết. Bạn cho mình biết rõ hơn về lệnh i2c_isr_state() , giá trị 0x80 và lớn hơn 0x80 khác nhau chỗ nào.
thanks.
Trang web của tôi cũng chỉ dùng Unicode như diễn đàn này thôi, có điều lần đầu load trang web thì có thể bạn phải chấp nhận thông tin bảo mật là không khớp (không rõ bộ phận quản trị mạng của ĐHBK HCM làm thế nào đó mà sinh ra lỗi này). Tôi không dùng CCS C, nên nếu trả lời các vấn đề cụ thể trong CCS C thì cũng chỉ mở tài liệu hướng dẫn của CCS C ra để đọc giúp bạn thôi. Bạn có thể tự làm điều đó.

Để có thể thực hiện thao tác ACK/NACK với hàm i2c_read(), bạn phải dùng 2 tham số, như trong tài liệu hướng dẫn đã viết. Nếu muốn NACK và bạn chỉ có 1 stream, bạn có thể dùng i2c_read(0, 0). Bạn cũng nên có stream = 0 trong phần dẫn hướng #use i2c. Ý nghĩa của trị trả về của hàm i2c_isr_state() đã được ghi rõ trong tài liệu hướng dẫn, 0x80 là địa chỉ khớp, cần đáp ứng bằng một hàm i2c_write(), còn 0x81 - 0xFF là hoàn thành việc phát dữ liệu, và đã nhận được ACK, cần đáp ứng bằng một hàm i2c_write().

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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-03-2008, 11:11 AM   #83
quoc_nguyen
Nhập môn đệ tử
 
Tham gia ngày: Jan 2008
Bài gửi: 4
:
Rắc rối I2C

Mình thực hiện truyền dữ liệu giữa 2 con Pic6f877a bằng I2C (master --> slave), sử dụng CSS C. Việc truyền từng byte thì OK, còn truyên liên tiếp nhiều byte thì mình gặp rắc rối ở chỗ sau khi truyền xong thì không dừng chương trình được. Mình nghĩ bị lỗi ở chỗ không gửi được tín hiệu Nack qua slave. Mong nhh.mecha chỉ giáo. bạn giải thích mình cách dùng i2c_read(), và i2c_read(0); làm sao để dừng giao tiếp i2c sau khi đã truyền một lúc nhiều byte.
quoc_nguyen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-03-2008, 12:07 PM   #84
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
- i2c_read(); đọc 1 byte từ bus i2c và tạo xung ACK
- i2c_read(0); đọc 1 byte từ bus i2c và tạo xung NACK, dùng trước khi i2c_stop(); kết thúc đọc dữ liệu.

Muốn ghi nhiều byte liên tiếp tới SLAVE: Sau khi gửi địa chỉ, gửi liên tiếp các byte cần ghi, muốn ngừng dùng i2c_stop();

Bạn tham khảo tutorial ở trang 1 của anh F gửi, xem format ghi nhận dữ liệu.

Bạn có thể gửi code lên.
__________________
Ngày mai bắt đầu từ ngày hôm nay

Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này:
http://www.picvietnam.com/forum//showthread.php?t=1263
nhh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-04-2008, 03:54 PM   #85
quoc_nguyen
Nhập môn đệ tử
 
Tham gia ngày: Jan 2008
Bài gửi: 4
:
master - multi slave

Bạn nào đã làm giao tiếp i2c chế độ một master nhiều slave cho mình hỏi tí.
Mình dùng Css C, sử dụng 3 con pic 16f877a trong đó 1 master và 2 slave có một bàn phím ở master để điều khiển lấy dữ liệu từ slave. không hiểu sao chỉ chạy đúng được một trong 2 con, sau đó luôn gửi về giá trị 255.
quoc_nguyen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-04-2008, 06:24 PM   #86
tam_pascal
Nhập môn đệ tử
 
Tham gia ngày: Sep 2007
Bài gửi: 8
:
Trích:
Nguyên văn bởi quoc_nguyen View Post
Bạn nào đã làm giao tiếp i2c chế độ một master nhiều slave cho mình hỏi tí.
Mình dùng Css C, sử dụng 3 con pic 16f877a trong đó 1 master và 2 slave có một bàn phím ở master để điều khiển lấy dữ liệu từ slave. không hiểu sao chỉ chạy đúng được một trong 2 con, sau đó luôn gửi về giá trị 255.
- Mình dùng thêm một dây nữa nối từ M-S, dây này do S điều khiển = 0 báo cho M biết là S muốn truyền dữ liệu đến M, khi S truyền xong thì cho dây này =1. Còn M cứ thấy dây này =0 là hỏi S và nhận data về. Chứ kết nối hai dây thì M cứ phải hỏi liên tục( mỏi miệng)..hihi. chúc vui
- Tiện thể cho mình hỏi một chút: mình dùng Master =18f4550 và slave=16f877a địa chỉ 0x10 thì tốt, khi chuyển sang dùng 2 con đều là 18f4550 khi lại không đc, (vẫn địa chỉ 0x10) Hay ở 18f4550 con slave phải có địa chỉ khác nhỉ. Ai biết chỉ giúp mình với....xin cảm ơn trước.

thay đổi nội dung bởi: tam_pascal, 22-04-2008 lúc 06:46 PM.
tam_pascal vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-04-2008, 12:46 PM   #87
electronicltv
Đệ tử 4 túi
 
electronicltv's Avatar
 
Tham gia ngày: Jul 2006
Nơi Cư Ngụ: Bốn biển là nhà
Bài gửi: 69
:
Cấu hình cho I2C của pic8F4431 dùng pin_D2 và pin_D3 như sau:
trường hợp 1:
Code:
#include <18F4431.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP,PUT,SSP_RD
#use delay(clock=20000000)
#use i2c(SLAVE, SDA=PIN_C4, SCL=PIN_C5, address=0xa0,force_hw,slow)
trường hợp 2:
Code:
#include <18F4431.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP,PUT,SSP_RD
#use delay(clock=20000000)
#use i2c(SLAVE, SDA=PIN_D2, SCL=PIN_D3, address=0xa0,force_hw,slow)
Tìm hoài k thấy tài liệu hướng dẫn về dzụ này. Với trường hợp 1 thì chạy đúng mặc dù phần mềm chọn pin_c4 và C5 còn phần cứng dùng Pin_D2 và D3. Còn trường hợp 2 là pó chíu luôn, kô xảy ra ngắt SSP luôn. Tìm ra hai trường hợp này là phải ngồi "mò" cả ngày, hic
Vậy giải thích hai trường hợp này: do CCS "chuối" hay do người dùng "gà" quá?
__________________
YM: electronicltv

thay đổi nội dung bởi: electronicltv, 24-04-2008 lúc 05:28 PM. Lý do: bỏ code vào thẻ code
electronicltv vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-04-2008, 02:28 AM   #88
pictd03
Nhập môn đệ tử
 
pictd03's Avatar
 
Tham gia ngày: Apr 2008
Bài gửi: 8
:
Wink PIC và RS_485

xin cho mình hỏi, có ai đã từng làm giao tiếp PIC16f877a với RS_485 chưa? vì mình đang thiết kế mạng dùng 485 kết nối với PIC, nếu có hướng dẫn dùm mình nha, thanks!
Anh Nam nếu biết chỉ giáo em với nha! thanks
pictd03 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-04-2008, 02:50 AM   #89
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi pictd03 View Post
xin cho mình hỏi, có ai đã từng làm giao tiếp PIC16f877a với RS_485 chưa? vì mình đang thiết kế mạng dùng 485 kết nối với PIC, nếu có hướng dẫn dùm mình nha, thanks!
Anh Nam nếu biết chỉ giáo em với nha! thanks
Tôi thử dùng các từ khóa "PIC" và "RS-485" thì thấy có nhiều project trên mạng, có sơ đồ nguyên lý và mã nguồn. Tôi chưa từng làm về vấn đề này, nên có lẽ không giúp gì cho bạn được.

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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-05-2008, 12:06 AM   #90
Table
Nhập môn đệ tử
 
Tham gia ngày: Nov 2006
Bài gửi: 2
:
Re:

Trích:
Nguyên văn bởi electronicltv View Post
Cấu hình cho I2C của pic8F4431 dùng pin_D2 và pin_D3 như sau:
trường hợp 1:
Code:
#include <18F4431.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP,PUT,SSP_RD
#use delay(clock=20000000)
#use i2c(SLAVE, SDA=PIN_C4, SCL=PIN_C5, address=0xa0,force_hw,slow)
trường hợp 2:
Code:
#include <18F4431.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP,PUT,SSP_RD
#use delay(clock=20000000)
#use i2c(SLAVE, SDA=PIN_D2, SCL=PIN_D3, address=0xa0,force_hw,slow)
Tìm hoài k thấy tài liệu hướng dẫn về dzụ này. Với trường hợp 1 thì chạy đúng mặc dù phần mềm chọn pin_c4 và C5 còn phần cứng dùng Pin_D2 và D3. Còn trường hợp 2 là pó chíu luôn, kô xảy ra ngắt SSP luôn. Tìm ra hai trường hợp này là phải ngồi "mò" cả ngày, hic
Vậy giải thích hai trường hợp này: do CCS "chuối" hay do người dùng "gà" quá?
Cái này cũng có nghe rồi, mấy bồ đã bị thì kêu CCS chuối. còn tui đang làm trên C18 thấy tình hình còn...chuối hơn. huhu
Table vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lờ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à 12:26 PM.


Đượ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