Hirdetés

Új hozzászólás Aktív témák

  • Janos250

    őstag

    válasz Teasüti #4131 üzenetére

    "Ennél viszont ezt hogy lehet kivitelezni delay nélkül?"
    A delayt ugyebár mellőzni szoktuk, helyette valami hasonlót alkalmazunk:
    https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
    Pontosság növelése érdekében a proci órajelét számláló regiszter tartalmát figyeljük a millis() helyett.
    Itt annyi a könnyebbség, hogy a magas szint hosszát nem kell figyelni, mert azt a hardver elintézi, csak a ciklus végét kell nézni.
    Ebben jóval nagyobb a tolerancia, mint a magas szint hosszában.
    Persze lehet halmozni az élvezeteket, és az előre összeállított adatok kivitelét interruptal megoldani: amikor vége a ciklusnak, interrupt, és egy újabb bit.
    Vagy a magas szint lejártára interrupt, mert akkor már "feltölthető a következő bit", és akkor mehet folyamatosan a PWM, nem kell bitenként újra indítani.
    Lehetőségek tárháza bőséges, csak a fantázia szab határt.
    "De akkor ez az idő nem lenne ugyanúgy elég bitbang esetében is (nem tudom melyik művelet gyorsabb)?"
    De, csak akkor a magas szint idejét is figyelni kell, ami sokkal precízebb időzítést igényel, mint a két egymást követő bit időzítése. De megoldható, persze. Vagy akár ezt is interrupttal intézed.

Új hozzászólás Aktív témák