1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00

Merge pull request #9025 from Josar/pr/timer_debug_pin

atmega timer: Interrupt Pin
This commit is contained in:
Andreas "Paul" Pauli 2018-07-19 18:34:39 +02:00 committed by GitHub
commit bf3ce68a86
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -83,6 +83,21 @@ static ctx_t ctx[] = {
*/
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);
uint8_t pre = 0;
@ -162,11 +177,19 @@ void timer_start(tim_t tim)
#ifdef TIMER_NUMOF
static inline void _isr(tim_t tim, int chan)
{
#if defined(DEBUG_TIMER_PORT)
DEBUG_TIMER_PORT |= (1 << DEBUG_TIMER_PIN);
#endif
__enter_isr();
*ctx[tim].mask &= ~(1 << (chan + OCIE1A));
ctx[tim].cb(ctx[tim].arg, chan);
#if defined(DEBUG_TIMER_PORT)
DEBUG_TIMER_PORT &= ~(1 << DEBUG_TIMER_PIN);
#endif
__exit_isr();
}
#endif