Forum: Mikrocontroller und Digitale Elektronik Paralleles Interface zum Datentransport


von Philipp Karbach (Gast)


Lesenswert?

Hallo,
ich will in eine Richtung besonders schnell Daten verschicken. Dabei 
handelt es sich um bytes die verschickt werden (wie UART). Parallel, 
weil genug Pins vorhanden, einfach.

Allerdings habe ich sowas noch nie gemacht. Mein Konzept sieht so aus:
Das Interface ist nur unidirektional!

Mega32:
Enable Pin High
PORTA = aktuelles Zeichen
Enable Pin Low

Parallax Propeller:
Wenn Enable High
Byte lesen

Macht das Sinn oder wird das nicht funktionieren? Danke.

von holger (Gast)


Lesenswert?

Mega32:
PORTA = aktuelles Zeichen
Enable Pin High
Enable Pin Low

Parallax Propeller:
Wenn Enable High
Byte lesen

von Philipp Karbach (Gast)


Lesenswert?

muss am mega32 ein delay zwischen EN und ~EN? Denke ja?!

von Michael U. (amiga)


Lesenswert?

Hallo,

ungünstigstenfalls ist der Impuls einen AVR-Takt lang. Ob das Deiner 
Parallax-Software reicht, muß Du wissen. Sonst eben entsprechend lang 
warten.

Gruß aus Berlin
Michael

von holger (Gast)


Lesenswert?

>ungünstigstenfalls ist der Impuls einen AVR-Takt lang. Ob das Deiner
>Parallax-Software reicht, muß Du wissen. Sonst eben entsprechend lang
>warten.

Oder noch einen Pin für ein Handshake spendieren.

von Philipp Karbach (Gast)


Lesenswert?

so ich hab das ganze mal aufgebaut und siehe da es funktioniert schon 
halbwegs. Ich hab es erst ohne delay ausprobiert und es funktionierte 
überhaupt nicht. ein delay von ca. 200µs zwischen EN und ~EN hilft. 
Allerdings schleichen sich fehler ein. Ist eben nicht ganz synchron. Wie 
finde ich die korrekte Delay zeit bzw. geht das mit dem handshake?

von Michael U. (amiga)


Lesenswert?

Hallo,

naja, "Bescheid" sagen halt. ;-)

AVR legt Daten auf den Port und setzt dann Strobe aktiv.
Der Parallax setzt Busy aktiv, wenn er den Strobe erkannt hat, der AVR 
nimmt Strobe zurück. Der Parallax nimmt Busy zurück, wenn er fertig ist 
und neue Daten annehmen kann.

Die zeitlich günstigste Version hängt vom Verhalten des Parallax ab.
Wenn der auf Strobe aktiv annehmbar schnell reagiert, ist es vermutlich 
am einfachsten, wenn der AVR auf Busy aktiv wartet und dann Strobe 
zurücknimmt.
Vor dem anlegen des nächsten Bytes muß eben Busy auf inaktiv getestet 
werden und notfalls gewartet.

Da das ganze ja offenbar schnell sein soll: wenn die Daten Blockweise 
anfallen einfach als Schleife mit Warten auf die Reaktion abarbeiten.

Zeitkritische Sachen kann der AVR ja im Interrupt abarbeiten, das 
verzögert dann höchstens die Übertragung, stört sie aber nicht, die 
warten ja aufeinander. Muß batürlich auf der Parallax-Seite auch 
entsprechend den Gegebeheiten geregelt werden.

Gruß aus Berlin
Michael

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wie wird denn EN vom anderen Controller ausgewertet? Etwa gepollt?

Da bietet sich ein Interrupt an. Den dürfte der andere Controller in 
erheblich kürzerer Zeit als 200 µs bedienen können.

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.