Hallo Sven,
ich würde sagen solche Wartezeiten mit nops hinzutricksen ist evil ;-).
So eine MCU bringt doch viele schöne Peripherals mit, mit denen man
sowas machen kann.
Die eigentlich erste Frage wäre wofür Du die 5 us brauchst. Willst Du
einfach einen Pin alle 5 us toggeln. Dann kannst Du das sicherlich
mittels Output Compare Unit erschlagen.
Soll die Applikation aber wirklich 5 us warten hilft dir der Reload
Timer. Implementiere Dir eine Funktion sleep(), die als Parameter die
Zeit in einer sinnvollen Einheit hat. In sleep berechnest Du dann damit
den Wert, der den CLKP Taktzyklen/gegebener Wartezeit entspricht
(TMRLR). Konfigurierst TMCSR entsprechend (TMCSR:CSL so das die Zeit
passt, TMCSR:RELD=0, TMCSR:INTE=0, TMCSR:CNTE=1, TMCSR:TRG=1). Dann
wartest Du in einer while-Schleife bis TMCSR:UF=1 ist. Hinterher noch
ein bisschen aufräumen - fertig.
Wenn Du in der Zwischenzeit die MCU nicht warten lassen willst kannst Du
auch noch den Interrupt des Reload Timers aktivieren und dann in der
Interrupt Service Routine das ganze behandeln und die MCU macht in den
us bis zum Interrupt was sinnvolles ;-).
Viele Grüße
spk