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