Forum: Mikrocontroller und Digitale Elektronik "NOP" beim C-Compiler für den PIC32


von Manni (Gast)


Lesenswert?

Hallo,
beim MPLAB C-Compiler für den PIC32 möchte ich eine leere Anweisung 
einfügen, die allen Optimierungen stand hält. Der Grund dazu ist die 
Erzeugung des richtigen Timings für die angeschlossene Hardware.

Zur Zeit denke ich an ein Stückchen Inline-Assembler-Code mit einem oder 
mehreren NOPs (wie füge ich den ein?).
Gibt es eine bessere Lösung?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Manni schrieb:
> Gibt es eine bessere Lösung?
Vermutlich ja. Aber weil du das eigentliche Problem nicht genannt hast, 
wird jeder Rat zum Raten...

> Der Grund dazu ist die
> Erzeugung des richtigen Timings für die angeschlossene Hardware.
Was ist das für eine Hardware, die so ein exaktes Timing braucht?
Welche Zeiten willst du da erreichen?

von Manni (Gast)


Lesenswert?

> Was ist das für eine Hardware, die so ein exaktes Timing braucht?
> Welche Zeiten willst du da erreichen?

Es geht darum, Zeiten von zum Beispiel 20...200 ns zu Erzeugen. Damit 
soll z.B. das gewünschte Timing beim Ansteuern eines Displays 
sichergestellt werden.

von Klaus (Gast)


Lesenswert?

Manni schrieb:
> Es geht darum, Zeiten von zum Beispiel 20...200 ns zu Erzeugen

Sowas sollte es fertig geben. Mal die .h Files durchsuchen.

MfG Klaus

von (prx) A. K. (prx)


Lesenswert?

Zur ursprünglichen Frage, ob sinnvoll oder nicht: Der verwendete 
Compiler ist der GCC und so gut wie alle ISAs haben ein "NOP", also wohl 
auch MIPS32, folglich sollte das funktionieren:
   __asm volatile ("nop");

von Manni (Gast)


Lesenswert?

Herzlichen Dank für die Tipps.

Viele Grüße,
Manni

von Michael H. (morph1)


Lesenswert?

noch eleganter mit dem vom C32 bereitgestellten Macro: Nop();

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.