mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMega8 zu langsam?


Autor: Uwe Mnich (uwe)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

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

Matthias

Autor: MSE (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: MSE (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: mmerten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
5 takte L und 5 takte H sind nun mal Foszillator/10

Autor: MSE (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso, ja natürlich, Verzeihung... (schäm!) !   :)

Gruß, Michael

Autor: Uwe Mnich (uwe)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.