2014-01-25 47 views
-1

我遇到了arduino計時器的問題。首先讓我解釋一下我對他們的瞭解。我不知道是否有辦法爲普通計時員解決這個問題。由於定時器功能:防止在定時器中發生不需要的切換

1)他們總是從0開始,

2)他們的工作爲向上計數或UP-DOWN計數定時器,

3)每個定時器具有兩個比較寄存器。

我的項目涉及在採樣時間(週期)內工作的情況,即定時器運行一個採樣時間,並根據比較寄存器中的值輸出TIOA和TIOB切換。我工作在上下模式下。現在的問題是,當我在比較寄存器中有零時,我期望整個週期的輸出爲零(在TIOA和TIOB上)。但是計時器也是爲了零比較而切換輸出。即我總是得到一個方波(2 *週期)作爲其時間週期,而不是零。這是其他計時器的常見問題嗎?

你們可以建議我解決這個問題嗎?

在此先感謝。使用

#include <AdvaDueTC.h> 

int default_clock = 1; 
int RCcntS = 2187*2; 
int period0 = 65536; 
int a = 2180; 
int b = 0; 

void subrtn() 
{ 
changeTC_TC3_Period(RCcntS); // loading sampler TC3 with RCcntS 

changeTC_TC0_Period(RCcntS/2,a,b); // loading timer TC0 with RCcntT 

} 
void setup() { 

setupTC3_Interrupt(period0,default_clock ,subrtn);//setup sampler interrupt 

setupTC_TC0_Timing(period0, default_clock); 

} 

void loop() { 
// put your main code here, to run repeatedly: 

} 

功能是:

這裏TC3處於UP模式和TC0處於操作的UPDOWN模式。 TIOA0和TIOB0用於獲得翻轉輸出(即在REG_TC0_CMR0中,ACPA,BCPB設置爲3)。在這裏,TIOB0正在切換,我想整個時間保持在一個閥(0或3.3v)。

感謝您的建議。

+0

像往常一樣對於任何關於SO的問題,你應該舉例說明你到目前爲止嘗試過的代碼。一個代碼值得一百萬個解釋! – zmo

回答

0

時,我有零比較寄存器我期待有一個零輸出

我希望輸出被觸發兩次(UP和DOWN)每刻度(我想你叫它期)因爲定時器溢出每個滴答聲。

解決方案是關閉計時器比較。

這在我看來,一個PWM,也​​許你會使用專用的硬件得到更好的結果

0

是你說的是正確的。起初我無法得到它,但是這個MCU定時器可以選擇設置或清除整個週期的定時器輸出值。所以不用總是使用TOGGLE,我使用這些選項來獲得所需的操作。

相關問題