Gestione

Affinché tutte le operazioni di controllo e pianificazione del robot possano funzionare al meglio, è stato implementato uno scheduler sul microcontrollore che permette di pianificare le varie operazioni da eseguire nell’intervallo disponibile dalla CPU del microcontrollore.

Lo schema implementato è molto simile al Round Robin

Round Robin

Le funzioni sono schedulate in ordine di priorità:

  1. Elaborazione PID
  2. Calcolo odometria
  3. Elaborazione Regolazione cartesiana
  4. Invio dati su porta seriale

Scheduler

Interrupt

In contemporanea a queste operazioni schedulate, il microcontrollore deve gestire delle interruzioni sincrone ed asincrone che vengono inviate dalle varie periferiche interne del microcontrollore

Gli interrupt provenienti dalle periferiche sono:

  • DMA0 – Trasmissione seriale – asincrona
  • DMA1 – Acquisizione ADC – sincrona ogni 100ms
  • InputCapture 1 – asincrona
  • InputCapture 2 – asincrona
  • Timer 1 – Timer di sistema -  sincrona ogni 1ms
  • Timer 2 – Timer PWM – sincrona ogni Xms
  • Acquisizione seriale – asincrona