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?
Thông báo
Collapse
No announcement yet.
Hỏi về I2C và SPI
Collapse
X
-
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 nguyendinhvanCó một chi tiết sai cơ bản trong kỹ thuật điện tử....
-
Channel: Tâm tình dân kỹ thuật
hôm nay, 19:31 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Bài hát mới, nhạc Phật: Về Giữa Chiêm Bao, sáng tác: Hoàng Đình Thường.
[Verse 1] Nhân gian bao thay đổi
ĐỜI là giấc CHIÊM BAO
Người mê lầm tranh đấu
KHỔ ĐAU mãi LUÂN HỒI.
VÔ THƯỜNG nào ai thấu
...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 19:01 -
-
Trả lời cho Giúp mình vẽ sơ đồ và phân tích nguyên lý làm việc của khảo sát các mạch nguồn ổn áp vớibởi davidcopyBạn muốn hỏi nguyên lý làm việc của mạch nào...
-
Channel: Hỗ trợ học tập
24-03-2026, 22:50 -
-
Trả lời cho Giúp mình vẽ sơ đồ và phân tích nguyên lý làm việc của khảo sát các mạch nguồn ổn áp vớibởi N_Tu_Hoc_HoiBạn cần sơ đồ mạch ổn áp bao nhiêu Volt, Nếu giống anh bạn guiwr có khả năng ổn áp dùng iC họ 78XX, 79XX. Những mạch này bạn tim kiếm trên google sẽ thấy!!
-
Channel: Hỗ trợ học tập
23-03-2026, 02:32 -
-
bởi chinhnguyen9
Điến âp vào 24V;Điên áp ra 30V;Dòng điện ra 10A
Trên nền tảng mạch Boost thay đổi như sau: cự âm tụ lọc C không nối mas mà nối vào Vc +24V
Mach phản hồi tao điê áp trên tụ lọc này ổn đinh ở 6V
Kết quả:
· Điện áp ra =24V+ 6V=30V
· Công...-
Channel: Hướng dẫn sử dụng diễn đàn
21-03-2026, 19:33 -
-
bởi chinhnguyen92. Các yếu tố để dòng điện đầu ra không bị "thiếu"
Dòng điện đầu ra bị "thiếu" có thể hiểu là không đủ 10A theo yêu cầu hoặc bị sụt áp khi tải thay đổi. Để đảm bảo điều này, bạn cần xem xét các yếu tố sau:
a. Khả năng chịu dòng của cuộn cảm- Dòng bão hòa (I_sat): Như
-
Channel: Hướng dẫn sử dụng diễn đàn
21-03-2026, 19:06 -
bởi chinhnguyen9
1. Tính toán cuộn cảm (Inductor)
Để tính giá trị cuộn cảm, chúng ta cần thực hiện các bước sau:
a. Xác định chu kỳ nhiệm vụ (Duty Cycle - D)
Với mạch tăng áp lý tưởng, chu kỳ nhiệm vụ được tính theo công thức :
D=1-VinVout=1-24V30V=0.2
Vậy D = 0.2 (20%)
b....-
Channel: Hướng dẫn sử dụng diễn đàn
21-03-2026, 19:03 -
-
bởi chinhnguyen9Công thức
Gain (dB) = 20 × log₁₀(A)
Thí dụ 1; 60dB
log₁₀(A)=60/20=3
⇒ A=V_out / V_in = 10³ = 1.000
Thí dụ 2; 100dB
log₁₀(A)=100/20=5
⇒ A=V_out / V_in = 105 = 100.000
Tí dụ 3; LM 358
Large Signal Open Loop Voltage Gain AVOL V/mV RL = 2.0...-
Channel: Hướng dẫn sử dụng diễn đàn
19-03-2026, 08:44 -
-
Trả lời cho Mạch 3s bị giảm điện áp đầu rabởi minhtri0405chả biết bạn xử lý được chưa , kích sạc hoặc điện áp > điện áp khối pin vào 2 chân P - P+ , nhiều mạch phải yêu cầu có kích lần đầu sau đó mới chạy...
-
Channel: Điện tử dành cho người mới bắt đầu
18-03-2026, 10:01 -

Comment