題:
微控制器可以以任意低的時鐘頻率運行嗎?
endolith
2009-12-16 09:58:52 UTC
view on stackexchange narkive permalink

例如,ATTiny13A的數據表列出了0 MHz的最小頻率。這是否意味著時鐘可以以任意低頻運行而沒有不良影響?我假設它以較低的時鐘速度消耗較低的電流? 0 MHz是否意味著您可以完全停止時鐘,並且只要仍然通電,它就會無限期地記住其狀態?

我想補充一點,這是一個很好的問題。大多數高級EE都不會花時間真正地閱讀和思考數據表,這對您來說是一個補充,或者是對他們的侮辱,我想暗示一下。
我不能完全確定內部RC振盪器是否已關閉,除非您明確指示(通過各種節能選項)。不確定用於什麼用途,但至少用於EEPROM和ADC。
@jippie您在說什麼內部RC?例如,ATMegaX具有用於系統時鐘的內部RC(通常為8Mhz,帶有可選的div 8預分頻器),它具有看門狗振盪器。系統時鐘是保險絲選擇的,使用外部時鐘時可能關閉。您所說的其他功能可能會通過省電模式禁用,但我懷疑系統時鐘會停止該功能。
五 答案:
todbot
2009-12-16 10:07:32 UTC
view on stackexchange narkive permalink

是的。如果數據表顯示“完全靜態操作”,那麼您可以以任何速度(甚至0 Hz)對其進行計時。 “動態”芯片需要具有特定速率的時鐘,否則它將丟失其狀態。

您是否有一個允許這樣做的微型示例?
當寫入閃存時,包含片上閃存的微控制器可以指定最小(和最大)閃存時鐘速度。但是,從閃存讀取時不適用。
MrEvil,問題中提到的Atmel AVR ATtiny系列是完全靜態的,因為我認為大多數Atmel AVR芯片都是如此。而且我認為大多數Microchip的PIC微控制器都是如此。
我想將MSP430添加到Todbot的列表中。對於大多數現代微控制器而言,動態類確實很難設計,因此大多數微控制器都沒有。
實際上,我認為ATTiny13A中的ADC不能在低頻下工作,可能是因為採樣保持電容器衰減了嗎? “默認情況下,逐次逼近電路要求輸入時鐘頻率在50kHz至200kHz之間才能獲得最大分辨率。...ADC模塊包含一個預分頻器,該分頻器可以從高於100 kHz的任何CPU頻率生成可接受的ADC時鐘頻率。”
endolith –我同意,ADC通常不會在低頻下工作。據我所知,實際上,所有現代微控制器上的所有其他功能在直至“ 0 Hz”(也稱為“無限期暫停”)的情況下都可以正常工作。特別是,許多微控制器都具有“低功耗睡眠”模式,該模式會停止所有時鐘,直到某些東西(通常是一個人按下按鈕)將其喚醒,並從中斷的位置繼續恢復。http://en.wikipedia .org / wiki / Static_logic_(digital_logic)
RCA 1802(http://en.wikipedia.org/wiki/RCA_1802)是AFAIK最早的允許靜態操作的微型計算機,其歷史可追溯到1976年。
但是,從CPU內核的時鐘範圍的角度來看,ADC可以被視為外圍設備。靜態操作似乎沒什麼大不了的。您可以使用TTL芯片來整理一個時序電路,它將工作到任意低的時鐘速度。就像DRAM的存在一樣,需要刷新就產生了挑戰。
@Kaz:在製造NMOS器件時,與使用無源上拉電阻相比,無源上拉比在無源上拉電阻要強得多,該無源上拉在一個週期的一半上將其無條件拉高,然後在另一半個週期上將其有條件地拉低。在一個週期內將總線拉高。前一種方法將浪費與每個週期的“實際”總線電容成正比的電流,而後一種方法將浪費與電路的實際供電電流成比例的電流,該電路的最壞情況(最低)供電能力必須足以為最差的供電。情況(最大)總線電容。
-1
Kortuk
2009-12-16 10:41:34 UTC
view on stackexchange narkive permalink

我要發布另一個答案,只是因為您之前沒有回答過最後一個問題。

Todbot是完全正確的。它也會以較低的速度消耗較低的功率。這也意味著,例如,如果您從另一個處理器提供時鐘,則可以隨時停止提供時鐘,然後再開始為其提供時鐘,只要您不超過最大速度,就可以了。

我的芯片在32768Hz振盪器和1MHz振盪器之間得到了一個數量級的變化。我有不需要速度的應用程序,我只需要另一個小傢伙為我做一些基本的數據處理。

希望這會有所幫助。

我一直想用按鈕來運行微控制器的時鐘線。讓人類成為時鐘。 :)值得一提的是,這些靜態設計的真正好處是功耗與時鐘速度成線性關係:降低時鐘速度並使用更少的功率。這真的很方便。
是的,但我要指出的是,功耗是一個帶偏移的線性函數,即使沒有時鐘,功耗仍然會消耗功率,特別是在驅動任何輸出時。我們剛剛得到了新的實習生,我建議我們使用按鈕,看看會發生什麼。
@todbot好主意。 :-)但是請確保將按鈕反跳。
嘗試使用“ grind crank”(如Jargon的意思:http://www.jargon.net/jargonfile/g/grindcrank.html):-))(是的,很多年前,我構建了一步代碼當我在學校使用Turbo Pascal時:-)
@todbot如果您可以接受一個粗略的抽象,這並不是一件難事或難事。人們使用這種小工具來教計算機如何工作的例子有很多。 Myke Predko有一本非常不錯的書,甚至附有PCB(儘管不是用於計算機項目的):http://www.amazon.com/Digital-Electronics-Guidebook-Michael-Predko/dp/0071377816/ref=sr_1_1 ?ie = UTF8&qid = 1260970753&sr = 8-1
-1
@Axeman-術語文件聲稱“磨碎的曲柄”是神話。相反的證據是:http://www.computerhistory.org/babbage/。右側的曲柄驅動計算機;左側的一個驅動打印機。通過觀看該頁面上的視頻,您可以更好地了解事物的大小;它大約八英尺高。
@PeteBecker: Curta計算器也有一個曲柄,實際上可以向上或向下拖動以選擇加法或減法。
supercat
2011-04-09 22:11:49 UTC
view on stackexchange narkive permalink

大多數現代微控制器設計都可以在其時鐘輸入上使用任何模式,只要沒有高脈衝低於某個最小長度,沒有低脈衝低於某個最小長度,並且沒有低-高-低或高-低-高脈衝對低於一定長度。從本質上講,發生的事情是,在芯片執行了與特定時鐘沿相關的所有動作之後,芯片將處於除了等待下一個時鐘沿之外什麼都不做的狀態。如果下一個時鐘沿沒有在十天之內到達(除非芯片有外部看門狗),那麼芯片將處於與芯片準備就緒之時就已經到達邊緣的狀態。

一些較舊的微處理器,微控制器和其他設備的最大時鐘高和/或時鐘低時間。這樣的處理器利用動態邏輯來節省電路。作為動態邏輯的一個例子,考慮一個移位寄存器:一個典型的靜態寄存器位需要一個兩晶體管電路來保存該值,而一個動態寄存器位則將值保存在讀出晶體管的柵極上。兩相時鐘動態移位寄存器可以在NMOS中實現,每位使用四個NFET和兩個電阻。靜態移位寄存器每位需要八個NFET和四個電阻。如今,動態邏輯方法已不再那麼普遍。早在1970年代,柵極電容就很大,並且沒有任何擺脫它的方法。因此,沒有特別的理由不利用它。如今,柵極電容通常要低得多,芯片製造商正在積極嘗試進一步降低它。要使動態邏輯可靠地工作,通常需要刻意工作以增加柵極電容。在大多數情況下,增加電容所需的額外芯片面積可以有效地用於增加更多的晶體管,從而無需增加電容。

您提到了NMOS和IIRC,動態邏輯的流行與互補MOS(CMOS)之間尚無聯繫。
-1
@jpc:在NMOS中,如果輸入足夠“強”,則可以用兩個晶體管和兩個電阻實現XOR門。即使必須將反相器添加到兩個輸入端,四晶體管四電阻異或門也將比許多其他方法更好。儘管我在1978年左右就使用BJT設計了類似的電路,但我從未見過所使用的方法(設計概念在MOSFET上可以更好地工作,但我對此一無所知)。
+1-我覺得您在這裡提到的真正的瑰寶是較低的時鐘速度確實可以節省功耗,但不如專門設計用於優化節能的睡眠模式那麼多。我的直覺告訴我,與持續以非常低的頻率持續運行相比,運行快速振盪器並明智地使用睡眠模式將節省更多功率。
@JoelB:這取決於許多因素。在許多處理器上,打開快速時鐘與實際使用之間存在延遲。在此期間,將浪費電力。如果有人必須醒來例如100x /秒,連續運行比持續啟動和停止要好。另一方面,如果要啟動和停止快速時鐘,則最好在不浪費額外能量的情況下將運行時間減至最小。例如...
...如果CPU具有可運行至16MHz的“高核心電壓模式”和可運行至4Mhz的“低核心電壓模式”,則在“停止”模式和“ 4MHz”模式之間進行切換可能比切換更好如果前者需要花費更少的時間喚醒,則在“停止”和“ 1MHz”模式之間切換;即使切換到16Mhz模式可以進一步減少喚醒時間,也可能不值得額外的能源成本。
@supercat-它的確確實取決於許多因素(有些無法量化)。最後,能源為王,您將不得不根據您的應用程序/處理器以及將要進行多少/經常的處理來定制時鐘方案。我只想指出您在本次討論中提到睡眠模式所帶來的“森林換樹”的觀點。我的直覺告訴我,仍有很多生產代碼帶有“ while(1){_ nop;}”,好心的工程師認為,他們通過以較低的速度運行而不是正確實現睡眠模式來節省最大的電量。
@JoelB:您的評論使我想起了一些同級工程師回想起來的問題:系統的音頻輸出有時會令人討厭。事實證明,只要操作系統檢測到CPU無事可做,就會使其進入睡眠狀態。這降低了功耗,進而使VDD略有上升。每隔10毫秒,CPU就會喚醒以查看是否還有其他工作要做。通過添加如下內容解決了該問題:“執行{} while(audio_powered_on());”在空閒任務中的“ sleep()”語句之前,因為在這種情況下,省電*不是*王者。
@supercat-聽起來像這個故事恰恰相反。應該設計一個規格正確/經過調節/濾波/去耦的電源,以便在處理器的預期工作負載上不會對音頻產生明顯影響。因此,似乎電源(或更確切地說,電源設計)仍然是主要的。好的修復方式!
您的睡眠功率比時鐘停止時間少意味著什麼?例如,在atmel上,睡眠和跑步之間唯一的不同是時鐘停止了。睡眠無能為力嗎?除非切斷部分電源?
@JoelB:電源過濾具有三個方面:(1)防止內部的垃圾進入外部;(2)防止外面的垃圾進入內部;(3)防止電流變化而改變內部電壓。針對#1進行優化通常會對#3產生不利影響。如果設備為音頻和CPU使用了完全獨立的電源,則可以避免此問題,但需要更多的電源電子設備;問題是CPU和音頻電路在同一過濾器的同一側。
@SectoKia:的選擇不是在時鐘停止和睡眠之間,而是在空閒時睡眠與執行無用指令之間的交替,以確保更均勻的功耗。儘管許多CPU確實在其低功耗睡眠模式中將電源削減了很多部分。
flup
2013-12-19 15:28:24 UTC
view on stackexchange narkive permalink

是的,您可以完全停止時鐘並在以後的時間重新啟動它而不會造成任何後果。您甚至可以通過按鈕替換時鐘,然後逐步逐步執行程序(頻率:約0.1 Hz)。

功率幾乎與頻率成線性關係:在10 MHz時,微控制器將消耗10倍的頻率。功率高達1 MHz。但是,這並不意味著在0 Hz時功耗完全為零。總是存在靜電耗散,但這非常低,通常為1 uA或更小。

PS:請注意,ADC確實具有最低工作頻率。如果頻率太低,則在其上測量電壓的電容器會放電太多,從而導致測量錯誤。

按鈕?去彈怎麼樣?
需要反跳。
Buzby
2013-04-17 15:08:18 UTC
view on stackexchange narkive permalink

這個問題來得很晚,它使我想起了我前一段時間看到的一個項目。

這是一個蝙蝠探測器,在大多數情況下,它使用運行在零赫茲頻率的PIC,然後對其計時

http://www.micro-examples.com/public/microex-navig/doc/077-picobat.html

在[此項目](http://scanlime.org/2008/09/using-an-avr-as-an-rfid-tag/)中,信號既是時鐘*也是芯片的功率*。 :)


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 2.0許可。
Loading...