Các bác cho em hỏi, em dùng chân RC3(SCK)+RC5(SD0) để làm chân truyền dữ liệu SPI làm bảng quang báo, bây giờ em muốn giao tiếp đồng hồ ds1307. Nhưng con này giao tiếp i2c, nên cần chân RC3(SCL)+RC4(SDA). Vậy sẽ bị trùng chân RC3. Không biết phải làm sao đây? Các bác giúp em xem có cách nào sử dụng cả 2 I2C và SPI?
Hỏi về I2C và SPI
Collapse
X
-
Tags: None
-
Cái này nếu bạn viết chương trình cho vdk bằng C (CSS C) thì không có khó khăn gì vì CSS có thể tự động sinh mã điều khiển I2C bằng phần mềm. Do đó có thể dùng bất cứ chân I/O nào của vdk làm SCL và SDA chỉ cần mình khai báo các chân đó trong #useic2c(master,scl=rc0,sda=rc1......)
Chúc vui.
-
i2c
mình có thử dùng các file trong hell của ccs để giao tiếp pic với 24c64.Nguyên văn bởi thienthan_de Xem bài viếtCái này nếu bạn viết chương trình cho vdk bằng C (CSS C) thì không có khó khăn gì vì CSS có thể tự động sinh mã điều khiển I2C bằng phần mềm. Do đó có thể dùng bất cứ chân I/O nào của vdk làm SCL và SDA chỉ cần mình khai báo các chân đó trong #useic2c(master,scl=rc0,sda=rc1......)
Chúc vui.
mình đã chạy thử các file 2464.c, 24512.. trong css.
nhưng mình thấy khi ghi vào 1 byte và đọc ra 1 byte thì được nhưng nếu ghi vào 2 hay nhiều byte rồi đọc ra thì không chạy được. nếu bạn đã làm được giao tiếp pic với 24c64 bằng ccs thì giúp mình vớiLMD 238 Tăng Bạc Hổ - TP. Quy Nhơn.
Comment
-
ìc
Cái này chắc bạn mô phỏng trên Proteus phải không?! Mình cũng đã từng chạy thử mấy file trong help của css như bạn nói => không được thật. Theo mình nghĩ có thể tại Proteus mô phỏng không thật sự chính xác, mình cũng bị trường hợp tương tụ khi mô phỏng giao tiếp ìc với 2 slave. Cũng không rõ lí do. Nhưng trong trường hợp của bạn không nên đọc và ghi nhiều byte liên tục như trong vd trong help, nó dùng biến state để làm con trỏ cho mảng nên đó có thể là lý do mô phỏng không đúng!?.
Để cải thiện bạn nên dùng một biến độc lập khác để làm con trỏ trỏ tới buffer cần lưu dữ liệu, cứ mỗi lần có ngắt ssp thì lại tăng biến con trỏ này lên, ngược lại khi gửi dữ liệu lên cho master. Cũng nên dùng một biến khác nữa để lưu giá trị nhận được khi master gửi xuống ( vd: biến indata=i2c_read()...). Mình cũng khuyên bạn nên dùng delay_ms(1) trong phục vụ ngắt #int_ssp sau hàm state=i2c_isr_state(), cái này mình không rõ lý do nữa, có thể phải đợi cho dữ liệu ổn định trên bus cúng có thể tai proteus... Nếu có điều kiện làm mạch thật sẽ giải quyết các vấn đề trên.
Cái này mình làm chạy rùi nhưng hôm nay không mang code rheo nên không up lên cho bạn được. Mong thông cảm.
Chúc may mắn.
Comment
-
i2c
cảm ơn bạn nhiều !Nguyên văn bởi thienthan_de Xem bài viếtCái này chắc bạn mô phỏng trên Proteus phải không?! Mình cũng đã từng chạy thử mấy file trong help của css như bạn nói => không được thật. Theo mình nghĩ có thể tại Proteus mô phỏng không thật sự chính xác, mình cũng bị trường hợp tương tụ khi mô phỏng giao tiếp ìc với 2 slave. Cũng không rõ lí do. Nhưng trong trường hợp của bạn không nên đọc và ghi nhiều byte liên tục như trong vd trong help, nó dùng biến state để làm con trỏ cho mảng nên đó có thể là lý do mô phỏng không đúng!?.
Để cải thiện bạn nên dùng một biến độc lập khác để làm con trỏ trỏ tới buffer cần lưu dữ liệu, cứ mỗi lần có ngắt ssp thì lại tăng biến con trỏ này lên, ngược lại khi gửi dữ liệu lên cho master. Cũng nên dùng một biến khác nữa để lưu giá trị nhận được khi master gửi xuống ( vd: biến indata=i2c_read()...). Mình cũng khuyên bạn nên dùng delay_ms(1) trong phục vụ ngắt #int_ssp sau hàm state=i2c_isr_state(), cái này mình không rõ lý do nữa, có thể phải đợi cho dữ liệu ổn định trên bus cúng có thể tai proteus... Nếu có điều kiện làm mạch thật sẽ giải quyết các vấn đề trên.
Cái này mình làm chạy rùi nhưng hôm nay không mang code rheo nên không up lên cho bạn được. Mong thông cảm.
Chúc may mắn.
đúng là proteus không mô phỏng được. mình đã làm mạch thật và chạy rất tốt.LMD 238 Tăng Bạc Hổ - TP. Quy Nhơn.
Comment
Bài viết mới nhất
Collapse
-
bởi domar123Trong môi trường vận hành kinh doanh và công việc văn phòng hằng ngày, tính ổn định, độ bền bỉ và chi phí đầu tư luôn là những ưu tiên hàng đầu. Bộ vi xử lý AMD Athlon 3000G cùng phiên bản Athlon 3000G MPK mang lại giải pháp máy tính phổ...
-
Channel: Đánh giá sản phẩm DTVN
Hôm qua, 10:53 -
-
bởi ittcCác bác ơi, có người bày em là nên đăng ký học qua thầy, thầy sẽ nhiệt tình hơn rồi thầy quen biết trong giới thi dễ đậu hơn bla bla, nhưng đã có nhiều vụ thầy nhận tiền xong trốn luôn, hoặc giữa thầy và trung tâm không đồng nhất...-
Channel: Tâm tình dân kỹ thuật
20-08-2026, 19:27 -
-
-
bởi domar123Giải pháp build PC thông minh cho game thủ thực dụng
Khi tự lắp một bộ PC chơi game với ngân sách có hạn, việc chi tiêu hợp lý từng đồng là chìa khóa để đạt hiệu năng thực tế cao nhất. Sử dụng các vi xử lý tích hợp đồ...-
Channel: Đánh giá sản phẩm DTVN
20-08-2026, 10:00 -
-
bởi domar123Giải pháp cho dàn PC cao cấp chơi game và làm việc
Khi xây dựng một bộ máy tính cao cấp, việc chọn đúng vi xử lý và card đồ họa sẽ quyết định trực tiếp đến trải nghiệm thực tế của bạn. Dòng chip AMD trang bị công nghệ...-
Channel: Đánh giá sản phẩm DTVN
18-08-2026, 08:55 -
-
bởi domar123Giải pháp toàn diện cho người dùng đa nhiệm
Nếu bạn đang cần một bộ máy vừa phục vụ công việc chuyên môn nặng vừa đáp ứng nhu cầu giải trí cao cấp, sự kết hợp giữa Ryzen 9 9950X TRAY và Radeon RX 9070 XT 16GB là lựa chọn...-
Channel: Đánh giá sản phẩm DTVN
17-08-2026, 17:12 -
-
bởi lvhnKhác nhau là đi lái thuê hoặc chạy dịch vụ được
...
-
Channel: Tâm tình dân kỹ thuật
17-08-2026, 15:50 -
-
bởi ittcHic, sao nhiều anh em khuyên là đàn ông đã học thì học luôn số sàn chứ đừng học số tự động anh....-
Channel: Tâm tình dân kỹ thuật
16-08-2026, 17:46 -
-
bởi mèomướp1. Tìm hiểu đc thì càng tốt, bận thì thôi. Ko cần quá quan trọng
2. Số tự động cho đơn giản, kiểu như đi xe ga ấy ạ
3. Học lý thuyết tử tế ok
4.ok
5.có. đủ số km, tgian cầm lái là đc
6.đi ăn tập thể,...-
Channel: Tâm tình dân kỹ thuật
14-08-2026, 16:34 -

Comment