Forum: Compiler & IDEs Taktfrage


von Thomas (Gast)


Lesenswert?

Hallo, ich hab da mal ne Frage.

Mega128, 8 MHz-Quarz, CKOPT gesetzt, CLSEL=1111, SUT=00

...

for(;;){
  PORTB=0b00000001;
  PORTB=0b00000000;

}

warum kommt da als max. Takt nur 1,14 MHZ raus?

im Simulator wird der Ausgang alle 4 Schritte wieder gesetzt.

Sollten da nicht mindestens 2 MHz an Takt rauskommen?

Danke


Thomas

von Matthias (Gast)


Lesenswert?

Hi

wieso? PORTB=0b00000001; dürfte in ein OUT und ein LDI übersetzt
werden.
dito für PORTB=0b00000000; Sind 4 Zyklen. Dazu kommt dann noch der
nötige JMP mit 3 Zyklen. Macht 7 Zyklen.

8/7=1,14

passt exakt.

Matthias

von Jörg Wunsch (Gast)


Lesenswert?

Wofür das LDI?

2 x OUT, 1 x RJMP.  Macht 4 Take Zykluszeit.

Achso, mit Optimierung natürlich.

Ohne Optimierung ein LDI, 2 STS, ein RJMP.  Macht 7 Zyklen, vermutlich
hat Thomas einfach die Optimierung vergessen.

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.