Arduino ở 20 MHz?


9

Tôi tự hỏi tại sao Arduino không chạy ở 20 MHz, tần số mà AVR được chỉ định cho. Bây giờ, chạy ở 16 MHz, chúng tôi đang lãng phí hiệu suất 20% cho không có gì.

Tôi không nghĩ có bất kỳ hàm ý nào khi bạn thay thế bộ cộng hưởng 16 MHz bằng loại 20 MHz, có lẽ là ngoại lệ duy nhất cho baudrate trong bộ tải khởi động. Hay là có?

Có ai biết tại sao các nhà thiết kế Arduino chọn 16 MHz không?


Đừng quên đặt cầu chì khi bạn thực hiện việc này
portforwardpodcast

1
@portforwardpodcast không cần thay đổi cầu chì. Chúng đã được đặt thành "Bộ tạo dao động ngoài xoay toàn phần".
Gerben

Câu trả lời:


6

Không có lý do phần cứng (theo như tôi biết) rằng bạn không thể chạy Arduino phù hợp ở 20 MHz. Mặc dù vậy, bạn sẽ gặp phải sự thiếu chính xác về thời gian trong phần mềm, vì cấu hình Arduino tiêu chuẩn rõ ràng hoạt động tốt nhất nếu tốc độ xung nhịp là 8 hoặc 16 MHz.

Tôi nghi ngờ điều này phần lớn là vì lý do lịch sử. Các bo mạch Arduino ban đầu dựa trên các chip chỉ lên đến 16 MHz, chẳng hạn như ATmega8. Sử dụng cùng một cấu hình cho tất cả các chip chỉ giúp mọi thứ đơn giản và nhất quán hơn một chút.

Có nhiều thông tin hơn ở đây về các vấn đề thời gian: http://forum.arduino.cc/index.php?topic=158223.0#msg_1186708


1
Cảm ơn câu trả lời của bạn. Bạn có thể giải thích về "sức mạnh chính xác của 2" không? Khoảng thời gian 1 giây mà các xung đồng hồ được tính không có ý nghĩa gì với vi điều khiển, nó chỉ biết tiếng tích tắc của đồng hồ. Hơn nữa, 16 MHz không phải là công suất chính xác là 2, mà phải là 16.777216 MHz.
Joris Groosman

@JorisGroosman Xin lỗi tôi đã không giải thích điều đó đúng. Đó là về cách lõi Arduino tính toán micro giây từ tích tắc đồng hồ. Chủ đề diễn đàn này đưa ra một lời giải thích tốt hơn nhiều so với tôi có thể.
Peter Bloomfield

4

Bạn có thể, và tôi làm.

Về mặt kỹ thuật, nó không phải là Arduino nữa. Tôi đã tạo ra bảng của riêng mình, thay thế một bộ cộng hưởng trên bảng sẽ yêu cầu một số hàn tốt, nhưng nó chắc chắn là có thể.

Có một số vấn đề: Mọi thứ liên quan đến thời gian (ví dụ millis ()) sẽ được chạy nhanh hơn mức cần thiết - 25% millis () mỗi giây. Ngoài ra, bộ tải khởi động dự kiến ​​16 mhz, vì vậy bạn sẽ không thể lập trình lại nó ở tốc độ này. Tôi đã mua một lập trình viên USBASP - nó móc vào lưới pin 2x3 ở một bên của bảng và cho phép bạn lập trình lại nó mà không cần bộ nạp khởi động (đây là cách bộ nạp khởi động được đặt ở vị trí đầu tiên!). Bạn sẽ cần ít nhất 4,5 volt ở 20 mhz để tránh sự cố, so với 3,78 volt cho 16 mhz - điều này có nghĩa là pin sẽ tiêu hao nhanh hơn một chút (pin 3x1.5v sẽ hết khá nhanh) và nếu bạn có bất kỳ động cơ hoặc lực hút nào khác pin, 3 pin 1,5v có thể sẽ không hoạt động ngay cả khi chúng còn mới.

Ngoài ra, đi theo hướng ngược lại chính xác, tốc độ xung nhịp càng thấp, điện áp càng thấp - đối với một số dự án, bạn có thể không cần tốc độ xung nhịp - bạn có thể giảm xuống mức 1,8v chạy ở tốc độ 4 MHz.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.