Hi,
kennt sich jemand mit dem PSOC Capsense Kapazitätsmessungen,speziell mit
dem CSD-Verfahren aus.Versuche vergeblich auf einem Testboard
(CY8C21534)
CSD zu implementieren.Dazu plaziere ich im PSOC Designer CSD und TX8
User
Module.Daten versuche ich über serielle Schnittstelle mittels einem
Multichart Tool zu loggen.Aber es kommt nichts an.Den Source Code
hierfür
ist unten aufgelistet.(Wenn nötig könnte ich auch Projekt posten)
Hoffe es gibt jemanden mit PSOC-Erfahrung in diesem Forum.Ist ja leider
nicht der meistgenuzte Controller hier.Wäre über jede Hilfe echt
dankbar.
Mfg
Christian
hier Code:
###################
#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
#include "TX8.h"
void main()
{
M8C_EnableGInt;
CSD_Start();
CSD_SetDefaultFingerThresholds();
CSD_InitializeBaselines();
TX8_1_Start(TX8_1_PARITY_NONE);
while (1)
{
CSD_ScanAllSensors();
CSD_UpdateAllBaselines();
TX8_1_PutCRLF();
TX8_1_Write((char *) (CSD_waSnsResult), CSD_TotalSensorCount*2);
TX8_1_Write((char *) (CSD_waSnsBaseline), CSD_TotalSensorCount*2);
TX8_1_Write((char *) (CSD_waSnsDiff), CSD_TotalSensorCount*2);
TX8_1_PutChar(0);
TX8_1_PutChar((CHAR)0xFF);
TX8_1_PutChar((CHAR)0xFF);
}
}
Hi, die Frage ist, wird hier ein UART User Module benutzt, sieht so aus.
Wie ist dann die UART Clock im PSoC Designer eingestellt ? Einfacher ist
es eine Software UART zu benutzen, dazu gibt es ein AppNote AN2397 zum
Download bei Cypress mit dem erforderlichen Code TX8.asm.
MfG Insider
Das C Programm stammt doch aus der AN2397.Verbindung zum PC über
externen RS232 level translator auf COM Port wie im AN2397
vorgeschlagen.
Benutzes User Modul im PSOC Designer ist das TX8 Modul,wenn das gemeint
ist.Für ein CSR Testboard konnte ich so Daten empfangen.Wollte jetzt
einfach CSR auf CSD umwandeln.
Wozu die TX8.asm? Ich dachte die wird durch "Generate Application"
selber
erstellt.
Hast du vielleicht Informationen bzgl.der settings (z.b.Pin,Clocks...)
meine seettings:
global:
VC1=SYSClk/N =1
VC2=VC1/N =1
VC3Source =SysClk/1
VC3Divider =2
TX8:
Clock =VC3
Clocksync=SynctoSysClk
...
Mfg
Christian
Hi, das CSD Modul benutzt doch die VC1,VC2, die kann man also nicht so
einfach ändern. Damit auch kein Digital Block benutzt werden muss wird
der Software UART benutzt. Dazu muss auch nicht im Designer ein UART UM
plaziert werden, der vierte Block bleibt also leer ! Deswegen TX8.asm
einbinden, das Pin togglen für die RS232 wird alles in Software gemacht,
mit 115 kBaud, daher wird auch kein Clock benötigt. Das einzige: den
Ausgangspin, TX8 auf Drive, Strong einstellen. TX8.asm sollte bei der
AppNote dabei sein.
Gruß Insider
Gruss,
habe mir aus der AN2397 die du meintest mal das Projekt in PSOC-Designer
geladen.Das einzige UserModul das plaziert ist,ist das CSD UM,mit Port
TX8
auf Drive:Strong.TX8 liegt hier auf P1[0].Bräuchte aber TX8 auf P1[2].
Das lässt sich so aber nicht ändern.Das heißt ich müsste den Ausgang des
CSD UM auf einen anderen Pin des Ausgangsbus legen.Ohne noch ein UM(TX8)
zu plazieren bleibt aber der TX8 auf den falschen Port.Kann das geändert
werden?
Mfg
Christian
Hi, dann schau mal in T8.inc:
TX8_Port: equ 0x1
TX8_PortDR: equ PRT1DR
TX8_PinMask: equ 0x1
dort ist der Port Pin P1.0 definiert.
Du brauchst also:
TX8_PinMask: equ 0x4 ; P1.2
siehe Technical Reference Manual. Und noch im PSoC Designer den P1.2 auf
Strong und P1.0 zurück setzen. Dann sollte es funzen...
Gruß Insider
Danke für den Tip.Werde es mal probieren.Aber mal was anderes.
Habe mal Takt mit Oszi gemessen,direkt am RS232 Stecker.Komme auf
ungefähr
125kHz-Signal.Ist das nicht ein bissl viel?Das multichartprogramm
über COM2 Schnittstelle läuft eigentlich mit 19200 Baud.Falls das
Signal falsch ist wie könnte ich die Frequenz ändern?
Mfg
Christian
Hi,
geht doch: der Software UART macht 115200 Baud, unabhängig vom CPU
Clock, das hast Du auch gemessen. Das Multichart Tool kann diese
Baudrate, siehe Einstellung, Figure 4, Settings Dialog, aus der AppNote.
Gruß Insider
Hi,danke an insider.Funktioniert mit der TX8.inc.Was mich wundert ist
das es trotzdem funktioniert.TX liegt ja auf dem richtigen Ausgang,aber
man sieht aber im Blockschaltplan(im Device Editor) keine Verbindung der
UM zum Ausgangsbus.Port1.2(TX)ist nur über den GlobalIn-Bus
verbunden.Komisch.Aber hauptsache es funtzt.
Mfg
Christian
Hi, ja ist doch klar: dies ist kein Usermodul, sondern einfach Software,
die direkt auf einen Port-Pin zugreift. Daher sieht man im Device Editor
keine Verbindung von irgendeinem Block zu diesem Pin. Der vierte Block
müsste ja bei Dir leer sein und Du kannst ihn für was anderes benutzen,
z.B. 8-Bit Timer.
Aus Deiner ursprünglichen Software wird dies auch nicht gebraucht, also
löschen:
TX8_1_Start(TX8_1_PARITY_NONE);
Viel Spass bei CapSense !
Gruß Insider
Hi,
ja jetzt versteh ich es auch.Ist nur ein SW-modul die im TX8.asm als
Funktionen hinterlegt ist.
Aber: Hab zwar ne Verbindung aufbauen können auf COM2 Port,aber wenn
ich im CSDWizard ne neue Pin Belegung vornehmen will
(also auf mein Board zugeschnitten)bekomm ich ne Meldung :
ERROR:tx8.asm undefined symbol Port_1_Data_Shade
Hab nachgeschaut,kommt in der TX8.inc vor:
...
or [Port_1_Data_SHADE], TX8_PinMask
mov A, [Port_1_Data_SHADE]
mov reg[TX8_PortDR], A
...
hängt also anscheinend mit der Änderung des Port Pin 1.2 (in TX8.inc)
zusammen (TX8_PinMask: equ 0x4 ; P1.2),was ich aber nicht verstehe,
da ich nur Pins mit P(0.X)und P(2.X)(im Wizard)verwendet habe und P1.2
ist auch als Grün markiert also gilt als reserviert.
Hoffe das mir nochmal helfen kannst.(weiss das man als Newbie nervt )
;-)
Gruß
Christian
Hi,
Port_1_Data_SHADE ist bei mir in PSocconfig.asm im SubDirectory [lib]
definiert, ich kann auch das AppNote Beispiel linken. Benutzt Du den
Menupunkt "Generate Application" nach jeder Änderung im Device Editor ??