事件管理器捕獲單元FIFO堆棧的使用
發布時間:2009/1/8 0:00:00 訪問次數:1616
每個捕獲單元有一個專用的2級深的fifo堆棧,頂部堆棧包括capififo、cap2fifo和cap3fifo(eva)或 cap4fifo、capsfifo和 capgfifo(evb)。 底部堆棧包括caplfbot、capzfbot和cap3fbot(eva)或cap4fbot、cap5fbot和capgfbot(evb)。所有fifo堆棧的頂層堆棧寄存器是只讀寄存器,它存放相應捕獲單元捕獲到的最早的計數值,因此讀取捕獲單元fifo堆棧時總是返回堆棧中最早的計數值。當讀取fifo堆棧的頂層寄存器的計數值時,堆棧底層寄存器的新計數值(如果有)將被壓人頂層寄存器。
如果需要,也可以讀取fifo堆棧的底層寄存器。讀訪問可使fifo的狀態位變為01(如果先前是1o或11)。如杲原來fifo狀態位是01,讀取底層fifo寄存器時,fifo的狀態位變為00(即為空)。
(1)第一次捕獲
當捕獲單元的輸入引腳出現跳變時,捕獲單元將使用的通用定時器的計數值寫入到空的fifo堆棧的頂層寄存器,同時相應的狀態位置為01。如果在下一次捕獲操作之前,讀取了fifo堆棧,則fifo狀態位被復位為00。
(2)第二次捕獲
如果在前一次捕獲計數值被讀取之前產生了另一次捕獲,新捕獲到的計數值送至底層的寄存器,同時相應的寄存器狀態位置為1o。如果在下一次捕獲操作之前對fifo堆棧進行了讀操作,底層寄存器中新的計數值就會被壓人到頂層寄存器,同時相應的狀態位被設置為01。第二次捕獲使相應的捕獲中斷標志位置位,如果中斷未被屏蔽,則產生一個外設中斷請求。
(3)第三次捕獲
如果捕獲發生時,fifo堆棧已有捕獲到的2個計數值,則在頂層寄存器中最早的計數值將被彈出并丟棄,而堆棧底層寄存器的值將被壓入到頂層寄存器中,新捕獲到的計數值將被壓入到底層寄存器中,并且fifo的狀態位被設置為ii以表明1個或更多舊的捕獲計數值已被丟棄。第三次捕獲使相應的捕獲中斷標志位置位。如果中斷未被屏蔽,則產生一個外設中斷請求。
3.捕獲中斷
當捕獲單元完成一個捕獲時,在fifo中至少有一個有效的值(cap=fifo位顯示不等于0),如果中斷未被屏蔽,中斷標志位置位,產生一個外設中斷請求。因此,如果使用了中斷,則可用中斷服務子程序讀取到一對捕獲的計數值。如果不希望使用中斷,則可通過查詢中斷標志位或堆棧狀態位來確定是否發生了2次捕獲事件,若已發生,則捕獲到的計數值可以被讀出。
歡迎轉載,信息來源維庫電子市場網(www.dzsc.com)
每個捕獲單元有一個專用的2級深的fifo堆棧,頂部堆棧包括capififo、cap2fifo和cap3fifo(eva)或 cap4fifo、capsfifo和 capgfifo(evb)。 底部堆棧包括caplfbot、capzfbot和cap3fbot(eva)或cap4fbot、cap5fbot和capgfbot(evb)。所有fifo堆棧的頂層堆棧寄存器是只讀寄存器,它存放相應捕獲單元捕獲到的最早的計數值,因此讀取捕獲單元fifo堆棧時總是返回堆棧中最早的計數值。當讀取fifo堆棧的頂層寄存器的計數值時,堆棧底層寄存器的新計數值(如果有)將被壓人頂層寄存器。
如果需要,也可以讀取fifo堆棧的底層寄存器。讀訪問可使fifo的狀態位變為01(如果先前是1o或11)。如杲原來fifo狀態位是01,讀取底層fifo寄存器時,fifo的狀態位變為00(即為空)。
(1)第一次捕獲
當捕獲單元的輸入引腳出現跳變時,捕獲單元將使用的通用定時器的計數值寫入到空的fifo堆棧的頂層寄存器,同時相應的狀態位置為01。如果在下一次捕獲操作之前,讀取了fifo堆棧,則fifo狀態位被復位為00。
(2)第二次捕獲
如果在前一次捕獲計數值被讀取之前產生了另一次捕獲,新捕獲到的計數值送至底層的寄存器,同時相應的寄存器狀態位置為1o。如果在下一次捕獲操作之前對fifo堆棧進行了讀操作,底層寄存器中新的計數值就會被壓人到頂層寄存器,同時相應的狀態位被設置為01。第二次捕獲使相應的捕獲中斷標志位置位,如果中斷未被屏蔽,則產生一個外設中斷請求。
(3)第三次捕獲
如果捕獲發生時,fifo堆棧已有捕獲到的2個計數值,則在頂層寄存器中最早的計數值將被彈出并丟棄,而堆棧底層寄存器的值將被壓入到頂層寄存器中,新捕獲到的計數值將被壓入到底層寄存器中,并且fifo的狀態位被設置為ii以表明1個或更多舊的捕獲計數值已被丟棄。第三次捕獲使相應的捕獲中斷標志位置位。如果中斷未被屏蔽,則產生一個外設中斷請求。
3.捕獲中斷
當捕獲單元完成一個捕獲時,在fifo中至少有一個有效的值(cap=fifo位顯示不等于0),如果中斷未被屏蔽,中斷標志位置位,產生一個外設中斷請求。因此,如果使用了中斷,則可用中斷服務子程序讀取到一對捕獲的計數值。如果不希望使用中斷,則可通過查詢中斷標志位或堆棧狀態位來確定是否發生了2次捕獲事件,若已發生,則捕獲到的計數值可以被讀出。
歡迎轉載,信息來源維庫電子市場網(www.dzsc.com)
上一篇:EV擴展控制寄存器
上一篇:事件管理器捕獲單元時鐘基準的選擇