V
vibram
Compagnon
je t'avoue que je bloque un peu, tout les indicateurs sont au vert et je n'ai pas de detail sur le message d'erreur...
exact, j'ai essayé cet aprem, j'arrivais bien à envoyer le sketch mais impossible d'avoir le debug...Sinon tu peux utiliser le ST-Link de ta carte Nucleo.
https://www.sevenwatt.com/main/picos-arm/picos-arm-lpc810-swd-jtag-with-nucleo-stm32/
c'est le trace/debug qui ne fonctionne pas. Et je vois qu'il n'est pas activé dans ta config.
Oui oui, ca fait quelques heures que je passe la dessus et essayé pas mal de choses, je commence à me poser des questionsOui pourtant il fonctionne
Dans Output tu as bien Debug information de coché ?
2- Le trace qui permet l’accès à quelques fonctionnalités avancées comme le suivi des exceptions, les interruptions, les registres d’état et les périphériques hardware (USART, GPIO, SPI…) et plein d’autres choses sympa , et particulièrement le ITM qui est utilisé généralement pour rediriger le « printf() » . Pour activer le trace, l’utilisation du pin SWO ( PB3 ) est obligatoire mais malheureusement n’est pas disponible sur le connecteur du St-link « clone ».
Donc pour pouvoir activer le trace tu dois utiliser le st-link présent sur une carte Discovery ou Nucleo, ou si tu aime t’amuser avec la soudure CMS tu as l’option de souder un petit bout de fil sur le pin 31 (PA10) du stm32f103 présent sur le st-link, et pour des raisons pratiques, tu peux sacrifier une broche 5V sur le connecteur pour souder l’autre bout du fil.
Note : le délai minimum de quelques µs après changement de direction est à respecter, tu peu gérer ça dans ta routine d’interruption du TIM2 en rajoutant d’autre(s) valeur(s) de cycle par exemple « cycle=2,3,… ».
La configuration de l’horloge est détaillée dans le fichier « systeme_stm32f10x.c »
Ligne 987, fonction « SetSysClockTo72(void) » :
Le AHB prescaler ( HCLK ) à la ligne 1022 : RCC_CFGR_HPRE_DIV1
Le APB1 prescaler ( PCLK1 ) à la ligne 1028 : RCC_CFGR_PPRE1_DIV2
Le APB2 prescaler ( PCLK2 ) à la ligne 1025 : RCC_CFGR_PPRE2_DIV1
Les valeurs possibles sont définies dans « stm32f10x.h » à partir de la ligne 1724.
Ton TIM2 est configuré pour générer des interruptions à une fréquence de 4Khz :
F_TIM2= 72000000 / (71+1) / 250 =4000.
Donc une fréquence step de : 4000 / 2 = 2KHz.
A cette fréquence le moteur tournera à : (2000/500)*60=240rpm
@CNCSERV te propose d’aller beaucoup plus haut en fréquence afin d’avoir un résultat satisfaisant.
Note : le délai minimum de quelques µs après changement de direction est à respecter, tu peu gérer ça dans ta routine d’interruption du TIM2 en rajoutant d’autre(s) valeur(s) de cycle par exemple « cycle=2,3,… ».
C'est pas trop mal, reste a affiner.
Il faudrait que t'arrive a mesurer la frequence d'interruption et la durée de de la fonction. Il n'y a pas beaucoup de flottants mais quand je t'ai donné le code je pensai au f04 avec FPU.
En examinant le code, ils y a plusieurs choses qui ne vont pas :
Tu ne fais pas les même conditions de déplacement sur le CW que sur le CCW.
Avec le code que je t'ai donné, le changement de Dir se fait en même temps que le Step.. c'est très mauvais
Je te fait les corrections cet aprèm.
Tu parles d'une routine à 50Khz donc un step tous les 25Khz ? ca donne 40us ce qui est toujours dans les clous par rapport aux capactés du driver