Forum: Mikrocontroller und Digitale Elektronik ATMega8 zu langsam?


von Uwe M. (uwe)


Lesenswert?

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

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

du invertierst bei jedem Schleifendurchlauf deinen PortB2. Also wirst
du als Ausgangsfrequenz eben fosz/10 bekommen.

Matthias

von MSE (Gast)


Lesenswert?

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.

von MSE (Gast)


Lesenswert?

@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.

von mmerten (Gast)


Lesenswert?

5 takte L und 5 takte H sind nun mal Foszillator/10

von MSE (Gast)


Lesenswert?

Achso, ja natürlich, Verzeihung... (schäm!) !   :)

Gruß, Michael

von Uwe M. (uwe)


Lesenswert?

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.

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

aber immerhing sauber vormuliert mit allen nötigen Infos so das man das
Brett schon von weitem sehen konnte. So stell ich mir Fragen vor.

Matthias

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.