Hallo,

folgende Problematik:
Ich möchte von einem externen Gerät einen Datenstrom einlesen. Das ganze geht so.

1. der uC bekommt mittel Tastendruck mitgeteilt das der Benutzer Daten des externen Gerätes haben will.
2. der uC zieht eine seiner Portleitung auf Low, damit wird dem externen Gerät mitgeteilt das es die Daten jetzt gefälligst rausrücken soll.

Ab hier teilen sich die möglichkeiten.

3. Das externe gerät beginnt die Daten mittels seriell-synchroner Übertragung zum uC zu schieben. der uC nimmt diese mittels Shiftin-Command entgegen und speichert diese in einer großen Variable (es sind 40 bit, Schiebetakt erzeugt das externe Gerät!) Damit ist das Thema erledigt.

3.1 Das externe Gerät senden nix da es entweder nicht angeschlossen oder nicht eingeschaltet ist.

Jetzt bin ich mir nicht sicher was passiert wenn der uC mittels Shiftin auf die 40 Bit wartet die aber nie ankommen. Bleibt der uC stehen und wartet bis er schwarz wird oder gibt es eine Art "Timeout" und das Programm rennt nach kurzer Zeit weiter?
Da das besagte ext. Gerät auch mal abgesteckt rumliegen kann muß ich eine Art "Timeout" in dieses Programm einbauen. Welche möglichkeiten habe ich dazu, bzw geht das überhaupt? Oder gibt es eine andere Möglichkeit einen seriellen synchronen Datenstrom zu empfangen? Die Timeoutzeit würde bei max. 5 sec liegen, kommt bis dahin nix zurück, kommt mit sicherheit gar nix mehr. Clockfrequenz des externen Taktes liegt bei ca. 10KHz, sollte der uC (Mega32 mit vollem Takt, also 16MHz) also spielend packen. Die Pins sind über den uC Verteilt es sind nicht die UART-Pins oder die SPI-Pins die sind schon mit anderen Dingen belegt.

Wie würdet Ihr vorgehen wenn sich euch das Problem stellen würde?

Danke
KiR0