2011-07-22 21 views
3

我需要在瑞薩R8C/36CμController的引腳19上驅動32Khz方波。該引腳是不可協商的(電路設計已經完成)。20Mhz驅動高頻輸出(32Khz)瑞薩微控制器IO引腳

該軟件設計使用250μs中斷來模擬多任務,但這僅適用於2Khz全波。

我是否需要爲駕駛32 Khz創建另一個更高優先級的中斷,還是有其他一些我不知道的技巧?

+0

如果有32kHz非常關鍵,你最好將其完全分開。分開後,中斷處理程序也變得簡單。簡單很好。 –

+0

32kHz是至關重要的。我希望可以使用可用的板上時鐘或定時器,但我沒有在文獻中看到任何明確說明如何實現這一點的技巧。 – oosterwal

+0

我對芯片提供的那種建議不夠熟悉;我的評論主要來自過去在不同芯片上的經驗。 –

回答

1

尋找數據表爲芯片在:

enter image description here

它看起來像你的唯一真正的選擇是使用該引腳作爲一個通用輸出港口。 唯一可用的輸出模式似乎是通用輸出端口。

+0

這就是我的想法,謝謝。 – oosterwal

6

我對RC8並不熟悉,瑞薩在性能方面沒有多說,但是它是一個CISC處理器,每條指令通常4個週期,因此估計約4 MIPS?有些指令的分割時間長達30個週期。所以如果你創建一個64KHz的定時器並在每個中斷上翻轉輸出,那麼你在每個中斷之間有大約63條指令,你有中斷延遲加上代碼來翻轉這個位。如果它完全可以工作,則很可能會造成很大的CPU負載,並可能影響其他操作的及時性。

現實的,沒有重新設計,該項目可能不可行。在我看來,你已經在強調4KHz操作系統刻度 - 這種速度下的軟件開銷似乎是你CPU負載的一個重要組成部分。

[加]

我曾建議中斷之間的6個指令 - 在計算器手指麻煩,我已經改變了估計63,並主持我的結論爲「幾乎是行不通的」。

但是我再次查看數據表,中斷延遲是可變的,因爲指令執行是可變的,並且當前指令必須在中斷服務之前完成,最糟糕的情況是當DIVX指令執行時,何時需要在中斷程序的指令第一個之前多達51個週期。這是2.55us,當您需要中斷觸發每個15.625us時,可變延遲會產生顯着的抖動,佔CPU總時間的6%到16%,甚至不考慮ISR本身使用的時間。另外,如果中斷本身是預先佔用或更高優先級的中斷正在運行,否則將會產生進一步的抖動。

它是否工作取決於32KHz的準確度和抖動約束,以及您的代碼需要完成的任何其他操作。

3

正如很多人指出的那樣,如果32khz時鐘是用gpio生成的,從硬件的角度來看,這種設計似乎不是很好。

但是,我不知道你的情況有多絕望,也不知道所涉及的數量。但如果它是原型或非常短的系列,並且引腳20是空閒的,則可以短接引腳19和20,將引腳19設置爲輸入,將20設置爲輸出。由於引腳20可用作定時器rd的輸出,因此可以將該定時器設置爲輸出32khz而不使用任何中斷。

我不是瑞薩微型專家,但我正在從我在附加的數據表中看到的內容以及之前與其他MCU的經驗談過。

我希望這會有所幫助。

1

如果您不能將引腳19綁定到另一個引腳,該引腳的硬件可以產生32KHz,並且只需將引腳19作爲輸入?不是一個驕傲的時刻,但在DIL包裝上很容易。

你可以每15.6us調用一次中斷,然後切換pin19然後在第16次中斷做多任務的東西,但這可能是浪費。中斷速率爲32Khz,然後設置pin19,然後在第八個時間做多任務決定,其他七次等待一個點,你可以重置pin19,並做一些後臺代碼的CPU時間不到一半