CMSIS-Driver_PIC32CZ-MC70  
Peripheral Library (PLIB) Documentation
 
Loading...
Searching...
No Matches
TC Interface

Driver API for TC (plib_tc0_capture.h) More...

Data Structures

struct  TC0_CAPTURE_OBJECT
 TC0 Capture object structure. More...
 

Macros

#define TC_MODE_NONE   (0U)
 
#define TC_MODE_CAPTURE   (1U)
 
#define TC_MODE_COMPARE   (2U)
 
#define TC_MODE_TIMER   (3U)
 
#define TC_MODE_QDEC   (4U)
 
#define TC_MODE_STEPPER   (5U)
 
#define TC_CAPTURE_CHANNEL_0   (0U)
 
#define TC_CAPTURE_CHANNEL_1   (1U)
 
#define TC_CAPTURE_CHANNEL_2   (2U)
 
#define TC_COMPARE_CHANNEL_0   (0U)
 
#define TC_COMPARE_CHANNEL_1   (1U)
 
#define TC_COMPARE_CHANNEL_2   (2U)
 
#define TC_TIMER_CHANNEL_0   (0U)
 
#define TC_TIMER_CHANNEL_1   (1U)
 
#define TC_TIMER_CHANNEL_2   (2U)
 
#define TC_SR_INTERRUPT_FLAGS_MASK   (0xFFU)
 
#define TC_CAPTURE_TRIGGER_SOURCE_IO   (0U) /* Trigger from external pin TIOBx/TIOAx */
 
#define TC_CAPTURE_TRIGGER_SOURCE_RC_COMPARE   (1U) /* Trigger from RC compare match */
 
#define TC_QDEC_MODE_POSITION   (0U) /* Position and revolution measurement mode */
 
#define TC_QDEC_MODE_SPEED   (1U) /* Speed measurement mode (requires channel 2 timebase) */
 
#define TC_STEPPER_DIRECTION_UP   (0U) /* Up/forward rotation */
 
#define TC_STEPPER_DIRECTION_DOWN   (1U) /* Down/reverse rotation */
 
#define TC_STEPPER_CHANNEL_PAIR_0_1   (0U) /* Channels 0 and 1 for stepper output */
 

Typedefs

typedef void(* TC_CAPTURE_CALLBACK) (uint32_t int_cause)
 
typedef void(* TC_COMPARE_CALLBACK) (uint32_t int_cause)
 
typedef void(* TC_TIMER_CALLBACK) (uint32_t int_cause)
 
typedef void(* TC_QDEC_CALLBACK) (uint32_t int_cause)
 
typedef void(* TC_STEPPER_CALLBACK) (uint32_t int_cause)
 

Functions

void TC0_CAPTURE_DisableClock (uint8_t channel)
 Disable TC0 capture clock on specified channel.
 
void TC0_CAPTURE_EnableClock (uint8_t channel)
 Enable TC0 capture clock on specified channel.
 
void TC0_CAPTURE_TriggerSoftware (uint8_t channel)
 Trigger a software event on specified TC0 capture channel.
 
void TC0_CAPTURE_Enable (uint8_t channel)
 Enable TC0 capture operation on specified channel.
 
void TC0_CAPTURE_Disable (uint8_t channel)
 Disable TC0 capture operation on specified channel.
 
uint32_t TC0_CAPTURE_GetRA (uint8_t channel)
 Get captured value from RA register.
 
uint32_t TC0_CAPTURE_GetRB (uint8_t channel)
 Get captured value from RB register.
 
uint32_t TC0_CAPTURE_GetRC (uint8_t channel)
 Get captured value from RC register.
 
void TC0_CAPTURE_SetCallbackHandler (TC_CAPTURE_CALLBACK callback)
 Set callback handler for TC0 capture interrupts.
 
uint32_t TC0_CAPTURE_GetStatus (uint8_t channel)
 Get current status of TC0 capture mode.
 
uint32_t TC0_CAPTURE_GetPeriod (uint8_t channel)
 Get captured period value (tick count delta).
 
uint32_t TC0_CAPTURE_GetCounter (uint8_t channel)
 Read current counter value.
 
void TC0_CAPTURE_SyncChannels (void)
 Synchronize TC0 channels.
 
void TC0_CAPTURE_EnableInterrupt (uint8_t channel, uint32_t source)
 Enable specific TC0 capture interrupts for a channel.
 
void TC0_CAPTURE_DisableInterrupt (uint8_t channel, uint32_t source)
 Disable specific TC0 capture interrupts for a channel.
 
uint32_t TC0_CAPTURE_GetInterruptMask (uint8_t channel)
 Get current TC0 capture interrupt mask for a channel.
 
uint32_t TC0_CAPTURE_GetInterruptFlag (uint8_t channel)
 Get current TC0 capture interrupt status flags for a channel.
 
void TC0_CAPTURE_InterruptHandler (uint8_t channel, uint32_t status)
 TC0 capture mode interrupt handler.
 
void TC0_CAPTURE_SetClockSource (uint8_t channel, uint32_t clock_source)
 Set clock source for TC0 capture mode.
 
void TC0_CAPTURE_SetClockInvert (uint8_t channel)
 Set clock inversion for TC0 capture mode.
 
void TC0_CAPTURE_ClearClockInvert (uint8_t channel)
 Clear clock inversion for TC0 capture mode.
 
void TC0_CAPTURE_SetBurstMode (uint8_t channel, uint32_t burst)
 Set burst mode for TC0 capture.
 
void TC0_CAPTURE_SetRALoadingEdge (uint8_t channel, uint32_t edge)
 Set RA loading edge selection.
 
void TC0_CAPTURE_SetRBLoadingEdge (uint8_t channel, uint32_t edge)
 Set RB loading edge selection.
 
void TC0_CAPTURE_SetSubsamplingRatio (uint8_t channel, uint32_t subsampler)
 Set subsampling ratio for capture loading.
 
void TC0_CAPTURE_SetRBLoadStop (uint8_t channel)
 Enable counter clock stop on RB loading.
 
void TC0_CAPTURE_SetRBLoadDisable (uint8_t channel)
 Enable counter clock disable on RB loading.
 
void TC0_CAPTURE_SelectTriggerSource (uint8_t channel, uint32_t trigger_source)
 Select trigger source for capture (CMJH compatible).
 
void TC0_CAPTURE_SelectExternalTriggerInput (uint8_t channel, uint8_t input)
 Select external trigger input signal (TIOA or TIOB).
 
void TC0_CAPTURE_SetExternalTriggerEdge (uint8_t channel, uint32_t edge)
 Set external trigger edge selection (granular control).
 
void TC0_CAPTURE_SetRCCompareTrigger (uint8_t channel)
 Enable RC Compare as trigger source (granular control).
 
void TC0_CAPTURE_ClearRCCompareTrigger (uint8_t channel)
 Disable RC Compare as trigger source (granular control).
 
void TC0_CAPTURE_SetTriggerSourceA (uint8_t channel, uint32_t source)
 Set trigger/capture input A source.
 
void TC0_CAPTURE_SetTriggerSourceB (uint8_t channel, uint32_t source)
 Set trigger/capture input B source.
 
void TC0_CAPTURE_SetNoDivClk (uint8_t channel)
 Enable no divided clock mode.
 
void TC0_CAPTURE_SetRC (uint8_t channel, uint32_t rc_value)
 Set RC (Register C) compare value.
 
uint32_t TC0_CAPTURE_GetRABValue (uint8_t channel)
 Get next unread RA or RB value.
 
uint32_t TC0_CAPTURE_GetRABRegisterAddress (uint8_t channel)
 Get address of RAB register.
 
void TC0_CAPTURE_EnableWriteProtection (void)
 Enable write protection for TC0 module registers.
 
void TC0_CAPTURE_DisableWriteProtection (void)
 Disable write protection for TC0 module registers.
 
void TC0_SetChannelMode (uint8_t channel, uint32_t mode)
 Set the operating mode for a TC0 channel.
 
uint32_t TC0_GetChannelMode (uint8_t channel)
 Get the current operating mode for a TC0 channel.
 
void TC0_SetChannelInterruptHandler (uint8_t channel, void(*handler)(uint8_t channel, uint32_t status))
 Register interrupt handler for a specific TC0 channel.
 

Variables

uint32_t tc0_channel_mode [3]
 

Description

Driver API for TC (plib_tc0_capture.h)

Usage Example

The following example demonstrates typical usage of the TC peripheral:

#include <stdint.h>
#include <stdbool.h>
/* Example callback function for capture interrupts */
static void TC0_capture_callback(uint32_t int_cause)
{
/* Check for RA loading event (first edge capture) */
if ((int_cause & TC_SR_LDRAS_Msk) != 0U)
{
/* Handle RA capture event */
/* Read captured value: uint32_t ra_value = TC0_CAPTURE_GetRA(channel); */
}
/* Check for RB loading event (second edge capture) */
if ((int_cause & TC_SR_LDRBS_Msk) != 0U)
{
/* Handle RB capture event */
/* Read captured value: uint32_t rb_value = TC0_CAPTURE_GetRB(channel); */
/* Calculate period: uint32_t period = TC0_CAPTURE_GetPeriod(channel); */
}
/* Check for counter overflow event */
if ((int_cause & TC_SR_COVFS_Msk) != 0U)
{
/* Handle counter overflow event */
}
}
int32_t configure_tc0_capture_mode(void)
{
/* Select the capture channel (0, 1, or 2) */
uint8_t channel = TC_CAPTURE_CHANNEL_0;
/* Disable write protection to allow configuration of protected registers */
/* Disable the capture peripheral before applying configuration */
/* Set the mode to TC_MODE_CAPTURE */
/* Hand the callback to the PLIB before enabling interrupts. */
/* Configure clock source for the capture channel */
/* Available clock sources: TC_CMR_TCCLKS_TIMER_CLOCK1 through TC_CMR_TCCLKS_TIMER_CLOCK5,
* XC0, XC1, XC2 (external clocks) - refer to DFP for actual values */
TC0_CAPTURE_SetClockSource(channel, TC_CMR_TCCLKS_TIMER_CLOCK5); /* Example: MCK/1024 */
/* Select trigger source for capture */
/* Options: TC_CAPTURE_TRIGGER_SOURCE_IO (external pin) or TC_CAPTURE_TRIGGER_SOURCE_RC_COMPARE */
/* Configure RA loading edge (first capture edge) */
/* Options: TC_CMR_LDRA_NONE, TC_CMR_LDRA_RISING, TC_CMR_LDRA_FALLING, TC_CMR_LDRA_EDGE */
TC0_CAPTURE_SetRALoadingEdge(channel, TC_CMR_CAPTURE_LDRA_RISING);
/* Configure RB loading edge (second capture edge) */
/* Options: TC_CMR_LDRB_NONE, TC_CMR_LDRB_RISING, TC_CMR_LDRB_FALLING, TC_CMR_LDRB_EDGE */
TC0_CAPTURE_SetRBLoadingEdge(channel, TC_CMR_CAPTURE_LDRB_FALLING);
/* Clear any pending interrupt flags by reading status */
/* Register interrupt callback handler */
TC0_CAPTURE_SetCallbackHandler(&TC0_capture_callback);
/* Enable capture interrupts for RA, RB events */
TC0_CAPTURE_EnableInterrupt(channel, TC_IMR_LDRAS_Msk | TC_IMR_LDRBS_Msk );
/* Enable TC0 capture peripheral */
/* Enable write protection */
return 0;
}
void TC0_SetChannelInterruptHandler(uint8_t channel, void(*handler)(uint8_t channel, uint32_t status))
Register interrupt handler for a specific TC0 channel.
void TC0_CAPTURE_InterruptHandler(uint8_t channel, uint32_t status)
TC0 capture mode interrupt handler.
void TC0_CAPTURE_SetClockSource(uint8_t channel, uint32_t clock_source)
Set clock source for TC0 capture mode.
uint32_t TC0_CAPTURE_GetInterruptFlag(uint8_t channel)
Get current TC0 capture interrupt status flags for a channel.
void TC0_CAPTURE_EnableWriteProtection(void)
Enable write protection for TC0 module registers.
#define TC_CAPTURE_TRIGGER_SOURCE_IO
Definition plib_tc_common.h:72
void TC0_SetChannelMode(uint8_t channel, uint32_t mode)
Set the operating mode for a TC0 channel.
void TC0_CAPTURE_Enable(uint8_t channel)
Enable TC0 capture operation on specified channel.
void TC0_CAPTURE_SetRBLoadingEdge(uint8_t channel, uint32_t edge)
Set RB loading edge selection.
void TC0_CAPTURE_SetRALoadingEdge(uint8_t channel, uint32_t edge)
Set RA loading edge selection.
void TC0_CAPTURE_DisableWriteProtection(void)
Disable write protection for TC0 module registers.
#define TC_CAPTURE_CHANNEL_0
Definition plib_tc_common.h:51
void TC0_CAPTURE_SetCallbackHandler(TC_CAPTURE_CALLBACK callback)
Set callback handler for TC0 capture interrupts.
void TC0_CAPTURE_Disable(uint8_t channel)
Disable TC0 capture operation on specified channel.
#define TC_MODE_CAPTURE
Definition plib_tc0_common.h:48
void TC0_CAPTURE_EnableInterrupt(uint8_t channel, uint32_t source)
Enable specific TC0 capture interrupts for a channel.
void TC0_CAPTURE_SelectTriggerSource(uint8_t channel, uint32_t trigger_source)
Select trigger source for capture (CMJH compatible).

Macro Definition Documentation

◆ TC_CAPTURE_CHANNEL_0

#define TC_CAPTURE_CHANNEL_0   (0U)

◆ TC_CAPTURE_CHANNEL_1

#define TC_CAPTURE_CHANNEL_1   (1U)

◆ TC_CAPTURE_CHANNEL_2

#define TC_CAPTURE_CHANNEL_2   (2U)

◆ TC_CAPTURE_TRIGGER_SOURCE_IO

#define TC_CAPTURE_TRIGGER_SOURCE_IO   (0U) /* Trigger from external pin TIOBx/TIOAx */

◆ TC_CAPTURE_TRIGGER_SOURCE_RC_COMPARE

#define TC_CAPTURE_TRIGGER_SOURCE_RC_COMPARE   (1U) /* Trigger from RC compare match */

◆ TC_COMPARE_CHANNEL_0

#define TC_COMPARE_CHANNEL_0   (0U)

◆ TC_COMPARE_CHANNEL_1

#define TC_COMPARE_CHANNEL_1   (1U)

◆ TC_COMPARE_CHANNEL_2

#define TC_COMPARE_CHANNEL_2   (2U)

◆ TC_MODE_CAPTURE

#define TC_MODE_CAPTURE   (1U)

◆ TC_MODE_COMPARE

#define TC_MODE_COMPARE   (2U)

◆ TC_MODE_NONE

#define TC_MODE_NONE   (0U)

◆ TC_MODE_QDEC

#define TC_MODE_QDEC   (4U)

◆ TC_MODE_STEPPER

#define TC_MODE_STEPPER   (5U)

◆ TC_MODE_TIMER

#define TC_MODE_TIMER   (3U)

◆ TC_QDEC_MODE_POSITION

#define TC_QDEC_MODE_POSITION   (0U) /* Position and revolution measurement mode */

◆ TC_QDEC_MODE_SPEED

#define TC_QDEC_MODE_SPEED   (1U) /* Speed measurement mode (requires channel 2 timebase) */

◆ TC_SR_INTERRUPT_FLAGS_MASK

#define TC_SR_INTERRUPT_FLAGS_MASK   (0xFFU)

◆ TC_STEPPER_CHANNEL_PAIR_0_1

#define TC_STEPPER_CHANNEL_PAIR_0_1   (0U) /* Channels 0 and 1 for stepper output */

◆ TC_STEPPER_DIRECTION_DOWN

#define TC_STEPPER_DIRECTION_DOWN   (1U) /* Down/reverse rotation */

◆ TC_STEPPER_DIRECTION_UP

#define TC_STEPPER_DIRECTION_UP   (0U) /* Up/forward rotation */

◆ TC_TIMER_CHANNEL_0

#define TC_TIMER_CHANNEL_0   (0U)

◆ TC_TIMER_CHANNEL_1

#define TC_TIMER_CHANNEL_1   (1U)

◆ TC_TIMER_CHANNEL_2

#define TC_TIMER_CHANNEL_2   (2U)

Typedef Documentation

◆ TC_CAPTURE_CALLBACK

typedef void(* TC_CAPTURE_CALLBACK) (uint32_t int_cause)

◆ TC_COMPARE_CALLBACK

typedef void(* TC_COMPARE_CALLBACK) (uint32_t int_cause)

◆ TC_QDEC_CALLBACK

typedef void(* TC_QDEC_CALLBACK) (uint32_t int_cause)

◆ TC_STEPPER_CALLBACK

typedef void(* TC_STEPPER_CALLBACK) (uint32_t int_cause)

◆ TC_TIMER_CALLBACK

typedef void(* TC_TIMER_CALLBACK) (uint32_t int_cause)

Function Documentation

◆ TC0_CAPTURE_ClearClockInvert()

void TC0_CAPTURE_ClearClockInvert ( uint8_t channel)

Clear clock inversion for TC0 capture mode.

Parameters
channelChannel number
Returns
void

◆ TC0_CAPTURE_ClearRCCompareTrigger()

void TC0_CAPTURE_ClearRCCompareTrigger ( uint8_t channel)

Disable RC Compare as trigger source (granular control).

Parameters
channelChannel number
Returns
void

◆ TC0_CAPTURE_Disable()

void TC0_CAPTURE_Disable ( uint8_t channel)

Disable TC0 capture operation on specified channel.

Parameters
channelChannel number
Returns
void

◆ TC0_CAPTURE_DisableClock()

void TC0_CAPTURE_DisableClock ( uint8_t channel)

Disable TC0 capture clock on specified channel.

Parameters
channelChannel number
Returns
void

◆ TC0_CAPTURE_DisableInterrupt()

void TC0_CAPTURE_DisableInterrupt ( uint8_t channel,
uint32_t source )

Disable specific TC0 capture interrupts for a channel.

Parameters
channelChannel number
sourceInterrupt source specifying which interrupts to disable.
Returns
void

◆ TC0_CAPTURE_DisableWriteProtection()

void TC0_CAPTURE_DisableWriteProtection ( void )

Disable write protection for TC0 module registers.

Returns
void

◆ TC0_CAPTURE_Enable()

void TC0_CAPTURE_Enable ( uint8_t channel)

Enable TC0 capture operation on specified channel.

Parameters
channelChannel number
Returns
void

◆ TC0_CAPTURE_EnableClock()

void TC0_CAPTURE_EnableClock ( uint8_t channel)

Enable TC0 capture clock on specified channel.

Parameters
channelChannel number
Returns
void

◆ TC0_CAPTURE_EnableInterrupt()

void TC0_CAPTURE_EnableInterrupt ( uint8_t channel,
uint32_t source )

Enable specific TC0 capture interrupts for a channel.

Parameters
channelChannel number
sourceInterrupt source specifying which interrupts to enable.
Returns
void

◆ TC0_CAPTURE_EnableWriteProtection()

void TC0_CAPTURE_EnableWriteProtection ( void )

Enable write protection for TC0 module registers.

Returns
void

◆ TC0_CAPTURE_GetCounter()

uint32_t TC0_CAPTURE_GetCounter ( uint8_t channel)

Read current counter value.

Parameters
channelChannel number
Returns
Current counter value.

◆ TC0_CAPTURE_GetInterruptFlag()

uint32_t TC0_CAPTURE_GetInterruptFlag ( uint8_t channel)

Get current TC0 capture interrupt status flags for a channel.

Parameters
channelChannel number
Returns
Interrupt status flags indicating which interrupts have occurred.
Note
Reading TC_SR clears ALL pending interrupt flags for the channel.

◆ TC0_CAPTURE_GetInterruptMask()

uint32_t TC0_CAPTURE_GetInterruptMask ( uint8_t channel)

Get current TC0 capture interrupt mask for a channel.

Parameters
channelChannel number
Returns
Interrupt mask indicating which interrupts are enabled.

◆ TC0_CAPTURE_GetPeriod()

uint32_t TC0_CAPTURE_GetPeriod ( uint8_t channel)

Get captured period value (tick count delta).

Parameters
channelChannel number
Returns
Period value as raw tick count (RB - RA), not frequency in Hz. Returns 0 if RA is 0 or if RB <= RA.
Note
To convert to frequency in Hz, use: frequency = timer_clock_hz / period_ticks

◆ TC0_CAPTURE_GetRA()

uint32_t TC0_CAPTURE_GetRA ( uint8_t channel)

Get captured value from RA register.

Parameters
channelChannel number
Returns
Captured value from RA register.

◆ TC0_CAPTURE_GetRABRegisterAddress()

uint32_t TC0_CAPTURE_GetRABRegisterAddress ( uint8_t channel)

Get address of RAB register.

Parameters
channelChannel number
Returns
Address of TC_RABx register for DMA configuration

◆ TC0_CAPTURE_GetRABValue()

uint32_t TC0_CAPTURE_GetRABValue ( uint8_t channel)

Get next unread RA or RB value.

Parameters
channelChannel number
Returns
RAB register value (for DMA support)

◆ TC0_CAPTURE_GetRB()

uint32_t TC0_CAPTURE_GetRB ( uint8_t channel)

Get captured value from RB register.

Parameters
channelChannel number
Returns
Captured value from RB register.

◆ TC0_CAPTURE_GetRC()

uint32_t TC0_CAPTURE_GetRC ( uint8_t channel)

Get captured value from RC register.

Parameters
channelChannel number
Returns
Captured value from RC register.

◆ TC0_CAPTURE_GetStatus()

uint32_t TC0_CAPTURE_GetStatus ( uint8_t channel)

Get current status of TC0 capture mode.

Parameters
channelChannel number
Returns
Status flags indicating capture mode state.
Note
CRITICAL: Reading TC_SR is CLEAR-ON-READ in hardware. All pending interrupt flags (COVFS, LOVRS, CPAS, CPBS, CPCS, LDRAS, LDRBS, ETRGS) are cleared when this function is called. Do NOT call this function multiple times or mix with GetInterruptFlag() - use the returned value once and cache if needed.

◆ TC0_CAPTURE_InterruptHandler()

void TC0_CAPTURE_InterruptHandler ( uint8_t channel,
uint32_t status )

TC0 capture mode interrupt handler.

Returns
void

◆ TC0_CAPTURE_SelectExternalTriggerInput()

void TC0_CAPTURE_SelectExternalTriggerInput ( uint8_t channel,
uint8_t input )

Select external trigger input signal (TIOA or TIOB).

Parameters
channelChannel number
input0 = TIOB, 1 = TIOA (controls ABETRG bit)
Returns
void

◆ TC0_CAPTURE_SelectTriggerSource()

void TC0_CAPTURE_SelectTriggerSource ( uint8_t channel,
uint32_t trigger_source )

Select trigger source for capture (CMJH compatible).

Parameters
channelChannel number
trigger_sourceTrigger source (TC_TRIGGER_SOURCE_IO or TC_TRIGGER_SOURCE_RC_COMPARE)
Returns
void

This function consolidates trigger configuration:

  • Selects TIOA/TIOB as external trigger input (IO trigger)
  • Enables/disables RC Compare as trigger source
  • Sets default rising edge detection for external trigger

For granular control, use the individual configuration functions:

◆ TC0_CAPTURE_SetBurstMode()

void TC0_CAPTURE_SetBurstMode ( uint8_t channel,
uint32_t burst )

Set burst mode for TC0 capture.

Parameters
channelChannel number
burstBurst mode enumeration value.
Returns
void

◆ TC0_CAPTURE_SetCallbackHandler()

void TC0_CAPTURE_SetCallbackHandler ( TC_CAPTURE_CALLBACK callback)

Set callback handler for TC0 capture interrupts.

Parameters
callbackFunction pointer to the callback handler.
Returns
void

◆ TC0_CAPTURE_SetClockInvert()

void TC0_CAPTURE_SetClockInvert ( uint8_t channel)

Set clock inversion for TC0 capture mode.

Parameters
channelChannel number
Returns
void

◆ TC0_CAPTURE_SetClockSource()

void TC0_CAPTURE_SetClockSource ( uint8_t channel,
uint32_t clock_source )

Set clock source for TC0 capture mode.

Parameters
channelChannel number
clock_sourceClock source enumeration value.
Returns
void

◆ TC0_CAPTURE_SetExternalTriggerEdge()

void TC0_CAPTURE_SetExternalTriggerEdge ( uint8_t channel,
uint32_t edge )

Set external trigger edge selection (granular control).

Parameters
channelChannel number
edgeTrigger edge enumeration value.
Returns
void

◆ TC0_CAPTURE_SetNoDivClk()

void TC0_CAPTURE_SetNoDivClk ( uint8_t channel)

Enable no divided clock mode.

Parameters
channelChannel number
Returns
void

◆ TC0_CAPTURE_SetRALoadingEdge()

void TC0_CAPTURE_SetRALoadingEdge ( uint8_t channel,
uint32_t edge )

Set RA loading edge selection.

Parameters
channelChannel number
edgeRA loading edge enumeration value.
Returns
void

◆ TC0_CAPTURE_SetRBLoadDisable()

void TC0_CAPTURE_SetRBLoadDisable ( uint8_t channel)

Enable counter clock disable on RB loading.

Parameters
channelChannel number
Returns
void

◆ TC0_CAPTURE_SetRBLoadingEdge()

void TC0_CAPTURE_SetRBLoadingEdge ( uint8_t channel,
uint32_t edge )

Set RB loading edge selection.

Parameters
channelChannel number
edgeRB loading edge enumeration value.
Returns
void

◆ TC0_CAPTURE_SetRBLoadStop()

void TC0_CAPTURE_SetRBLoadStop ( uint8_t channel)

Enable counter clock stop on RB loading.

Parameters
channelChannel number
Returns
void

◆ TC0_CAPTURE_SetRC()

void TC0_CAPTURE_SetRC ( uint8_t channel,
uint32_t rc_value )

Set RC (Register C) compare value.

Parameters
channelChannel number
rc_valueRC compare value (32-bit)
Returns
void

◆ TC0_CAPTURE_SetRCCompareTrigger()

void TC0_CAPTURE_SetRCCompareTrigger ( uint8_t channel)

Enable RC Compare as trigger source (granular control).

Parameters
channelChannel number
Returns
void

◆ TC0_CAPTURE_SetSubsamplingRatio()

void TC0_CAPTURE_SetSubsamplingRatio ( uint8_t channel,
uint32_t subsampler )

Set subsampling ratio for capture loading.

Parameters
channelChannel number
subsamplerSubsampling ratio enumeration value.
Returns
void

◆ TC0_CAPTURE_SetTriggerSourceA()

void TC0_CAPTURE_SetTriggerSourceA ( uint8_t channel,
uint32_t source )

Set trigger/capture input A source.

Parameters
channelChannel number
sourceTrigger source enumeration value.
Returns
void

◆ TC0_CAPTURE_SetTriggerSourceB()

void TC0_CAPTURE_SetTriggerSourceB ( uint8_t channel,
uint32_t source )

Set trigger/capture input B source.

Parameters
channelChannel number
sourceTrigger source enumeration value.
Returns
void

◆ TC0_CAPTURE_SyncChannels()

void TC0_CAPTURE_SyncChannels ( void )

Synchronize TC0 channels.

Returns
void

◆ TC0_CAPTURE_TriggerSoftware()

void TC0_CAPTURE_TriggerSoftware ( uint8_t channel)

Trigger a software event on specified TC0 capture channel.

Parameters
channelChannel number
Returns
void

◆ TC0_GetChannelMode()

uint32_t TC0_GetChannelMode ( uint8_t channel)

Get the current operating mode for a TC0 channel.

Parameters
channelChannel number (0, 1, or 2)
Returns
Current mode (TC_MODE_*)

◆ TC0_SetChannelInterruptHandler()

void TC0_SetChannelInterruptHandler ( uint8_t channel,
void(*)(uint8_t channel, uint32_t status) handler )

Register interrupt handler for a specific TC0 channel.

This function allows mode-specific modules (capture, compare, timer, etc.) to register their interrupt handler during initialization. Similar to PIC32CMJH's TC0_SetInterruptHandler() but per-channel.

Parameters
channelChannel number (0-2)
handlerFunction pointer to mode-specific interrupt handler Signature: void handler(uint8_t channel, uint32_t status)
Returns
void

◆ TC0_SetChannelMode()

void TC0_SetChannelMode ( uint8_t channel,
uint32_t mode )

Set the operating mode for a TC0 channel.

Called internally by mode-specific Initialize functions to register which mode a channel is operating in. Prevents clear-on-read TC_SR race conditions by ensuring only the active mode handler reads status.

Parameters
channelChannel number (0, 1, or 2)
modeOperating mode (TC_MODE_CAPTURE/COMPARE/TIMER/QDEC/STEPPER)
Returns
void

Variable Documentation

◆ tc0_channel_mode

uint32_t tc0_channel_mode[3]
extern