Je kan zeggen dat ik het mezelf moeilijk maak, maar het STMCUBE gedoe vind ik maar vervelend.
Ik gebruik chibios. Daar zit in ieder geval nog geen TSC (zo heet de module bij ST) driver in. Anderzijds, het ding is eigenlijk best eenvoudig. Gewoon een paar waardes in de registers zetten en klaar is kees. Ik denk dat ik voorlopig gewoon ga pollen. En de andere app die knopjes gebruikt die heeft een "get_button()" waar dus makkelijk wat voor in de plaats te zetten is.
ST beweert dat er een "free library" is voor de TSC. Of dat betekent dat je in de STMCUBE iets aan kan vinken en dat je dan met hun approved ontwikkelomgeving die library kan meelinken of dat er iets open source is, dat weet ik nog niet.
Maar goed.... Via het "charge transfer princiepe wordt de boel gemeten".
Volgens mij begin ik eea te begrijpen. De waarde van de sense capacitor daar geeft ST over als informatie (....vage handgebaren)....
Weinig leidraad. Maar als ik een count van ongeveer 150 wil hebben bij 50pF, dan moet de sense condensator ongeveer 150 * 50pF zijn. Dat is 7nF. Volgens mij heb ik er zo een op m'n bordje gezet. (ook een 68nF, dus dan zou ik 1500 counts in m'n tellertje moeten gaan zien voor die pads). Ik ga het proberen....
Jep! De library is C-code en helmaal beschibaar: (hiervandaan)
Complete free C source code library
En als ik hem download krijg ik een zipfile met daarin een windowsexecutable. Zucht.
Update2: Ok. Uitgepakt. Inderdaad sourcecode. Die gebruikt weer de ST-HAL layer. Troep als: Vroeger riep iedereeen "setPinMode (port, pin, mode)" functies aan en dan tientallen op een rij. Het is veel handiger als je gewoon een doit functie aanroept met een structure waar instaat wat ie allemaal voor pinmodes moet instellen. Die structure kan je dan in flash zetten, bespaart geheugen.
Zie hier de resulterende code van ST zelf:
c code:
#if TSLPRM_TSC_GROUP5_IO3 == SAMPCAP
GPIO_InitStructure.GPIO_Pin |= GPIO_Pin_6;
#endif
#if TSLPRM_TSC_GROUP5_IO4 == SAMPCAP
GPIO_InitStructure.GPIO_Pin |= GPIO_Pin_7;
#endif
#if TSLPRM_TSC_GROUP6_IO1 == SAMPCAP
GPIO_InitStructure.GPIO_Pin |= GPIO_Pin_11;
#endif
#if TSLPRM_TSC_GROUP6_IO2 == SAMPCAP
GPIO_InitStructure.GPIO_Pin |= GPIO_Pin_12;
#endif
#if TSLPRM_TSC_GROUP6_IO3 == SAMPCAP
GPIO_InitStructure.GPIO_Pin |= GPIO_Pin_13;
#endif
#if TSLPRM_TSC_GROUP6_IO4 == SAMPCAP
GPIO_InitStructure.GPIO_Pin |= GPIO_Pin_14;
#endif
GPIO_Init(GPIOB, &GPIO_InitStructure);
#if TSLPRM_TSC_GROUP3_IO1 == SAMPCAP
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_Init(GPIOC, &GPIO_InitStructure);
#endif
[Bericht gewijzigd door
rew
op dinsdag 26 september 2017 16:56:54
(29%)