Hur många av er här kör STM32?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43149
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Hur många av er här kör STM32?

Inlägg av sodjan »

> Jag anmälde tråden för att få två trådar som håller sig till ämnet...

Vad har det för betydelse att *trådstartaren* väljer att "bredda" ämnet?
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Hur många av er här kör STM32?

Inlägg av DanielM »

Lugn lugn :) Vi vill inte att diskussionen ska bli som Stackoverflow.

Här är lösningen.
https://github.com/mpaland/printf

Bara anropa

Kod: Markera allt

sprintf_(text, "%f", a);
Jag antar också att jag får söka efter en equivalent metod för sscanf för att konvertera om text till float.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43149
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Hur många av er här kör STM32?

Inlägg av sodjan »

Men är det inte bara att slå på stöd för float via rätt linker options?
Istället för att länka in en implementation av funktionen från en helt ny källa?
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Hur många av er här kör STM32?

Inlägg av DanielM »

Du menar så här?
Om det hade fungerat med RTOS så hade jag inte frågat :)
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Icecap
Inlägg: 26106
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Hur många av er här kör STM32?

Inlägg av Icecap »

Ett RTOS är bara ett sätt att köra fler trådar efter varandra o ta hand om lite interrupts.
Det är INTE ett hinder i att ha funktioner i systemet!

Så jag tror att man ska enabla float-funktionerna andra ställen också.
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Hur många av er här kör STM32?

Inlägg av DanielM »

Detta testade jag med igår och det gav hard fault. Orsaken var då att stack size var för litet. Så jag flyttade runt lite kod så jag deklarerar inte några stora arrayer i trådarna. Då fungerar det.

Nu var det så att jag kan ej konvertera om float till text i RTOS. Utanför RTOS fungerar det. Men med sprintf_ funktionen så fungerar det.

Mitt nästa problem är att lösa sscanf, som ej fungerar med RTOS om man ska konvertera char array till float.

Uppdatering:
För er som kör RTOS och ska få över char array till float så rekommederar jag inte sscanf. Jag rekommenderar.

Kod: Markera allt

float value = (float)atof(text); // char array to float
Uppdatering 2:
Inte för att skryta. Men gillar verkligen nostalgin här :P
20200524_150652.jpg
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45175
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Hur många av er här kör STM32?

Inlägg av TomasL »

Om du använder ett RTOS brukar man väl vilja ha funktioner som är threadsafe, kanske där problemet ligger, eller att du har för liten stack.
Vore ju intressant om du talade om vilket RTOS du använder.
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Hur många av er här kör STM32?

Inlägg av DanielM »

Det var för liten stack som jag hade. Jag använder ju bilder så jag deklarerade bilderna någon annanstans.

Men det var CMSIS_V2.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Hur många av er här kör STM32?

Inlägg av Rick81 »

Hade du inte samma problem i en annan tråd med sprintf och float? Hur löste du den?

Om du måste utöka stacken för sprintf och float tror jag du behöver se över din stackhantering...
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Hur många av er här kör STM32?

Inlägg av DanielM »

Det var inte sprintf som var fel på. Snarare att få float till char[] som var problemet.
Användarvisningsbild
Andax
Inlägg: 4373
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Hur många av er här kör STM32?

Inlägg av Andax »

Problemet med sprintf i FreeRTOS är att det allokerar minne första gången det anropas. Ett trick att funka i trådarna är att göra en dummy-sprintf innan initiering av FreeRTOS i main(). Då slipper man hard faults. Eventuellt borde man kanske skydda med en mutex. Dock har jag aldrig haft problem.
Användarvisningsbild
Andax
Inlägg: 4373
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Hur många av er här kör STM32?

Inlägg av Andax »

Jag har kört mycket med CubeMX och HAL. Har haft förvånande lite problem med det. Om man kör med en stor skärm är nya STM32CubeIDE ganska trevligt.
Dock föredrar jag att debugga i Ozone istället för i CubeIDE.
Att sätta upp timers, DMA, interrupts mm är oerhört enkelt med CubeMX.
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Hur många av er här kör STM32?

Inlägg av DanielM »

På tal om timers!

Jag undrar hur jag kan få ner min TIM3 till 1 Hz. Jag tänker ha en räknare som räknar 1 gång per sekund.
Men min prescaler kan endast godta 16 bit värden.

Sätter jag prescaler = 83 så är min 84 Mhz klocka på 1 Mhz.
Men hur gör jag resten då?

Min nuvarande konfiguering är att klockan är på 84 Mhz. Då skapar jag en räknare som körs på 84/(1+20), dvs 4 Mhz.
Jag har en period på 10000.

Nu har jag en räknare på 400 Hz.
1*10^6*(84/(1+20)/10000) = 400.

Och 10000/400 = 25. Alltså en PWM signal som har period på 25 sekunder?
hummel
Inlägg: 2259
Blev medlem: 28 november 2009, 10:40:52
Ort: Stockholm

Re: Hur många av er här kör STM32?

Inlägg av hummel »

Ditt RTOS (vilket jag har för mig att du använder) bör ha funktionalitet för det.
DanielM
Inlägg: 2166
Blev medlem: 5 september 2019, 14:19:58

Re: Hur många av er här kör STM32?

Inlägg av DanielM »

Såg detta nu att en hårdvaruräknare fungerar inte med RTOS. Man måste ha en mjukvaruräknare.

Men hur gör man detta i CubeMX?
Skriv svar