www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Verzögerung der Input-Latches beim AVR


Autor: Joerg Wolfram (joergwolfram)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin dabei, ein möglichst schnelles externes RAM Interface für
AVRs aber auch andere Mikrocontroller zu entwickeln.
Dazu benutze ich 7 Portpins von einem Port, da mir SPI zu langsam
ist. Schreiben in den RAM ist vom Timing her schon klar aber beim
Lesen habe ich das Problem des Input-Latches im AVR.
Da ich mir aber nur zu 90% sicher bin frage ich hier mal an:
out   PORTC,r16
in  r17,PINC

Kann ich mir zu 100% sicher sein, dass ich in r17 die Pegel einlese,
die VOR dem out-Befehl am Port angelegen haben? Dabei interessieren
mich nur die Bits, die als Eingang definiert sind.

Gruß Jörg

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Joerg Wolfram wrote:
> Ich bin dabei, ein möglichst schnelles externes RAM Interface für
> AVRs aber auch andere Mikrocontroller zu entwickeln.

Du weißt aber schon, daß man auch AVRs mit RAM-Interface nehmen kann?


> Kann ich mir zu 100% sicher sein, dass ich in r17 die Pegel einlese,
> die VOR dem out-Befehl am Port angelegen haben?

Natürlich nicht, jeder Interrupt kann Dir dazwischen hauen.


Peter

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Joerg Wolfram (joergwolfram)

>out   PORTC,r16
>in  r17,PINC

Da muss ein Takt Pause dazwischen.

http://www.mikrocontroller.net/articles/AVR-Tutori....

MfG
Falk

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Kann ich mir zu 100% sicher sein, dass ich in r17 die Pegel einlese,
>die VOR dem out-Befehl am Port angelegen haben? Dabei interessieren

Uuups, zu schnell.
JA. Hier klappt der Trick.

MfG
Falk

Autor: Joerg Wolfram (joergwolfram)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die schnellen Antworten!

Das mit dem Interrupt ist ne Sache, die ich fast vergessen hätte.
Zumindest für universelle Verwendung. Im konkreten Anwendungsfall
will ich über eine Erweiterung (CPLD und SRAM), die an den Parallelport 
meines BASIC-Computers angeschlossen werden soll, die Grafikauflösung
"aufbohren". Da die Videoausgabe bereits im Interrupt läuft und
auch nicht unterbrochen werden kann, besteht die Problematik nicht.

Mit 3 Takten je Nibble und 20MHz sollten dann 320x200 in 8 (16 
theoretisch)
Farben möglich sein, ohne die eigentliche Hardware umzubauen.
out    PORTA,r16  ;cmd for increment address and read low nibble
in     r17,PINA   ;read high nibble from last byte
out    PORTC,r17  ;out to video port
out    PORTA,r18  ;cmd for read high nibble
in     r17,PINA   ;read low nibble
out    PORTC,r17  ;out to video port
...

Gruß Jörg

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.