Autor |
Impulsbreite des WR-Signals beim ATmega162 |
|
|
|
|
BID = 691599
Pipimaxi Gelegenheitsposter
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 82 Wohnort: Mörlenbach
|
|
Hallo liebe Forengemeinde,
letzt haben wir im Labor mit dem ATmega162 und seiner External Memory (no Wait-states) experimentiert und sollte hier in einem Dauerloop etwas auf eine externe Adresse schreiben.
Der Programmcode hierfür ist auch recht simpel, die Cycle Clocks pro Schleifendurchlauf deckten sich auch mit den Anzahl der Clocks aus dem Datenblatt (S. 307) bei den Befehlen, die mir der Disassembler ausspuckte, überein.Soweit sogut
Nun sollten wir mit einem DSO das WR-Signal messen. Hierzu haben wir erstmal das Datenblatt zur Hand genommen, Seite 270, Tabelle 114, Zeile 16,Breite des WR-Signals, bei einem internen Taktgenerator (1 MHz) sind wir auf ein theoretisches Ergebnis von 990ns gekommen.
Das DSO sagt aber leider etwas ganz anderes. Hier erhielten wir eine Pulsbreite von gut 1,9µs.
Der Bericht verlangt leider eine Erklärung für diese Tatsache, mich würde es ehrlich gesagt auch interessieren. Kann mir da jemand auf die Sprünge helfen? Ein einfaches "tja, das sind die Unterschiede zwischen Theorie und Realität" würde da selbst mir nicht genügen
Vielen Dank im Vorraus |
|
BID = 691606
DonComi Inventar
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 8605 Wohnort: Amerika
|
|
Nach Tabelle 118 kommen aber knapp 2µs dabei raus. Wenn schon die Periodendauer des Systemtakts 1µs beträgt...
So genau ist der interne Oszillator übrigens nicht, das gehört dann in die Fehlerrechnung
_________________
|
|
BID = 691607
Pipimaxi Gelegenheitsposter
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 82 Wohnort: Mörlenbach
|
Erstmal Danke für deine rasche Antwort.
OK, das mit der ungenauen Genauigkeit des internen Oszillators kann ich noch gut nachvollziehen, ist notiert
Aber warum denn nun Tabelle 118? Der einzige Unterschied, den ich feststelle, ist das Tabelle 114 von 4,5-5,5V und Tabelle 118 von 2,7-5,5V misst.
Aber selbst wenn: Bei Tabelle 118 Zeile 16 steht doch auch in der Berechnung:
Und bei 1MHz bzw. 1µs wären das doch 985ns ?
|
BID = 691633
perl Ehrenmitglied
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| Hier erhielten wir eine Pulsbreite von gut 1,9µs. |
Falls 1MHz stimmt (mit Softwareschleife kontrolliert?) wären das zwei Clocks.
Dann habt ihr wohl doch einen Wait programmiert. Siehe Fig.14, S.29 des DB.
Darüberhinaus kann man zwei unterschiedliche Timings für den externen Adressraum gleichzeitig verwenden: S.28, "Timing".
Schau dir halt nochmal die entsprechende Initialisierung an.
|
BID = 691648
Pipimaxi Gelegenheitsposter
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 82 Wohnort: Mörlenbach
|
Die 1 MHz waren schon richtig, das wurde kontrolliert ja
Dass wir vielleicht unbeabsichtigt ein Waitstate mit rein programmiert haben, hab ich mir auch schon überlegt, aber laut Vorbereitung und Programmcode haben wir nur folgende Register beschrieben:
MCUCR |= (1<<SRE);
SFIOR |= (1<<XMM2); //wegen dem JTAG-Interface
Mehr wurde nicht gemacht.
Komischerweise sind alle anderen Zeiten mit dem Faktor 2 versehen, die wir messen sollten (t_AVLL (Zeile 2) und t_LLAX_ST (Zeile 3a))
Das ganze gibt uns irgendwie richtige Rätsel auf ^^
|
BID = 691743
Pipimaxi Gelegenheitsposter
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 82 Wohnort: Mörlenbach
|
Hallo nochmal,
könnte die doppelte Pulsbreite auch daher kommen, dass ein IntegerWert auf das extmem geschrieben wurde? Nach Disassembler sind es ja dann dort 2 store-befehle, vll bleibt deswegen das WR-Signal demzufolge doppelt so lang auf low?!
|
BID = 691814
DonComi Inventar
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 8605 Wohnort: Amerika
|
Moin,
Integer heißt nur Ganzzahl, über die Wortbreite sagt das noch nichts aus; ich denke aber, du meinst einen 16-Bit-Integer.
Wenn ja, dann erfolgen zwei normale 8-Bit-Zugriffe aufeinander und das WR-Signal wird zwischendurch nicht geändert.
Problem gelöst ![](/phpBB/images/smiles/smilie_super.gif) .
(Allerdings wussten wir das natürlich nicht... Also am besten gleich den Programmcode mitliefern, damit man sich ein umfassendes Bild machen kann. Mein erster Beitrag zum Thema wurde übrigens im Stadium geistiger Umnachtung verfasst. Sprich: falsche Tabelle ![](/phpBB/images/smiles/smilie_frown.gif) )
_________________
|
BID = 692047
Pipimaxi Gelegenheitsposter
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 82 Wohnort: Mörlenbach
|
Na dann mal recht herzlichen Dank DonComi.
Ja, ich meinte eine 16Bit Variable.
Nun gut, dann hätten wir das ja geklärt
kann geclosed werden.
|