Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino - tutorijali, pitanja, primjeri i projekti
Inace znas kako to tek lepo radi kada tu brojacku funkciju radi Timer modul na STM32 u pravom enkoder modu, postoji slicna funkcija koja samo broji cele krugove a ovo ++/-- za impulse radi hardware na osnovu kretanja enkodera, veoma precizno i brzo to radi, ne moze da omasi i to brzine preko nekoliko MHz.
Kod SW implementacije sa interaptima na pinovima moze u nekom trenutku doci do zagusenja procesora ako se impulsi desavaju mnogo cesto, zavisi od brzine procesora i latence izmedju spoljneg interapta i funkcije koja radi ++/-- i onda ne moze puno stvari u pozadini da se radi koje su potrebne za neku logiku rada cele masine i kontrolera.
Kod HW implementacije u sustini nema interapta kada se dobijaju impulsi sa enkodera, interni HW tajmer to broji i zna da li je napred ili nazad sto je divna mogucnost i postoji interupt rutina koja se desava kada brojac odbroji jedan ceo krug (overflow) sto je daleko sporiji dogadjaj koji treba da se obradjuje i ne tako cesto kao sto su impulsi od enkodera kojih moze da bude bas dosta ako se recimo koristi 8000 impulsa po krugu i sve to se vrti sa recimo 1000RPM, pa izracunaj...
Za ove interapte (za krugove ili impulse) se dodeljuje najveci prioritet u programu dok svi ostali imaju nizi i tako se drzi stvar pod kontrolom, brojanje impulsa i pracenje/preracunavanje pozicije je osnovni zadatak koji radi na takvim spravama, sve ostalo se doraduje i pravi po potrebi, KBD, LCD, FRAM, 232, 485 i tako dalje, sve to moze da stane u kontroler kada se ovo sa impulsima rascisti da radi HW.
Poterao sam to prvo bio na Arduino sa STM32, posle sam prepisao to na bare-metal sa svojim bibliotekama i to radi ko zmaaaajjj, sve mi radi u "multitaskingu" sa DMA kontrolerima i 64bit SW tajmerima Smile
Reply


Messages In This Thread
RE: Arduino - tutorijali, pitanja, primjeri i projekti - by mikikg - 09-22-2017, 07:02 PM

Forum Jump:


Users browsing this thread: 27 Guest(s)