Vs: 3F mootor
Pulsid, A ja B 90 kraadi faasiga. Midagi ei jää vahele, kui jääks siis ei oleks sul autot ka millega sõita sest ükski tööstusrobot ei toimiks ja ükski tootmis liin, selleks kasutatakse eraldi raudvara protsessoris. Tarkvaras võib jah sul vahele jääda kui sa tegeled pollimisega ja oled sedasorti mees kes põhimõtte pärast ühtegi interupti ei kasuta ja kogu kood on main loobis.
Raudvarast:
Mõne loogika(XOR+D_FlipFlop, 74HC74+ 74HC86) elemendiga saab quadrature signaalist CLK ja DIR signaalid, need suunatakse UP/DOWN counterisse.
Asmist:
see on 1 instruktsioon. STM32-l on 16 bitti counter. Kui su tööraaduis on suurem kui 2 astmes 16 siis pead sa seda registrit copyima. Mõistlik oleks see liita muutuja(signed) kuskil prosessori mälus olevale muutujale ja register nullida. Praku see hetk kui sa loed ja siis nullid vahel võib registri väärtus muutuda, eg positsioon muutub. Selle pärast sa hoopis loed ja siis ASMis lahutad 1 instruktsiooniga loetud tulemuse maha. Nii võib tulemus olla 1 v -1 sest vahepeal muutus arv. Nii järgmise pid luubi katkestuse ajal on sul aga see muutu korrigeeritud.
See pole kiiruse taga vaid mis järjekorras asju tehakse. Kiirus niipalju et sa pead lahutamis tehte tegema 1 instruktsiooniga. C-s võib compiler teha selle 2-ga.
Pulsid, A ja B 90 kraadi faasiga. Midagi ei jää vahele, kui jääks siis ei oleks sul autot ka millega sõita sest ükski tööstusrobot ei toimiks ja ükski tootmis liin, selleks kasutatakse eraldi raudvara protsessoris. Tarkvaras võib jah sul vahele jääda kui sa tegeled pollimisega ja oled sedasorti mees kes põhimõtte pärast ühtegi interupti ei kasuta ja kogu kood on main loobis.
Raudvarast:
Mõne loogika(XOR+D_FlipFlop, 74HC74+ 74HC86) elemendiga saab quadrature signaalist CLK ja DIR signaalid, need suunatakse UP/DOWN counterisse.
Asmist:
see on 1 instruktsioon. STM32-l on 16 bitti counter. Kui su tööraaduis on suurem kui 2 astmes 16 siis pead sa seda registrit copyima. Mõistlik oleks see liita muutuja(signed) kuskil prosessori mälus olevale muutujale ja register nullida. Praku see hetk kui sa loed ja siis nullid vahel võib registri väärtus muutuda, eg positsioon muutub. Selle pärast sa hoopis loed ja siis ASMis lahutad 1 instruktsiooniga loetud tulemuse maha. Nii võib tulemus olla 1 v -1 sest vahepeal muutus arv. Nii järgmise pid luubi katkestuse ajal on sul aga see muutu korrigeeritud.
See pole kiiruse taga vaid mis järjekorras asju tehakse. Kiirus niipalju et sa pead lahutamis tehte tegema 1 instruktsiooniga. C-s võib compiler teha selle 2-ga.
Comment