天天看點

MSP430單片機定時器學習筆記

msp430 定時器學習筆記

_bis_sr(lpm2_bits + gie)  //進入lpm3低功耗模式和開總中斷允許

中斷

#pragma  vector=timera0_vector

__interrupt void timer_a(void)

{

}

tactl   timera控制寄存器

tar     timera計數器

cctl0   捕獲/比較控制寄存器0

ccro    捕獲/比寄存器0(具有最高中斷優先級别,單獨使用一個中斷向量)

cctl1   捕獲/比較寄存器1

ccr1    捕獲/比較寄存器1

cctl2   捕獲/比較寄存器2

ccr2    捕獲/比較寄存器2

taiv    中斷向量寄存器

其中,定時器,ccr2,ccr1三者共用一個中斷向量

timera輸出模式:

輸出模式0   輸出模式:輸出信号outx由每個捕獲/比較子產品的控制寄存器cctlx中的outx位定義,并在寫入該寄存器後立即更新。最終位outx直通。

輸出模式1  置位模式:輸出信号在tar等于ccrx時置位,并保持置位到定時器複位或選擇另一種輸出模式為止。

輸出模式2  pwm翻轉/複位模式:輸出在tar的值等于ccrx時翻轉,當tar的值等于ccr0時複位。

輸出模式3  pwm置位/複位模式:輸出在tar的值等于ccrx時置位,當tar的值等于ccr0時複位。

輸出模式4  翻轉模式:輸出電平在tar的值等于ccrx時翻轉,輸出周期是定時器周期的2倍。

輸出模式5  複位模式:輸出在tar的值等于ccrx時複位,并保持低電平直到選擇另一種輸出模式。

輸出模式6  pwm翻轉/置位模式:輸出電平在tar的值等于ccrx時翻轉,當tar值等于ccr0時置位。

輸出模式7  pwm複位/置位模式:輸出電平在tar的值等于ccrx時複位,當tar的值等于ccr0時置位

tactl

15-10 9 8 7 6 5 4 3 2 1 0

未使用 ssel1   ssel0   id1     id0     mc1     mc0     未使用  clr     taie    taifg

定時器時鐘源選擇:

ssel1    ssel0    

0          0  (特定外部信号)

0          1  (tassel0)  aclk

1          0  (tassel1)  smclk

1          1  (inclk)

通過mc1  mc0組合值來覺得timera的工作模式

0  0  停止模式。停止模式下,定時器不複位,回複工作後,按照停止時刻的狀态繼續運作

如果需要情況,請使用tactl中的clr清空

0  1  增計數模式

tar == ccr1的時候産生一次中斷。但是隻有tar == ccr0的時候,定時器才複位。(65535)

1  0  連續技術模式

0---0x0fffh之後重新計數

1  1  增/減計數模式   先增,後減,産生堆成波形。

先到ccr0,然後減到0.周期翻倍。

對于更改ccr0的時

如果更改ccro的值比之前大,則直接走到更改的值傳回複位。

如果更改的值比之前的值小,分為2種情況:

1,此時時鐘處于高,則遇到下降沿立馬複位。

2.如果時鐘處于低,則在下一個時鐘周期下降沿複位(多往前走一個時鐘周期)

修改tar cactl  中clr,cm0 cm1的時候,需要先停止計數器

//就是把目前計數器tar的值抓取放到ccrx當中

當cctlx中的capx=1,該子產品工作在捕獲模式。這時如果在標明的引腳上發生設定的脈沖觸發沿(上升沿、下降沿或任意跳變),則tar中的值将寫入到ccrx中。

當捕獲完成後,中斷标志位ccifgx 被置位

繼續閱讀