Nếu đây là lần đầu tiên đến với Điện Tử Việt Nam, bạn có thể đọc phần Hỏi đáp bằng cách nhấn vào liên kết. Có thể bạn cần đăng kí trước khi có thể gửi bài . Để bắt đầu xem bài viết, chọn diễn đàn bạn muốn thăm dưới đây.
Đối vs 16f877, cho đỡ phí chân (40 chân lận mà), đừng dùng những cái 74hc595 nối tiếp (chân 9 trước mắc vào chân 14 con sau), tốt hơn là mỗi chân 14 mắc vào mỗi chân trên pic, chung port càng tốt, tối ưu khi số 595 nhỏ hơn hay bằng 8 (đúng 1 port). Khi đó sẽ tiết kiệm được số lệnh.
Computer Science major - Vietnamese-German University
Sponsored by
Bạn nói thế nào ấy chứ
Mình dùng theo kiểu 9 con trước nối với 14 con sau. Mất tổng cộng 5 chân PIC.
Để đưa được dữ liệu ra đến tận chân 595 mất tầm 5 lệnh ( trong đó lệnh xuất data là 1 lệnh còn các lệnh khác là enable,reset,lat....) .
Khi kết nối theo kiểu 9 trước-14 sau dùng 200 con 595 đi nữa thì vẫn chỉ mất 5 chân và 5 lệnh để xuất 200 byte dữleieeujra 200 con 595. Vậy có cách kết nối nào ít lệnh và ít chân hơn ko nhỉ ?
Hơn nữa khi kết nối kiểu ấy tốc độ xuất data được đưa lên tốc đổ khủng nhất (tầm trên 200KB/s )
Số lệnh tức tổng số chu kỳ lệnh cần dùng chứ ko phải tổng số chức năng.
Tôi ví dụ: Với 40 LED tương đương 5 74hc595, theo bạn cần làm như sau:
Xác lập chân DATA (1 chu kỳ lệnh)
Xác lập chân CLK (2 chu kỳ lệnh - tương ứng High sau đó Low)
2 thao tác đó cần lặp lại với 40 lần (vì mỗi lần chỉ xuất ra được 1 LED) tương đương 120 chu kỳ lệnh.
Theo tôi, 5 chân 14 của 595 mắc vào cùng 1 port
Các lập các chân DATA (1 chu kỳ lệnh: do cùng 1 port)
Xác lập chân CLK (2 chu kỳ lệnh)
2 thao tác đó cần lặp lại chỉ 8 lần (vì mỗi lần xuất tới 5 LED) tương đương 24 chu kỳ lệnh.
Tuy cách tôi khá tốn chân nhưng nhanh hơn cách bạn đến 5 lần (vs 5 74HC595).
Còn dùng giao tiếp SPI thì 200kB/s thì đúng rồi, bạn thử truyền tải bình thường ko cần giao tiếp xem, vài MB/s là chuyện bình thường. Nhưng tốc độ tới MB/s hay 200kB/s cũng ko quá quan trọng lắm nhỉ, vì thời gian quét cũng khá nhiều so với tốc độ này.
Computer Science major - Vietnamese-German University
Sponsored by
Số lệnh tức tổng số chu kỳ lệnh cần dùng chứ ko phải tổng số chức năng.
Tôi ví dụ: Với 40 LED tương đương 5 74hc595, theo bạn cần làm như sau:
Xác lập chân DATA (1 chu kỳ lệnh)
Xác lập chân CLK (2 chu kỳ lệnh - tương ứng High sau đó Low)
2 thao tác đó cần lặp lại với 40 lần (vì mỗi lần chỉ xuất ra được 1 LED) tương đương 120 chu kỳ lệnh.
Theo tôi, 5 chân 14 của 595 mắc vào cùng 1 port
Các lập các chân DATA (1 chu kỳ lệnh: do cùng 1 port)
Xác lập chân CLK (2 chu kỳ lệnh)
2 thao tác đó cần lặp lại chỉ 8 lần (vì mỗi lần xuất tới 5 LED) tương đương 24 chu kỳ lệnh.
Tuy cách tôi khá tốn chân nhưng nhanh hơn cách bạn đến 5 lần (vs 5 74HC595).
Còn dùng giao tiếp SPI thì 200kB/s thì đúng rồi, bạn thử truyền tải bình thường ko cần giao tiếp xem, vài MB/s là chuyện bình thường. Nhưng tốc độ tới MB/s hay 200kB/s cũng ko quá quan trọng lắm nhỉ, vì thời gian quét cũng khá nhiều so với tốc độ này.
Tôi thấy bạn tính có chỗ sai.
Bạn tính sao ra 5 lần vậy. Để mình tính lại xem nào. Xuất 5 byte. (Ở đây cứ coi rằng các lệnh mất số chu kì máy như nhau là 1).
Để xuất đủ 5 byte :
Clock 8 lần mất 16 chu kỳ.(High-Low).
Lấy giá trị 5 bit đầu của 5 byte mất 5 chu kì ( thực tế cái này mất nhiều hơn).
Xuất giá trị 5 bit này ra PORT mất 5.
Dịch 5 byte sang trái chờ lấy bit thứ 2 - 8 chu kì.
Chốt data - 2 chu kì.
Tổng cộng : 16+5+5+8+2 = 36 chu kì.
Còn một số giải thuật khác tốn ít hơn 1 chút nhưng ko quá nhiều.
Để biết chính xác có thể lấy máy hiện sóng ra đo khi cho xuất liên tục. Sẽ thấy số chu kì nó cao chót vót chứ ko ít vậy đâu.
Còn của mình :
Xuất 5 byte ra SPI : cần 5 lần xuất giá trị - 5 chu kì + chốt 1 nhát 2 chu kì nữa = 7. Việc xuất ra PORT do SPI đảm nhận, lúc này CPU rảnh rỗi.
___ Thời gian thực hiện.
Mình đã test với kiểu nối tiếp dùng SPI. Cho xuất hết 5 byte mất 16us. Bạn nói là nhanh hơn mình 5 lần tức là 3.2us tức là 16 chu kì máy để xuất hết 5 byte ? Mình xin bái phục
Mình đã test với cách của bạn với tốc độ nhanh nhất mất 13us cho xuất 5 bit => mất 104us cho xuất 5 byte.
Cứ cho là mình là 1 con gà đi thì không thể tối ưu dc từ 104us xuống 16us được đâu bạn ạ.
Sao có thể nhanh hơn mình 5 lần dc ?
Đã ghép nối 2 con 74HC595 như hình vẽ nhưng IC thứ 2 không chạy, chỉ dùm e với.vẫn có tín hiệu vào nhưng không có tín hiệu ra
Đây là mô phỏng với 595 cho bạn tham khảo.
Kết nối 5 con 595 kiểu nối tiếp dùng SPI để xuất 5 giá trị từ 1 đến 5 ra 595 ( U6 giá trị 1, U2 giá trị 5).
Xuất hết 5 byte mất 17us. 74HC595-SPI.zip
các huynh oi! đệ là lính mới mong các huynh chỉ bảo đệ với!
đệ đang nguyên cứu về 16f877a
các huynh ai có mạch nguyên lý 16f877a với led ma trận hoặc có tai liệu gi liên quan thi gửi mail cho đệ với.
mail của đệ là: catbuibk@gmail.com
cám ơn các huynh nhiều nhiều nhiều!
À, sản phẩm họ thiết kế ra, họ yêu cầu mình chứng minh là sau chỉnh sửa thì 1 là gỡ jump cắm lại không hư mạch, 2 là gỡ jump thì 220Vdc vẫn dùng được led áp thấp 20V mà không hư led như mình báo, nên họ hiểu rõ mà....
Bài học kiểu trực tuyến dù là loại đơn giản bậc nhất cũng vẫn cần chú tâm. Chỉ bật tai nghe lên thì không có loại nào thấm nổi đâu. Cách hay hơn, dễ hơn là kiếm phim tiếng Anh nào đó xem, ban đầu bật phụ đề tiếng Việt, nghe và...
Ha ha !
Thay đổi cách nghĩ thì sẽ nghĩ ra.
.
.
.
Một thứ cần kiểm soát dòng + nhiệt + công suất tiêu tán. Nhưng lại dùng tư duy ổn áp. Làm sao mà giải quyết được.
Nó là mạch ổn dòng.
Vì thế các anh nước lạ không thèm quan tâm là phải....
Vì cứ phải chỉnh sửa cho mỗi dải điện áp, quên chỉnh thì hư chíp phải bảo hành nên em thấy bất tiện, mới cần cái mạch 1 dải áp cao dùng cho tất cả loại đèn đó bác!...
Mình thỉnh thoảng cũng làm việc với người nước ngoài nói tiếng Anh thì toàn ghép nhặt từ, cộng với quơ tay quơ chân để diễn tả, hix. Nỗi khổ là không biết cách để mô tả sự việc. Tôi muốn tìm các bài giảng tiếng anh nào phù hợp...
Comment