Forum: Mikrocontroller und Digitale Elektronik QuadDecoder PSoC 4


von Sebi (Gast)


Angehängte Dateien:

Lesenswert?

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

von Reiner W. (reiner_w)


Lesenswert?

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).

von Sebi (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.