logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[AVR][C] - FreeRTOS dla Atmega128 w trybie tickless

jedreg 25 Sty 2014 12:28 1101 0
REKLAMA
  • #1 13217651
    jedreg
    Poziom 10  
    W ostatnim projekcie obniżając zużycie energii dobudowałem we FreeRTOS do istniejącego portingu AVR obsługę trybu "suppress ticks" czyli usypiania MCU zamiast aktywnego trybu bezczynności.

    Moja wersja wymaga kwarcu zegarkowego 32768Hz na pinach TOSC0-TOSC1 bo dla długich cykli snu używa trybu "power saving" gdzie działa tylko Timer0 w trybie asynchronicznym, budzenie zewnętrznymi przerwaniami i kilka pomniejszych bloków MCU. Przy krótkich cyklach spania, gdy ponowne włączenie i ustabilizowanie głównego kwarcu trwałoby blisko czasu spania, implementacja wybiera tryb "extended standby", dzięki czemu budzi się w 6 cykli zegara a nie w kilkaset/kilka tysięcy (kosztem mniejszej oszczędności energii) i daje dokładniejszą kontrolę nad upływającym czasem. Implementacja nakierowana jest na długie czasy spania i minimalizuje ilość wybudzeń zmieniając ustawienia prescalera, kosztem dodatkowych obliczeń a zatem mniejszej dokładności i dodatkowych małych obsunięć w tykaniu zegara RTOSa.

    Kod i dodatkowy opis udostępniam jako open source, może komuś z Was ułatwi to eksperymenty.
  • REKLAMA
REKLAMA