Popisem to cele ako to vzniklo a ake su ine moznosti a co je ciel.
Na spindi mam kotucik, ma 2x track s dierkami a optozavorky. Na track 1 je akurat jeden otvor, ten dava index. Track 2 ma 128 otvorov.
spindel dava max cca 50kHz .. a toto samplovat cez HAL je problem. Lietalo to hore dole. Preddelic som tam nechcel davat, tak som sa rozhodol to zapojit priamo na parport.
Parport na pine 10 vie generovat na hranu prerusenie. Tu beriem to co prichadza z track 2. Prerusenie je vlastne hardwarovo zavolany podprogram. Toto nie je teda treba samplovat a staci velmi kratucky kod ktory sa zavola v obsluhe prerusenia a inkrementuje citace. citac1 potom nulujem cca 10X za sekundu, ale jeho hodnotu si nakopirujem do ineho miesta skadial to EMC cita. Podla otacok tam mam cislo 0 az cca 5000 zodpovedajuce otackam spindla.
Zaroven viem aj pribliznu polohu spindla, pretoze ked dostanem prerusenie od track 2 pozriem aj na track 1.. a v case ak je tam otvor nulujem citac2.. tym padom viem okamzitu polohu spindla v 128 poziciach. (na tomto spindli som taku presnost nikdy nepotreboval . max som pouzil orientacne poziciu spindlu +-10 stupnov ked som rezal zapustenia na odvratenej strane spindla).
Toto zodpoveda funkcii HAL-encodera resp. citaca, lenze tieto pin len sampluju a ak xeme merat frekvenciu musime samplovat aspon 2x vyssou frekvenciou ako je merana (pre prax 3x vyssou).
K tomuto rieseniu som dosiel len z lenivosti, lahsie bolo napisat kus kodu ako vrazit do HW preddelic a naviac preddelicom by som stratil presnost pozicie. Kedze som z jednej tlaciane vyhrabal koliesko s este vacsim poctom dielikov, spekulujem ako sa vratit k tomuto rieseniu. Aktualne to nepouzivam, kedze na mojom kompe je parport bez IRQ. Kod bol pisany este pre EMC1 resp. zaciatkoch EMC2.
Mozno by dnes bolo podstatne jednoduchsie riesenie zapojit do cesty preddelic ktory by sa dal vypnut.. pri vyssich otackach kde nie je treba presnu poziciu by zaradenie preddelica nevadilo a pri nizsich otackach uz EMC spolahlivo nasampluje presnu polohu.
Cielom je A os stroja ktora bude sluzit aj ako delicka aj ako vreteno sustruhu. (pohon asynchro motorom, menic, 2 prevody .. pomaly na delenie povedzme 1:40 a 1:1 alebo podobne pre sustruzenie max cca do 5000 otacok + brzda pre frezovaci rezim, prevody aj brzda ovladane z EMC podla nastavenych otacok; otacky = 0 aktivuju brzdu, preradenie prevodu zrejme nejakym privatnym prikazom v G-kode alebo od nejakej heuristiky - pocas upichovania ked zacinam na 100 otackach a koncim na povedzme 1500 by bolo totiz blbe automaticky preradit prevod

).