Hallo, ich habe im PSoC Creator eine Schaltung mit einem QauadDecoder. Dieser hat die Signale A und B und ein Z Signal welches den Counter zurücksetzen soll wenn dieses Signal kommt. Das Problem ist das ich nicht genau weiß wie ich den Decoder in der main.c Datein einsetze und die Signale verarbeite, bzw. die den Counter zähle und auslesen kann und so. Gibt es irgendwie ein Beispiel dazu in Form eines Beispielcodes oder so um so etwas mal zu sehen? Grüße
Die Bilder deuten darauf hin, dass du die TCPWM Komponente im QuadDec-Mode einsetzt, was bei PSoC 4 auch Sinn macht. Leider hast du sonst nichts weiter zu deiner Schaltung gesagt. Was genau soll an den Eingängen anliegen? Für den Einsatz als Decoder für einen normalen Drehgeber würdest du index und stop nicht benötigen. Du willst also sicher was anderes machen. Versuch doch mal zu beschreiben, was du eigentlich machen willst, vlt. kann dir dann auch genauer geholfen werden. Beim Einsatz als Decoder für einen Drehgeber kannst du dann z.B. so vorgehen: Bild 1 zeigt die Verdrahtung und Komponenteneinstellung. In der main.c (falls du kein eigenes Modul einsetzt) steht dann z.B.:
1 | ...
|
2 | #define INITIAL_COUNTER 0x8000 //TCPMW InitialCounter
|
3 | /*--------rotary struct----------*/
|
4 | typedef struct { |
5 | uint32 counterValue; //actual counter |
6 | volatile uint8 swichPressed; //status of encoder switch |
7 | uint32 direction; //encoder direction |
8 | } ENCODER_t; |
9 | |
10 | ...
|
11 | |
12 | QuadDec_Start(); |
13 | |
14 | //* see http://www.cypress.com/?app=forum&id=4749&rID=97375*//
|
15 | QuadDec_TriggerCommand(QuadDec_MASK, QuadDec_CMD_RELOAD); |
16 | |
17 | QuadDec_SetQDMode(QuadDec_MODE_X1); //initial mode |
18 | |
19 | |
20 | //und in der while()
|
21 | while(1) { |
22 | ...
|
23 | |
24 | myEncoder.counterValue = QuadDec_ReadCounter(); //read counter |
25 | myCounter = myEncoder.counterValue - INITIAL_COUNTER; |
26 | myEncoder.direction = QuadDec_ReadStatus() & 1; /* read direction |
27 | bit0 = QuadDec_STATUS_DOWN
|
28 | bit1 = QuadDec_STATUS_RUNNING
|
29 | direction ist _STATUS_DOWN
|
30 | see TRM PSoC 4200 S. 176
|
31 | */
|
32 | |
33 | }
|
Natürlich ist das nur ein Auszug aus dem Project, zeigt aber die relevanten Schritte. Falls du das ganze nicht für einen Drehgeber einsetzen willst, läuft es aber ähnlich. Reiner
Hallo, ich habe auch eine Frage zu diesem Decoder. Kann mit jemand sagen wie groß die Bitlänge der Counter_value des QuadDec ist? Bzw in welche Variable speicher ich ihn am besten ab? Und die zweite Frage: bei meiner Auswertung wird der Counter durch ein Signal das in "Index" rein geht immer wieder zurückgesetzt. Dies funktioniert irgendwie schon, allerdings wird der Counter nicht auf Null zurückgesetzt. Kann mir jemand sagen wieso bzw. wie ich das hin bekomme? Gruß
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.

