ATMega8 zu langsam?

OP #228541
Hallo Leute,

ich verstehe das alles nicht mehr.

Ich habe ein kleines Testprogramm geschrieben, das die Spannung an PB2
ständig wechselt, so das auf dem Oszilloskop an PB2 ein Rechteck zu
sehen ist.

  ldi  r16,0b00000100
loop:  in  r17,PORTB  ;1 Takt
  eor  r17,r16    ;1 Takt
  out  PORTB,r17  ;1 Takt
  rjmp  loop    ;2 Takte

Quarz = 7,3768 MHz
Ein Takt dauert also 135,56 ns

Die Schleife sollte in 677,8 ns abgearbeitet sein.

Auf dem Oszilloskop messe ich aber 1350 ns, also genau das Doppelte.
Das Oszilloskop ist OK, da ich am Quarz ungefähr 7,4 MHz messe.

Laut Datenblatt vom ATMega8 sollten die 677,8 ns aber richtig sein:

CPU-Takt     | T1  | T2  | T3  | T4  | T5  |
              _    __    __    __    __    _
135,56 ns    |  |__|  |__|  |__|  |__|  |__|  |_

Fetch   in   |_____|
             |     |

Execute in         |_____|
Fetch   eor        |     |

Execute eor              |_____|
Fetch   out              |     |

Execute out                    |_____|
Fetch   rjmp                   |     |

Execute rjmp                         |_____|
                                     |     |

Das sind genau die 5 Takte, die die Schleife braucht.

Wieso messe ich das Doppelte? Irgendwo ist da der Faktor 2 drin, aber
wo?

Die Fuses stehen auf Ext. Crystal:
CKSEL=1111
SUT=01
BODLEVEL=1
BOOTSZ=00

Hat jemand eine Idee ?

Gruß ... Uwe
Gast #228543
Ich verstehe so wenig von Assembler, dass ich nicht ohne Blick ins
Datenblatt (und dazu hab ich jetzt keine Lust) weiß, was Dein Programm
macht. Was macht es denn? Gibt jeder Schleifendurchlauf einen Impuls
oder ändert jeder Durchlauf den vorherigen Zustand? Wenn letzteres der
Fall ist, ist klar, dass dann Dein Rechteckimpuls eine Periodendauer
von ZWEI Schleifendurchläufen hat.
Gast #228544
@Matthias:

Meinst Du mit 10 eine Binärzahl?

Gruß, Michael

PS: Es gibt 10 verschiedene Sorten von Menschen: Diejenigen, die den
Binärcode verstehen und die anderen.
OP #228547
Hallo MSE,

du hast vollkommen recht. Ich schieb diese Peinlichkeit mal auf den
Umstand, das mir heute Nacht um 2 Uhr schon fast die Augen zugefallen
sind. Vielleicht sollte man diese Probleme doch einfach mal ein paar
Tage ruhen lassen. Danke für die Entfernung der Brettes von meinem
Kopf.

Gruß ... Uwe

Das Ganze könnte fast als Scherzfrage durchgehen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.