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"); }
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...
Compilieren lassen und ins Listing schauen, dann kannst du die benötigten Takte auszählen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.