Am 12.03.2012 19:05, schrieb Heiko Nocon:
> Sven Schulz wrote:
>
>> Der Drehgeber. Immer wenn ein Rechteck erkannt wurde und ein neuer Wert des
>> Sensors vorliegt, soll die zu sendene Datenreihe mit der aktuellen Position
>> des Inkrementalgebers aktualisiert werden, in 1/10 Grad-Darstellung.
>> Der Sensor liefert Werte alle 1ms.
> 55µs Periode sind bei 20MHz Systemtakt mehr als 1000 Takte, in denen ein
> lütter AVR auch fast 1000 Operationen ausführen kann.
Ist schon richtig, aber das Problem ist die Zuordnung der Sensorsignale
zu den Drehgeberdaten, d.h. der Sensor liefert nur auf jeden 20.
Drehgebertakt ein Signal.
Die Frage ist jetzt, ob man ein Wertepaar alle 55us benötigt, oder
jeweils ein Wertepaar passend zum langsameren Geber, also wenn der
Drehgeber schneller ist als 1ms, dann mit jedem Sensorsignal ein
Wertepaar (Sensor, Position) senden und wenn der Drehgeber langsamer
ist, mit jedem Drehgebertakt ein Wertepaar.
Das Drehgebersignal könnte man mit 2 Bytes codieren. Das ließe sich
eventuell noch reduzieren, z.B. indem man nur die Differenz überträgt.
Wenn der Sensor dann z.B. 3 Bytes liefert, müsste man jede ms ca. 5
Bytes übertragen.
Mit 9k6 kommt man auf ca. 1 Byte/ms. Man müsste also entsprechend
schneller senden, oder man verwendet eine richtige USB-Hardware mit
ausreichender Geschwindigkeit, z.B. AT90USB162 (?). Mit nem
seriell/USB-Wandler könnte es knapp werden.
Wenn man die Daten zwischenspeichern könnte, um sie dann anschließend
langsamer zu senden, sähe das etwas anders aus. Kommt dann drauf an,
wieviele Daten der OP benötigt.
Gruß
Stefan