我遇到了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)。
感謝您的建議。
像往常一樣對於任何關於SO的問題,你應該舉例說明你到目前爲止嘗試過的代碼。一個代碼值得一百萬個解釋! – zmo