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.
Mega32: PORTA = aktuelles Zeichen Enable Pin High Enable Pin Low Parallax Propeller: Wenn Enable High Byte lesen
muss am mega32 ein delay zwischen EN und ~EN? Denke ja?!
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
>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.
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?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.