Example MPC5744P eTimer DMA frequency measurement GHS614

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Example MPC5744P eTimer DMA frequency measurement GHS614

Example MPC5744P eTimer DMA frequency measurement GHS614

********************************************************************************

* Detailed Description:

*

* Example gives possible implementation of input signal period/freq measurement.

* eTimer channel capture 1 and 2 features are used. CAPT1/CAPT2 capture counter

* value on rising/falling edge of input signal. The FIFO is set to 2 entries

* and ICF2 is monitored. Free-running mode is used here.

*

* eTimer channel 0-1 are cascaded to achieve 1sec/1Hz measuring with 32bit counter.

*

* DMA is used to read CAPT1/2 registers and form 32bit values used in calculation.

*

* EVB connection:

*   P8.2  - A[1]  .. eTimer0 channel1 input signal

*   P8.1  - A[0]  .. GPIO output, used to show measurement period

*

*   Route LINFlexD_0 TXD/RXD (PB2/PB3) signals to the main board RS-232 transceiver

*   Daughtercard:

*   J17.11–12 ON  .. Connect LINFlexD_0 TXD (PB2) to main board.

*   J17.8–9 ON .. Connect LINFlexD_0 RXD (PB3) to main board.

*

*   Motherboard

*   J14 - SCI_RX ON

*   J13 - SCI_TX ON

*   J25 - SCI_PWR ON

*

* connect pulse signal to the P8.2.

* See results on PC terminal (19200, 8N1, None).

* Change freq/duty of input signal.

*

* ------------------------------------------------------------------------------

* Test HW:  MPC5744P

* Maskset:  1N65H

* Target :  internal_FLASH

* Fsys:     200 MHz PLL with 40 MHz crystal reference

* Terminal: 19200, 8N1, None

********************************************************************************

Labels (1)
Attachments
Comments
Pat

Hi Petr,

For example, If I change the PIT_0 period to 5ms faster than measured signal  (with USE_TERMINAL = 0), what kind of test should I do in order to call the Calculate() function only when I have new capture values to proceed ?

Best regards,

Pat

Hi Pat,

In this example the ICF2 flag of channel 0 is used as DMA trigger and so it is also cleared by DMA.

So you can use the same flag, ICF2, in channel 1 or you can configure the DMA ch1 to set interrupt flag after major loop finished.

BR, Petr

Pat

Hi Petr,

Does DMA write can occur during the Copy_edges() ? If yes, how it can be avoided ?

void Copy_edges(void)
{
  edge1 = edge5;
  edge2 = edge6;
  edge3 = edge7;
  edge4 = edge8

}
Best regards,
Pat
%3CLINGO-SUB%20id%3D%22lingo-sub-1099963%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EExample%20MPC5744P%20eTimer%20DMA%20frequency%20measurement%20GHS614%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1099963%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E********************************************************************************%3C%2FP%3E%3CP%3E*%20Detailed%20Description%3A%3C%2FP%3E%3CP%3E*%3C%2FP%3E%3CP%3E*%20Example%20gives%20possible%20implementation%20of%20input%20signal%20period%2Ffreq%20measurement.%3C%2FP%3E%3CP%3E*%20eTimer%20channel%20capture%201%20and%202%20features%20are%20used.%20CAPT1%2FCAPT2%20capture%20counter%20%3C%2FP%3E%3CP%3E*%20value%20on%20rising%2Ffalling%20edge%20of%20input%20signal.%20The%20FIFO%20is%20set%20to%202%20entries%3C%2FP%3E%3CP%3E*%20and%20ICF2%20is%20monitored.%20Free-running%20mode%20is%20used%20here.%20%3C%2FP%3E%3CP%3E*%3C%2FP%3E%3CP%3E*%20eTimer%20channel%200-1%20are%20cascaded%20to%20achieve%201sec%2F1Hz%20measuring%20with%2032bit%20counter.%3C%2FP%3E%3CP%3E*%3C%2FP%3E%3CP%3E*%20DMA%20is%20used%20to%20read%20CAPT1%2F2%20registers%20and%20form%2032bit%20values%20used%20in%20calculation.%3C%2FP%3E%3CP%3E*%3C%2FP%3E%3CP%3E*%20EVB%20connection%3A%3C%2FP%3E%3CP%3E*%26nbsp%3B%26nbsp%3B%20P8.2%26nbsp%3B%20-%20A%5B1%5D%26nbsp%3B%20..%20eTimer0%20channel1%20input%20signal%3C%2FP%3E%3CP%3E*%26nbsp%3B%26nbsp%3B%20P8.1%26nbsp%3B%20-%20A%5B0%5D%26nbsp%3B%20..%20GPIO%20output%2C%20used%20to%20show%20measurement%20period%3C%2FP%3E%3CP%3E*%3C%2FP%3E%3CP%3E*%26nbsp%3B%26nbsp%3B%20Route%20LINFlexD_0%20TXD%2FRXD%20(PB2%2FPB3)%20signals%20to%20the%20main%20board%20RS-232%20transceiver%3C%2FP%3E%3CP%3E*%26nbsp%3B%26nbsp%3B%20Daughtercard%3A%3C%2FP%3E%3CP%3E*%26nbsp%3B%26nbsp%3B%20J17.11%E2%80%9312%20ON%26nbsp%3B%20..%20Connect%20LINFlexD_0%20TXD%20(PB2)%20to%20main%20board.%3C%2FP%3E%3CP%3E*%26nbsp%3B%26nbsp%3B%20J17.8%E2%80%939%20ON%20..%20Connect%20LINFlexD_0%20RXD%20(PB3)%20to%20main%20board.%3C%2FP%3E%3CP%3E*%3C%2FP%3E%3CP%3E*%26nbsp%3B%26nbsp%3B%20Motherboard%3C%2FP%3E%3CP%3E*%26nbsp%3B%26nbsp%3B%20J14%20-%20SCI_RX%20ON%3C%2FP%3E%3CP%3E*%26nbsp%3B%26nbsp%3B%20J13%20-%20SCI_TX%20ON%3C%2FP%3E%3CP%3E*%26nbsp%3B%26nbsp%3B%20J25%20-%20SCI_PWR%20ON%3C%2FP%3E%3CP%3E*%20%3C%2FP%3E%3CP%3E*%20connect%20pulse%20signal%20to%20the%20P8.2.%20%3C%2FP%3E%3CP%3E*%20See%20results%20on%20PC%20terminal%20(19200%2C%208N1%2C%20None).%20%3C%2FP%3E%3CP%3E*%20Change%20freq%2Fduty%20of%20input%20signal.%3C%2FP%3E%3CP%3E*%20%3C%2FP%3E%3CP%3E*%20------------------------------------------------------------------------------%3C%2FP%3E%3CP%3E*%20Test%20HW%3A%26nbsp%3B%20MPC5744P%3C%2FP%3E%3CP%3E*%20Maskset%3A%26nbsp%3B%201N65H%3C%2FP%3E%3CP%3E*%20Target%20%3A%26nbsp%3B%20internal_FLASH%3C%2FP%3E%3CP%3E*%20Fsys%3A%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20200%20MHz%20PLL%20with%2040%20MHz%20crystal%20reference%3C%2FP%3E%3CP%3E*%20Terminal%3A%2019200%2C%208N1%2C%20None%3C%2FP%3E%3CP%3E********************************************************************************%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-TEASER%20id%3D%22lingo-teaser-1099963%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E********************************************************************************%3C%2FP%3E%3CP%3E*%20Detailed%20Description%3A%3C%2FP%3E%3CP%3E*%3C%2FP%3E%3CP%3E*%20Example%20gives%20possible%20implementation%20of%20input%20signal%20period%2Ffreq%20measurement.%3C%2FP%3E%3CP%3E*%20eTimer%20channel%20capture%201%20and%202%20features%20are%20used.%20CAPT1%2FCAPT2%20capture%20counter%20%3C%2FP%3E%3CP%3E*%20value%20on%20rising%2Ffalling%20edge%20of%20input%20signal.%20The%20FIFO%20is%20set%20to%202%20entries%3C%2FP%3E%3CP%3E*%20and%20ICF2%20is%20monitored.%20Free-running%20mode%20is%20used%20here.%20%3C%2FP%3E%3CP%3E*%3C%2FP%3E%3CP%3E*%20eTimer%20channel%200-1%20are%20cascaded%20to%20achieve%201sec%2F1Hz%20measuring%20with%2032bit%20counter.%3C%2FP%3E%3CP%3E*%3C%2FP%3E%3CP%3E*%20DMA%20is%20used%20to%20read%20CAPT1%2F2%20registers%20and%20form%2032bit%20values%20used%20in%20calculation.%3C%2FP%3E%3CP%3E*%3C%2FP%3E%3CP%3E*%20EVB%20connection%3A%3C%2FP%3E%3CP%3E*%26nbsp%3B%26nbsp%3B%20P8.2%26nbsp%3B%20-%20A%5B1%5D%26nbsp%3B%20..%20eTimer0%20channel1%20input%20signal%3C%2FP%3E%3CP%3E*%26nbsp%3B%26nbsp%3B%20P8.1%26nbsp%3B%20-%20A%5B0%5D%26nbsp%3B%20..%20GPIO%20output%2C%20used%20to%20show%20measurement%20period%3C%2FP%3E%3CP%3E*%3C%2FP%3E%3CP%3E*%26nbsp%3B%26nbsp%3B%20Route%20LINFlexD_0%20TXD%2FRXD%20(PB2%2FPB3)%20signals%20to%20the%20main%20board%20RS-232%20transceiver%3C%2FP%3E%3CP%3E*%26nbsp%3B%26nbsp%3B%20Daughtercard%3A%3C%2FP%3E%3CP%3E*%26nbsp%3B%26nbsp%3B%20J17.11%E2%80%9312%20ON%26nbsp%3B%20..%20Connect%20LINFlexD_0%20TXD%20(PB2)%20to%20main%20board.%3C%2FP%3E%3CP%3E*%26nbsp%3B%26nbsp%3B%20J17.8%E2%80%939%20ON%20..%20Connect%20LINFlexD_0%20RXD%20(PB3)%20to%20main%20board.%3C%2FP%3E%3CP%3E*%3C%2FP%3E%3CP%3E*%26nbsp%3B%26nbsp%3B%20Motherboard%3C%2FP%3E%3CP%3E*%26nbsp%3B%26nbsp%3B%20J14%20-%20SCI_RX%20ON%3C%2FP%3E%3CP%3E*%26nbsp%3B%26nbsp%3B%20J13%20-%20SCI_TX%20ON%3C%2FP%3E%3CP%3E*%26nbsp%3B%26nbsp%3B%20J25%20-%20SCI_PWR%20ON%3C%2FP%3E%3CP%3E*%20%3C%2FP%3E%3CP%3E*%20connect%20pulse%20signal%20to%20the%20P8.2.%20%3C%2FP%3E%3CP%3E*%20See%20results%20on%20PC%20terminal%20(19200%2C%208N1%2C%20None).%20%3C%2FP%3E%3CP%3E*%20Change%20freq%2Fduty%20of%20input%20signal.%3C%2FP%3E%3CP%3E*%20%3C%2FP%3E%3CP%3E*%20------------------------------------------------------------------------------%3C%2FP%3E%3CP%3E*%20Test%20HW%3A%26nbsp%3B%20MPC5744P%3C%2FP%3E%3CP%3E*%20Maskset%3A%26nbsp%3B%201N65H%3C%2FP%3E%3CP%3E*%20Target%20%3A%26nbsp%3B%20internal_FLASH%3C%2FP%3E%3CP%3E*%20Fsys%3A%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20200%20MHz%20PLL%20with%2040%20MHz%20crystal%20reference%3C%2FP%3E%3CP%3E*%20Terminal%3A%2019200%2C%208N1%2C%20None%3C%2FP%3E%3CP%3E********************************************************************************%3C%2FP%3E%3C%2FLINGO-TEASER%3E%3CLINGO-LABS%20id%3D%22lingo-labs-1099963%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3EGeneral%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1099966%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20Example%20MPC5744P%20eTimer%20DMA%20frequency%20measurement%20GHS614%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1099966%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%20Petr%2C%3CSPAN%3E%3CSPAN%20class%3D%22jive-comment-meta%20font-color-meta-light%22%3E%3CSPAN%20class%3D%22j-username-wrap%22%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3EDoes%20DMA%20write%20can%20occur%20during%20the%20Copy_edges()%20%3CSPAN%3E%3F%20If%20yes%2C%20how%20it%20can%20be%20avoided%20%3F%3CBR%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%3CSPAN%3Evoid%20Copy_edges(void)%20%3CBR%20%2F%3E%7B%20%3CBR%20%2F%3E%26nbsp%3B%20edge1%20%3D%20edge5%3B%20%3CBR%20%2F%3E%26nbsp%3B%20edge2%20%3D%20edge6%3B%3CBR%20%2F%3E%26nbsp%3B%20edge3%20%3D%20edge7%3B%20%3CBR%20%2F%3E%26nbsp%3B%20edge4%20%3D%20edge8%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CDIV%3E%3CSPAN%3E%3CSPAN%3E%7D%20%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%20%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%3CSPAN%3EBest%20regards%2C%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%3CSPAN%3EPat%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FDIV%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1099965%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20Example%20MPC5744P%20eTimer%20DMA%20frequency%20measurement%20GHS614%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1099965%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%20Pat%2C%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3EIn%20this%20example%20the%20ICF2%20flag%20of%20channel%200%20is%20used%20as%20DMA%20trigger%20and%20so%20it%20is%20also%20cleared%20by%20DMA.%3C%2FP%3E%3CP%3ESo%20you%20can%20use%20the%20same%20flag%2C%20ICF2%2C%20in%20channel%201%20or%20you%20can%20configure%20the%20DMA%20ch1%20to%20set%20interrupt%20flag%20after%20major%20loop%20finished.%20%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3EBR%2C%20Petr%20%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1099964%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20Example%20MPC5744P%20eTimer%20DMA%20frequency%20measurement%20GHS614%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1099964%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%20Petr%2C%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3EFor%20example%2C%20If%20I%20change%20the%20PIT_0%20period%20to%205ms%20faster%20than%20measured%20signal%26nbsp%3B%20(with%20USE_TERMINAL%20%3D%200)%2C%20what%20kind%20of%20test%20should%20I%20do%20in%20order%20to%20call%20the%20Calculate()%20function%20only%20when%20I%20have%20new%20capture%20values%20to%20proceed%20%3F%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3EBest%20regards%2C%3C%2FP%3E%3CP%3EPat%3C%2FP%3E%3C%2FLINGO-BODY%3E
No ratings
Version history
Last update:
‎04-14-2016 05:17 AM
Updated by: