Skip to content
Snippets Groups Projects
Unverified Commit bf3ce68a authored by Andreas "Paul" Pauli's avatar Andreas "Paul" Pauli Committed by GitHub
Browse files

Merge pull request #9025 from Josar/pr/timer_debug_pin

atmega timer: Interrupt Pin
parents 0d3af492 d6c0398f
No related branches found
No related tags found
No related merge requests found
...@@ -83,6 +83,21 @@ static ctx_t ctx[] = { ...@@ -83,6 +83,21 @@ static ctx_t ctx[] = {
*/ */
int timer_init(tim_t tim, unsigned long freq, timer_cb_t cb, void *arg) int timer_init(tim_t tim, unsigned long freq, timer_cb_t cb, void *arg)
{ {
/*
* A debug pin can be used to probe timer interrupts with an oscilloscope or
* other time measurement equipment. Thus, determine when an interrupt occurs
* and how long the timer ISR takes.
* The pin should be defined in the makefile as follows:
* CFLAGS += -DDEBUG_TIMER_PORT=PORTF -DDEBUG_TIMER_DDR=DDRF \
* -DDEBUG_TIMER_PIN=PORTF4
*/
#if defined(DEBUG_TIMER_PORT)
DEBUG_TIMER_DDR |= (1 << DEBUG_TIMER_PIN);
DEBUG_TIMER_PORT &= ~(1 << DEBUG_TIMER_PIN);
DEBUG("Debug Pin: DDR 0x%02x Port 0x%02x Pin 0x%02x\n",
&DEBUG_TIMER_DDR , &DEBUG_TIMER_PORT,(1<<DEBUG_TIMER_PIN));
#endif
DEBUG("timer.c: freq = %ld\n", freq); DEBUG("timer.c: freq = %ld\n", freq);
uint8_t pre = 0; uint8_t pre = 0;
...@@ -162,11 +177,19 @@ void timer_start(tim_t tim) ...@@ -162,11 +177,19 @@ void timer_start(tim_t tim)
#ifdef TIMER_NUMOF #ifdef TIMER_NUMOF
static inline void _isr(tim_t tim, int chan) static inline void _isr(tim_t tim, int chan)
{ {
#if defined(DEBUG_TIMER_PORT)
DEBUG_TIMER_PORT |= (1 << DEBUG_TIMER_PIN);
#endif
__enter_isr(); __enter_isr();
*ctx[tim].mask &= ~(1 << (chan + OCIE1A)); *ctx[tim].mask &= ~(1 << (chan + OCIE1A));
ctx[tim].cb(ctx[tim].arg, chan); ctx[tim].cb(ctx[tim].arg, chan);
#if defined(DEBUG_TIMER_PORT)
DEBUG_TIMER_PORT &= ~(1 << DEBUG_TIMER_PIN);
#endif
__exit_isr(); __exit_isr();
} }
#endif #endif
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment