skule.sormo.no

ORG NR 885 947 522

5. Multitasking med FreeRTOS

{jcomments on}Mikrokontrollerne på  Arduino-kortene har begrenset ytelse. Det viste seg at det fort kan oppstå  tids- og minnekonflikter når flere rutiner skal legges inn. I utgangspunktet består en programskisse for en Arduino av to rutiner, en oppstartsrutine (Setup()) som kjøres en gang etter oppstart, og en programsløyfe (loop()) som gjentar seg i det uendelige.  I loop()-funksjonen utføres rutinene sekvensielt. Det kan skape problemer, særlig i forbindelse med betjening av kommunikasjonsportene der data kommer inn asynkront og krever behandling med det samme som de kommer inn. Da kan programsløyfen være opptatt med andre rutiner slik at data fra serieportene kan gå tapt.

Det finnes imidlertid ulike RTOS (Real Time Operation System)  som løser problemet. Da kan ulike programsløyfer gå samtidig  uavhengig av hverandre (multitasking) som kan spesielt sikre betjening av kommunikasjonsporter og andre rutiner som krever spesiell timing-.oppmerksomhet. 

FreeRTOS er et  multitask-system kan brukes på Arduino. I utgangspunktet brukes Amel Studio til dette formålet. Der kan Atmel mikrokontrollere programmeries i C. Det finnes også et extension, Visual Micro, som kan brukes med Atmel Studio for å skrive Arduino programskisser. Spesielt er de godt egnet for Arduino Mega og Due som er en større og tyngre versjonen mikrokontrollere i Arduino-kortene.

Vi har brukt dette til å styre kjøretøy og satellitter i CanSat-.programmet. Der brukes UNO i utganspuntket. Det har vært mulig å bruke FreeRTOS også her, om enn i en mer strippet versjon.  Fortrinnsvis brukes FreeRTOS sammen med Mega- eller Due-kortene.

I CanSat  brukes to enheter. En for å koble PC til Arduino som tar i mot data via RF (radiosamband) fra satellitt. Den andre er selve satellitten. .

FreeRTOS egner seg best for de større Arduino-enhetene, som Mega og Due. Atmel Studio 6.2 med Visual Micro Plugin er da også et utmerket hjelpemiddel for dette.