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

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45270
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 »

Du vill ha ut 1 Hz, nåväl, om din processor har inbyggd RTC så använder du den, till exempel.
Du kan också använda en kombination av HW-timers och SW-räknare.
DanielM
Inlägg: 2189
Blev medlem: 5 september 2019, 14:19:58

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

Inlägg av DanielM »

TomasL skrev:Finns säkert ett tiotal RTOS du kan köra på CubeMX

FreeRTOS använder en hårdvarutimer för eget bruk.
Resterande timers kan du använda fritt, till vad som helst.
Dock måste du skriva interruptrutiner för de timers du använder, om du vill att de alltid skall hanteras.
Du får helt enkelt läsa på när det gäller FreeRTOS, finns böcker att köpa, vilket jag vet är helt nödvändigt, om man skall få något vettigt gjort.
TomasL skrev:Du vill ha ut 1 Hz, nåväl, om din processor har inbyggd RTC så använder du den, till exempel.
Du kan också använda en kombination av HW-timers och SW-räknare.
Jag löste detta igenom att testa mig fram. Kravet var bara att ha en period på 10 sekunder ungefär. Det är inte så noga. Men ungefär 10 sekunder.
Jag trodde jag kunde räkna mig fram till detta, men icke.

Jag tycker det är enklare med hårdvarutimer. För jag brukar använda Output Compare Preload vid PWM. Mest bara för att man ska kunna ändra hur lång tid det ska vara hög signal ut och låg signal ut, under körningen.
hummel
Inlägg: 2267
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 »

Fast du frågade i går efter en 1 Hz timer. :-)
DanielM
Inlägg: 2189
Blev medlem: 5 september 2019, 14:19:58

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

Inlägg av DanielM »

Jag vet :) Är rätt grön när det kommer till timers. Jag kan sätta upp en, men trimma in den igenom att göra en enkel överslagsräkning, kan jag inte.

Så nu är det på en höft.
Användarvisningsbild
säter
Inlägg: 32544
Blev medlem: 22 februari 2009, 21:16:35
Ort: Säter

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

Inlägg av säter »

Är det 1Hz eller 0.1Hz du vill åstadkomma?
DanielM
Inlägg: 2189
Blev medlem: 5 september 2019, 14:19:58

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

Inlägg av DanielM »

1 Hz, dvs räkna 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 och sedan börjar den om. För varje sekund.
hummel
Inlägg: 2267
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 »

En räknare med 1 Hz frekvens ger en signal varje sekund men slutar inte efter 10 s.
Användarvisningsbild
Icecap
Inlägg: 26139
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 »

Detta brukar iaf. jag att åstadkomma med en timerinterrupt på lämplig hastighet och sedan köra (i detta fall):
TIMER_ISR:
if(++Index_Variable >= 10) Index_Variable = 0;
Mr Andersson
Inlägg: 1397
Blev medlem: 29 januari 2011, 21:06:30
Ort: Lapplandet

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

Inlägg av Mr Andersson »

DanielM skrev:Öh? Ja?
Är inte detta uppenbart när det handlar om CubeMX?
Du verkar vara förvirrad över vilken kod du använder.
CMSIS är inget OS. Det har ingenting alls med FreeRTOS att göra.
Det är en standardiserad HAL för Cortex som, åtminstone i teorin, gör att du ska kunna köra samma kod på valfri cortex-processor.

Du har inte skrivit exakt vad du vill göra med timern.. Det låter som att du vill styra en pwm-pinne men från erfarenhet av dina andra trådar kanske det egentligen är något helt annat.
För PWM behöver du inte alls blanda in FreeRTOS. Gör allting från en normal interrupt-rutin.
Om du istället vill köra en rtos-task var 10:e sekund får du använda t.ex. xSemaphoreGiveFromISR. Sidan har ett ganska simpelt exempel på hur man kan göra.
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 »

Om du vill använda hårdvarutimer så är det bara att konfigurera så att f_clk/(prescaler + 1)/(autoreload + 1) = 1 Hz.
Välj tex prescaler till 8399 och autoreload (counter period) till 9999. Aktivera interrupt i NVIC för timern i inställningarna i CubeMX.
Fixa en callback som ska anropas:
HAL_TIM_PeriodElapsedCallback

Starta med:
HAL_TIM_Base_Start_IT

Din callback anropas nu med 1Hz.
DanielM
Inlägg: 2189
Blev medlem: 5 september 2019, 14:19:58

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

Inlägg av DanielM »

Det där ska jag komma ihåg. Nu har min LCD gått sönder och jag väntar på en ny, så jag återkommer då! :)
Skriv svar