Die gelbe Linie ist der SysTick_Handler, in dem Pin 11 gesetzt und gelöscht wird. Er wird alle 100 Ticks aufgerufen. Die blaue Linie zeigt Pin 13, das in einer Endlosschleife gesetzt und gelöscht wird.
Es fällt auf, dass der SysTick_Handler 400 ns aktiv ist und erst nach 200 ns Pin 11 gesetzt und gelöscht wird. Solange ist die Main-Loop unterbrochen. Es wäre interessant zu wissen, was der Prozessor während der 200 ns macht!?
#include <asf.h>
#include "arduino_due_x.h"
#define PIN11 IOPORT_CREATE_PIN(PIOD, 7)
#define PIN13 IOPORT_CREATE_PIN(PIOB, 27)
void SysTick_Handler(void)
{
ioport_set_pin_level(PIN11, HIGH);
ioport_set_pin_level(PIN11, LOW);
}
int main (void)
{
sysclk_init();
board_init();
ioport_init();
SysTick_Config(100); // 100 Ticks zw. 2 Interruptaufrufen
ioport_set_pin_dir(PIN13, IOPORT_DIR_OUTPUT);
ioport_set_pin_dir(PIN11, IOPORT_DIR_OUTPUT);
while (1) {
ioport_set_pin_level(PIN13, HIGH);
ioport_set_pin_level(PIN13, LOW);
}
}