Forum: Mikrocontroller und Digitale Elektronik Timing-Problem mit Arduino oder Alternative gesucht


von Oliver K. (okoenigs)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich würde mich gerne Daten aus einer alten Druckerschnittstelle auslesen 
und diese erwartet eine direkte Quittierung, sonst geht diese auf 
Störung. Ich habe versucht die Quittierung über einen Trigger-Eingang 
auf einen Arduino-Micro zu legen und das Ausgangssignal entsprechend zu 
erzeugen.

Ein "echter" Drucker verhält sich wie das angehängte Bild 1 und der 
Arduino wie Bild 2 wegen seiner Zykluszeit. Die obere Kurve ist das 
Eingangsignal und die untere das erzeugte Ausgangssignal.

Gibt es eine Möglichkeit auf das Signal schneller zu antworten oder ein 
IC etc, welches dieses Verhalten simuliert? Problem dabei ist, dass das 
Ausgangssignal etwa doppelt so lange anstehen muss und ein direktes 1:1 
quittieren daher nicht möglich ist :-(

Viele Grüße
Oliver

von Dietrich L. (dietrichl)


Lesenswert?

Oliver Königs schrieb:
> Gibt es eine Möglichkeit auf das Signal schneller zu antworten

Interruptgesteuert und/oder in "einfachem" C programmieren (ohne das 
ganze Arduino Gedöhns).

> oder ein
> IC etc, welches dieses Verhalten simuliert? Problem dabei ist, dass das
> Ausgangssignal etwa doppelt so lange anstehen muss und ein direktes 1:1
> quittieren daher nicht möglich ist :-(

Monoflop, z.B. 74HC123

Gruß Dietrich

von Karl H. (kbuchegg)


Lesenswert?

Dietrich L. schrieb:

> "einfachem" C programmieren (ohne das
> ganze Arduino Gedöhns).

Ich unterstütze diesen Vorschlag.

von Oliver K. (okoenigs)


Lesenswert?

Perfekt Danke :-)

Ich werde das erstmal mit dem IC probieren und mich dann mit der 
"Tuning"-Alternative auseinandersetzen.

von Karl H. (kbuchegg)


Lesenswert?

Oliver Königs schrieb:
> Perfekt Danke :-)
>
> Ich werde das erstmal mit dem IC probieren und mich dann mit der
> "Tuning"-Alternative auseinandersetzen.

Das hat mit Tuning nichts zu tun.
Aber dieses ganze Arduino Zeugs mit 'digitalWrite' und weiß der Geier 
was noch alles, kostet dann eben Taktzyklen. 15µs bei 16Mhz sind nun mal 
eine erkleckliche Anzahl an Zyklen, die im Arduino System aus 
Komfort-Gründen offenbar verbraten werden und die du dir in diesem Fall 
nicht leisten kannst.

In reinem C ist diese Aufgabenstellung problemlos handhabbar und dann 
unterhalten wir uns nicht über 15µs Verzögerung, sondern über 0.1µs bis 
vielleicht 0.5µs Verzögerung, die ohne große Anstrengungen problemlos 
erreicht werden.

: Bearbeitet durch User
von Oliver K. (okoenigs)


Lesenswert?

Okay, das habe ich jetzt verstanden. Vielen Dank für die Infos. Da ich 
bisher noch nie wirklich Probleme mit Zeitkritischen Antworten hatte 
(oder es nicht gemerkt habe) werde ich das in Zukunft anders angehen.

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.