Forum: Mikrocontroller und Digitale Elektronik Schnelle Abfrage


von Lukas (Gast)


Lesenswert?

Hallo!
Ich muss sehr rasch eine Signaländerung reagieren.
Leider habe ich weder Timer (Mit PWM belegt) noch externe Interrupts
mehr frei, aber noch Rechenzeit übrig.
Der ATMega8 läuft mit 8Mhz.

Wie viele Takte benötigt folgender Code? D.H. wie lange dauert es
zwischen 2 Abfragen?

  while (!(PINC & (1<<PINC2)) && (i < 65535)) {  //Solange PinC LOW ist

    i++;
    // asm volatile ("nop");
  }

von Johannes Raschke (Gast)


Lesenswert?

Dürfte vom Compiler abhängen... Kannst Du vielleicht einen Assembler -
Zwischencode erzeugen lassen? Oder besser die ganze Schleife in ASM
programmieren? Dann bekommst Du es leicht heraus...

von Mike (Gast)


Lesenswert?

Compilieren lassen und ins Listing schauen, dann kannst du die
benötigten Takte auszählen.

von Lukas (Gast)


Lesenswert?

Wie kann ich mir das von GCC erstellte Listing in verständlicher Form
ansehen?
Wäre es nicht besser die Schleife gleich in Inline - Assembler zu
schreiben? Leider habe ich damit aber keine Erfahrungen...

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.