Hallo, ich habe eine Frage zum Quad Decoder in PSoC. Kann mir jemand sagen wie groß die Bitlänge der Counter_value des QuadDec ist? Bzw in welche Variable speicher ich ihn am besten ab? Ein Signal welches an dei Schnittstelle Index geht setzt den Counter ja immer wieder zurück wenn ein steigende Flanke kommt (auf steigende Flanke getriggert). Das Zurücksetzen funktioniert auch soweit. Allerdings wird der Counter nicht auf Null zurückgesetzt. geschweige denn das der bei Null anfängt zu zählen. Kann mir jemand sagen wieso bzw. wie ich das hin bekomme? Grüße
Das Schöne am PSoC Creator ist, dass man von überall einen schnellen Weg zum data sheet der entsprechenden Komponente hat. Meist reicht ein Rechtsklick;-) Sieht ganz danach aus, als ob du die TCPWM Komponente verwendest. In dem Fall findest du die relevanten Infos hier: Sebi schrieb: > Allerdings wird der Counter > nicht auf Null zurückgesetzt. geschweige denn das der bei Null anfängt > zu zählen. Kann mir jemand sagen wieso bzw. wie ich das hin bekomme? data sheet S. 3 Tabelle Inputs -> index und S. 31 Weitere Infos findet man im TRM http://www.cypress.com/file/126171/download Auf S. 181 findest du dann genauere Infos zur Funktionsweise. Sebi schrieb: > Kann mir jemand sagen wie groß die Bitlänge der Counter_value des > QuadDec ist? Bzw in welche Variable speicher ich ihn am besten ab? i.d.R. sind das 32bit Register die per API ausgelesen werden. data sheet S. 23 also:
1 | uint32 myVariable; |
2 | ..
|
3 | myVariable = myComponentName_ReadCounter(void); |
Allerdings bedeutet die Tatsache, dass ein uint32 benutzt wird, nicht dass auch der counter 32bit hat. data sheet S. 1 .. Features 16-bit fixed-function implementation .. Die UDB-Quadec Komponente (PSoC4/5) arbeitet anders. Die API ist nicht mit der TCPWM Komponente kompatibel und die Bit-breite läßt sich konfigurieren (glaub ich).
Vielen Dank für deine Hilfe. Ich habe mir die Informationen mal durchgelesen und festgetsellt das durch den Index der Wert auf 0x8000 gesetzt wird. Als Dezimal ist das 32768 was ich in meinem Waveform chart auch so angezeigt bekomme. Immer wenn ein bestimmter Impuls kommt löse ich sowieso einen Interrupt aus. Deshalb hab ich mir gedacht ich schreibe in dei Routine einfach QuadDec1_WrtiteCounter(count); und count ist auf 0 deklariert. Aber so richtig funktionieren tut es nicht. Mein Chart bleibt trotzdem auf den 0x8000 stehen. Dann hab ich den Pin von diesem Impuls einfach mal vom QuadDec entfernt und Index ausgeschalten, damit ich das quasi von selbst zurücksetzte auf 0. Aber das funktioniert nicht. Wenn ich direkt nach QuadDec_start(); dann den Wert auf 0 setzen will geht es auch nicht. Bzw. dann funktioniert die Kommunikation mit Labview nicht mehr. Auch wenn ich bevor ich den Wert auf 0 setzen will den Decoder stoppe und danach wieder staretn will funktioniert die Kommunikation mit Labview nicht mehr. Ich bin ein wenig verzweifelt. Hat jemand einen Lösungsvorschlag? Grüße
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.