Vi điều khiển có thể chạy ở tần số xung nhịp thấp tùy ý không?


103

Ví dụ, biểu dữ liệu cho ATTiny13A, liệt kê tần số tối thiểu là 0 MHz. Điều này có nghĩa là đồng hồ có thể chạy ở bất kỳ tần số thấp tùy ý mà không có hiệu ứng xấu? Tôi đang giả sử nó rút dòng điện thấp hơn ở tốc độ xung nhịp thấp hơn? Có phải 0 MHz có nghĩa là bạn có thể dừng đồng hồ hoàn toàn, và miễn là nguồn vẫn được áp dụng, nó sẽ nhớ trạng thái của nó vô thời hạn?


34
Tôi muốn nói thêm, đây là một câu hỏi xuất sắc. Hầu hết các EE cao cấp không dành thời gian để thực sự đọc và suy nghĩ về datasheets, đây là phần bổ sung cho bạn hoặc là một sự xúc phạm đối với họ, tôi muốn ám chỉ cả hai.
Kortuk

Tôi không hoàn toàn chắc chắn rằng bộ tạo dao động RC bên trong bị tắt trừ khi bạn hướng dẫn cụ thể cho nó (thông qua các tùy chọn tiết kiệm năng lượng khác nhau). Không chắc chắn nó được sử dụng cho mục đích gì, nhưng ít nhất là cho EEPROM và có lẽ là ADC.
jippie

1
@jippie bạn đang nói RC nội bộ gì? Ví dụ, ATMegaX có RC bên trong cho đồng hồ hệ thống (thường là 8Mhz, với bộ đếm trước div 8 tùy chọn), nó có bộ dao động theo dõi. Đồng hồ hệ thống là cầu chì được chọn và có thể tắt khi sử dụng đồng hồ bên ngoài. Những người khác như bạn nói có thể bị vô hiệu hóa bởi các chế độ tiết kiệm năng lượng, nhưng tôi nghi ngờ sẽ dừng lại bởi đồng hồ hệ thống.
Diego C Nascimento

Câu trả lời:


73

Đúng. Nếu biểu dữ liệu nói "hoạt động hoàn toàn tĩnh", thì bạn có thể đồng hồ ở mọi tốc độ, thậm chí 0 Hz. Một con chip "động" cần phải có đồng hồ ở một tỷ lệ cụ thể hoặc nó mất trạng thái.


1
Bạn có một ví dụ về một vi mô cho phép điều này?
MrEvil

4
Bộ vi điều khiển có chứa flash trên chip có thể chỉ định tốc độ xung nhịp tối thiểu (và tối đa) khi ghi vào flash. Tuy nhiên, khi đọc từ flash, điều này không áp dụng.
Steve Melnikoff

8
MrEvil, sê-ri Atmel AVR ATtiny được đề cập trong câu hỏi là hoàn toàn tĩnh, vì tôi nghĩ rằng hầu hết tất cả các chip Atmel AVR. Và tôi nghĩ rằng hầu hết tất cả các bộ vi điều khiển PIC của Microchip.
todbot

7
Trên thực tế, tôi nghĩ rằng ADC trong ATTiny13A không hoạt động ở tần số thấp, có thể là do sự phân rã tụ điện mẫu và giữ? "Theo mặc định, mạch xấp xỉ liên tiếp yêu cầu tần số xung nhịp đầu vào trong khoảng từ 50 kHz đến 200 kHz để có độ phân giải tối đa. ... Mô-đun ADC chứa bộ đếm gộp, tạo ra tần số xung nhịp ADC chấp nhận được từ bất kỳ tần số CPU nào trên 100 kHz."
endolith

8
endolith - Tôi đồng ý, ADC thường không hoạt động ở tần số thấp. Theo như tôi có thể nói, thực tế mọi thứ khác trên tất cả các bộ vi điều khiển hiện đại tiếp tục hoạt động tốt đến tận "0 Hz", hay còn gọi là "tạm dừng vô thời hạn". Đặc biệt, nhiều bộ vi điều khiển có chế độ "ngủ năng lượng thấp" dừng tất cả các đồng hồ, cho đến khi một cái gì đó - thường là một người nhấn nút - đánh thức nó và nó hoạt động trở lại ngay khi nó rời đi. vi.wikipedia.org/wiki/Static_logic_(digital_logic)
davidcary

23

Tôi đang đăng một câu trả lời khác, chỉ vì câu hỏi cuối cùng bạn không được trả lời trước đó.

Todbot là hoàn toàn chính xác. Nó cũng sẽ rút năng lượng thấp hơn ở tốc độ thấp hơn. Điều đó cũng có nghĩa là nếu bạn cung cấp đồng hồ từ bộ xử lý khác, chẳng hạn, bạn có thể ngừng cung cấp nó tại bất kỳ thời điểm nào và sau đó bắt đầu bấm giờ sau đó, miễn là bạn không đi nhanh hơn tốc độ tối đa, bạn sẽ ổn.

Các chip tôi có được một sự thay đổi cường độ giữa bộ dao động 32768Hz và 1 MHz. Tôi đã có các ứng dụng mà tôi không cần tốc độ, tôi chỉ cần một anh chàng nhỏ khác thực hiện một số xử lý dữ liệu cơ bản cho tôi.

Hi vọng điêu nay co ich.


9
Tôi đã luôn muốn chạy dòng đồng hồ của vi điều khiển bằng một nút bấm. Hãy để con người là đồng hồ. :) Một lưu ý nghiêm trọng, một điều thực sự tốt đẹp về các thiết kế tĩnh này là mức tiêu thụ năng lượng của chúng là tuyến tính với tốc độ xung nhịp: làm chậm đồng hồ và sử dụng ít năng lượng hơn. Điều này có thể thực sự tiện dụng.
todbot

5
Có, nhưng tôi muốn lưu ý, tiêu thụ năng lượng là một hàm tuyến tính có bù, ngay cả khi không có đồng hồ, chúng vẫn tiêu thụ năng lượng, đặc biệt là với bất kỳ đầu ra nào được điều khiển. Chúng tôi vừa có thực tập sinh mới trong công việc của mình, tôi sẽ đề nghị chúng tôi sử dụng một nút bấm và xem điều gì sẽ xảy ra.
Kortuk

13
@todbot Ý kiến ​​hay. :-) Nhưng hãy chắc chắn để gỡ nút bấm.
starblue

4
Hãy thử với một "crank crank" (theo nghĩa của Jargon: jargon.net/jargonfile/g/grindcrank.html ) :-)) (và vâng, nhiều năm trước tôi đã xây dựng một bước để chuyển mã khi tôi sử dụng Turbo Pascal ở trường :-)
Axeman

@todbot Nó không thực sự xa vời hay khó khăn, nếu bạn có thể chấp nhận một sự trừu tượng thô. Có một số ví dụ về những người sử dụng các tiện ích như vậy để dạy cách máy tính hoạt động. Myke Predko có một cuốn sách thực sự hay và thậm chí nó còn đi kèm với PCB (mặc dù không dành cho dự án máy tính): amazon.com/Digital-Electronics-Guidebook-Michael-Predko/dp/ trộm
Lou

17

Hầu hết các thiết kế vi điều khiển hiện đại sẽ hoạt động với bất kỳ mẫu nào trên đầu vào đồng hồ của chúng, chỉ với điều kiện là không có xung cao nào dưới một độ dài tối thiểu nhất định, không có xung thấp nào dưới một độ dài tối thiểu nhất định và không có mức cao thấp thấp hoặc cao thấp cặp xung nằm dưới một độ dài nhất định. Về cơ bản điều xảy ra là sau khi chip thực hiện tất cả các hành động liên quan đến một cạnh đồng hồ cụ thể, chip sẽ ở trạng thái không làm gì ngoài việc chờ đợi cạnh đồng hồ tiếp theo. Nếu cạnh đồng hồ tiếp theo không đến trong mười ngày sau đó (trừ khi chip có một số bộ giám sát bên ngoài), chip sẽ ở trạng thái giống như khi cạnh đã đến thời điểm chip sẵn sàng cho nó.

Lưu ý rằng, nói chung, tạm dừng đồng hồ trên vi điều khiển sẽ giảm đáng kể mức tiêu thụ hiện tại, nhưng không nhiều bằng việc sử dụng tính năng "ngủ". Mức tiêu thụ hiện tại của hầu hết các bộ vi điều khiển trong chế độ "chạy" có thể được ước tính khá tốt dưới dạng dòng tĩnh không đổi cộng với một lượng dòng nhất định trên mỗi chu kỳ mỗi giây (có thể được biểu thị một cách tự nhiên hơn dưới dạng điện tích trên mỗi chu kỳ). Ví dụ, một con chip có thể có dòng điện hoạt động là 10uA, cộng với dòng điện 0,1mA / MHz (100pC / chu kỳ). Chạy một con chip như vậy ở 10 MHz sẽ mang lại dòng điện 1.01mA. Chạy nó ở 1MHz sẽ mang lại 0,11mA. Chạy nó ở 100KHz sẽ mang lại 0,02mA. Chạy nó ở tần số 1Hz woudl mang lại 0,01001001. Mặt khác, chip có thể cung cấp dòng ngủ 1uA. Nói chung là, vào chế độ ngủ sẽ tắt hoàn toàn các khu vực của chip mà sẽ không làm gì hữu ích trong khi chip đang ngủ, do đó tránh bất kỳ dòng rò nào như vậy có thể có. Trong một số trường hợp, nó cũng sẽ giảm điện áp đến các khu vực như các tệp đăng ký xuống mức mà các tệp đăng ký có thể giữ nội dung của chúng, nhưng không thể truy cập chúng nhanh chóng (vì chúng không thể truy cập được, tốc độ truy cập không thành vấn đề) .

Một số bộ vi xử lý cũ, vi điều khiển và các thiết bị khác có thời gian cao nhất tối đa và / hoặc thấp đồng hồ. Bộ xử lý như vậy đã sử dụng logic động để tiết kiệm mạch. Như một ví dụ về logic động, hãy xem xét một thanh ghi thay đổi: một bit thanh ghi tĩnh điển hình đòi hỏi một mạch hai bóng bán dẫn để giữ giá trị, trong khi một bit thanh ghi động giữ giá trị trên cổng của một bóng bán dẫn đọc. Một thanh ghi dịch chuyển động có hai pha có thể được thực hiện trong NMOS bằng cách sử dụng bốn NFE và hai điện trở mỗi bit. Một thanh ghi dịch chuyển tĩnh sẽ yêu cầu tám NFE và bốn điện trở mỗi bit. Phương pháp logic động không gần như quá phổ biến ngày nay. Trở lại những năm 1970, điện dung cổng là đáng kể và không có gì thoát khỏi nó. Do đó, không có lý do cụ thể để không tận dụng nó. Hôm nay, điện dung cổng nói chung là thấp hơn nhiều, và các nhà sản xuất chip đang tích cực cố gắng để giảm hơn nữa. Làm cho logic động hoạt động đáng tin cậy thường sẽ yêu cầu làm việc có chủ ý để tăng điện dung cổng. Trong hầu hết các trường hợp, diện tích chip bổ sung cần thiết để tăng điện dung có thể được sử dụng hiệu quả để thêm nhiều bóng bán dẫn để làm cho điện dung không cần thiết.


Bạn đề cập đến NMOS và IIRC có mối liên hệ giữa mức độ phổ biến của logic động và MOS bổ sung (CMOS) chưa có sẵn.
jpc

@jpc: Tôi đã kiểm tra sơ đồ của các chip NMOS khác nhau - một số rất chi tiết, bao gồm Atari 2600 TIA, một công việc thực sự của thiên tài - mọi người vẫn đang tìm kiếm những điều mới để làm với nó ba thập kỷ sau. Tôi nghĩ rằng một lợi thế của NMOS so với CMOS từ quan điểm tiện lợi trong thiết kế là 'bắn xuyên qua' (kích hoạt đồng thời ngẫu nhiên ổ đĩa cao và thấp) là một yếu tố không quan trọng, mặc dù tôi sẽ thú nhận một số sự tò mò về lý do tại sao CMOS không chạy ở điện áp đủ thấp để điểm giao nhau trên đầu vào sẽ tắt các trình điều khiển phía cao và thấp, thay vì kích hoạt cả hai.
supercat

@jpc: Trong NMOS, có thể triển khai cổng XOR với hai bóng bán dẫn và hai điện trở, nếu đầu vào đủ "mạnh". Ngay cả khi người ta phải thêm bộ biến tần cho cả hai đầu vào, một cổng xor bốn điện trở bốn bóng bán dẫn sẽ tốt hơn so với nhiều phương pháp khác. Mặc dù tôi chưa bao giờ thấy cách tiếp cận được sử dụng, mặc dù tôi đã thiết kế một mạch tương tự bằng cách sử dụng BJT vào khoảng năm 1978 (khái niệm thiết kế sẽ hoạt động tốt hơn với MOSFET, nhưng tôi không biết gì về chúng).
supercat

2
+1 - Tôi cảm thấy như viên ngọc thực sự mà bạn đề cập ở đây là tốc độ xung nhịp thấp hơn sẽ tiết kiệm năng lượng, nhưng không nhiều bằng các chế độ ngủ được thiết kế đặc biệt để tối ưu hóa tiết kiệm năng lượng. Chú ruột của tôi nói với tôi rằng bạn sẽ tiết kiệm được nhiều năng lượng hơn khi chạy bộ dao động nhanh kết hợp với việc sử dụng hợp lý chế độ ngủ, hơn là chạy ở tần số thực sự thấp liên tục.
Joel B

@JoelB: Điều đó phụ thuộc vào nhiều yếu tố. Trên nhiều bộ xử lý, có một độ trễ giữa việc bật đồng hồ nhanh và có thể thực sự sử dụng nó; Trong thời gian này, người ta sẽ lãng phí năng lượng. Nếu một người phải thức dậy, ví dụ 100x / giây, tốt hơn là chạy chậm liên tục hơn là liên tục bắt đầu và dừng lại. Mặt khác, nếu một người sắp bắt đầu và dừng đồng hồ nhanh, có thể tốt để giảm thiểu lượng thời gian mà nó chạy đến mức người ta có thể làm như vậy mà không lãng phí năng lượng bổ sung. Ví dụ ...
supercat

12

Có, bạn có thể dừng đồng hồ hoàn toàn và khởi động lại sau đó mà không có hậu quả. Bạn thậm chí có thể thay thế đồng hồ bằng một nút bấm và đi qua chương trình của bạn theo từng bước (tần số: khoảng 0,1 Hz).

Công suất gần như tuyến tính với tần số: ở mức 10 MHz, vi điều khiển sẽ tiêu thụ năng lượng gấp 10 lần so với mức 1 MHz. Tuy nhiên, điều này không có nghĩa là ở mức 0 Hz, mức tiêu thụ hoàn toàn bằng không. Luôn luôn có sự phân tán tĩnh, nhưng đó là rất thấp, thường là 1 uA hoặc ít hơn.

PS: lưu ý rằng ADC có tần số hoạt động tối thiểu. Nếu tần số quá thấp, tụ điện mà điện áp được đo sẽ phóng quá nhiều và phép đo của bạn sẽ sai.


Nút nhấn? Còn việc tranh luận thì sao?
Peter Mortensen

1
Nợ là cần thiết.
Vovanium

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.