www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega,statt 74HC573 ->74HC193?


Autor: Georg J. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey an alle.

Ich benutze einen ATMEGA8515
Ich stehe vor folgendem Problem.
Ich lade immer 256 Werte hintereinander aus dem externen SRAM.Der untere 
Teil der Adresse beginnt immer bei 0 und endet bei FF.Der höhere Teil 
spielt in dem Fall keine Rolle.

ld rd,Z+
ld rd,Z+
ld rd,Z+
...
...
...
...


Ich möchte jetzt aber einen gewissen OFFSET angeben.
Der Wert der durch den OFFSET angegeben wird soll zuerst geladen werden 
und die anderen sollen darauf folgen. Ein Überlauf ist gewünscht da die 
restlichen Werte vor dem OFFSET zum Schluss folgen sollen.

Bsp:
OFFSET = 250
250,251,252,253,254,255,0,1,2,....,248,249


Die Werte werden wirklich hintereinander geladen und an dem ist auch 
nicht zu rütteln. Deswegen entsteht auch mein Problem.

Nun habe ich mir die Befehle angesehn. Es gibt keinen Befehl der 
gleichzeitig aus dem SRAM ladet und den OFFSET erhöht.
Es gäbe höchstens ld rd,Z+q. Nur dieser erhöht den OFFSET nicht 
automatisch.(Außerdem kann ich nicht mit beliebig hohen OFFSET laden. 
Bis 63?)

Nun habe ich an eine Lösung per Hardware gedacht.
Anstatt des Latch könnte man doch auch einen ladbaren Zähler verwenden.

Der OFFSET wird zu beginn ganz normal in den Zähler geladen und per 
Umschalter in den Zählmodus geschalten. ALE wird dann verwendet um den 
Zähler hochzählen zu lassen.
Wenn ich mir das Timig des externen Interfaces so anschaue müsste das 
ganze doch theoretisch funktionieren. Der 74HC193(zwei für 8Bit) zählt 
bei positiver Flanke. Wird ALE gesetzt(bei ATMEGA8515 High) so zählt der 
Zähler.Und das nächste mal erst wieder bei der nächsten High Flanke.

Wenn ich mir das Ganze so vorstelle müsste es doch funktionieren 
ABER..es wird wohl zu langsam sein.

Meine eig. Frage ist nun, könnte die Überlegung funktionieren? Wenn 
nicht, gibt es Alternativen? Wie würdet ihr das Problem lösen?

MfG Georg

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ld rd,Z
inc zl
ld rd,Z
inc zl
ld rd,Z
inc zl
ld rd,Z
inc zl
ld rd,Z
inc zl
...


Peter

Autor: Georg J. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenns so einfach wäre. Es kommt aufs Timing dauernd.
Das ganze darf nicht länger als der Befehl ld rd,z+ (2 Takte und 3 Takte 
bei externem RAM). Deine Lösung würde 4 Takte brauchen.

MfG Georg

Autor: Georg J. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hups der Fehlerteufel war da:

Wenns so einfach wäre. Es kommt aufs Timing an.
Das ganze darf nicht länger als der Befehl ld rd,z+ (2 Takte und 3 Takte
bei externem RAM) dauern. Deine Lösung würde 4 Takte brauchen.

MfG Georg

Autor: georg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann mir keiner helfen? mfg georg

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Georg J. schrieb:

> Der OFFSET wird zu beginn ganz normal in den Zähler geladen und per
> Umschalter in den Zählmodus geschalten. ALE wird dann verwendet um den
> Zähler hochzählen zu lassen.

Yep, das sollte dem Prinzip nach funktionieren. Nur muss man das Timing 
genau nachrechnen, wenn man mit ALE 0=>1 zählt.

Allerdings wird normalerweise ein transparentes Latch verwendet, kein 
flankengetriggertes Register, daher wird das vmtl. nur mit gezähltem 
Zugriff funktionieren, nicht jedoch alternativ mit direktem Zugriff.

> Wenn ich mir das Ganze so vorstelle müsste es doch funktionieren
> ABER..es wird wohl zu langsam sein.

Daher wäre es evtl. sinnvoller, am Ende vom Zyklus hochzuzählen, nicht 
am Anfang. RD als Taktsignal.

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.