Forum: Mikrocontroller und Digitale Elektronik Problem mit Taktfrequenz


von Bastelmaus (Gast)


Angehängte Dateien:

Lesenswert?

Hi,
ich habe einen ATmega128
mit diesem kleinen Programm:
1
while(1)
2
  {
3
    PORTG ^= (1<<3); // Toggle Strobe
4
  }
Habe ich an der Portleitung eine Frequenz von 166kHz. (-O0)
Habe ich an der Portleitung eine Frequenz von 285kHz. (-Os)

Kommt mir etwas langsam vor...
Welche Taktrate habe ich?
Sind meine Fuses richtig gesetzt?

von Bastelmaus (Gast)


Lesenswert?

Oh,
kann keiner was dazu sagen?

Ich habe AVRstudio4 und als Programmiergerät einen AVRISP MKII
Der Quarz hat 4MHz.

Ich habe das bei zwei verschiedenen Compilereinstellungen probiert:
mit Optimierung (-O0) habe ich an der Portleitung 166kHz.
mit Optimierung (-Os) habe ich an der Portleitung 285kHz.

Liegt da irgendwo der Hund begraben, oder ist der ATmega128 so langsam?

von spess53 (Gast)


Lesenswert?

Hi

>Liegt da irgendwo der Hund begraben, oder ist der ATmega128 so langsam?

Sieh dir doch einfach mal den Assemblercode an.

MfG Spess

von Reinhard R. (reirawb)


Lesenswert?

Mal rein rechnerisch...
Bastelmaus schrieb:
> Der Quarz hat 4MHz.
entspricht 0,25µs Periode.

> ...
> mit Optimierung (-O0) habe ich an der Portleitung 166kHz.
entspricht 6µs Periode = 24 Prozessortakte. Da für eine Periode 
Ausgangstakt der Pin zweimal getoggelt werden muss, wird Deine Schleife 
in 12 Takten abgearbeitet.

> mit Optimierung (-Os) habe ich an der Portleitung 285kHz.
entspricht 3,5µs Periode = 14 Prozessortakte. Da für eine Periode 
Ausgangstakt der Pin zweimal getoggelt werden muss, wird Deine Schleife 
in 7 Takten abgearbeitet.

Versuch in Assembler:
       ldi r16,0x0F    ;Vorbereitung Hilfsregister zum toggeln
loop:  out PORTG,r16   ; 1 Takt
       swap r16        ; 1 Takt, Bit toggeln
       rjmp loop       ; 2 Takte

Toggelt allerdings den gesamten Port G, also nicht perfekt, nicht 
getestet, braucht 4 Takte für einen Durchlauf und Du bekommst 500kHz an 
Deinem Pin raus. Schneller fällt mir nichts ein.

Reinhard

von Antennenfreund (Gast)


Lesenswert?

Reinhard R. schrieb:
>> mit Optimierung (-Os) habe ich an der Portleitung 285kHz.
> entspricht 3,5µs Periode = 14 Prozessortakte. Da für eine Periode
> Ausgangstakt der Pin zweimal getoggelt werden muss, wird Deine Schleife
> in 7 Takten abgearbeitet.

Vielen Dank!  :-)

Jetzt sehe ich es ein.
Die Schleife in 7 Takten abarbeiten ist OK.
Ich hatte einen fatalen Fehler vermutet, wie z.B. Quarz ist kaputt und 
die µC läuft mit Notstrom  ;-)

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.