Kwadratuurdecoder
Als we kijken naar het PSoC 4 TCPWM-gegevensblad, is de maximale werkfrequentie van het telblok 48 MHz, met een tellerresolutie van 21 ns.
Ervan uitgaande dat u een incrementele roterende encoder met hoge resolutie hebt met 10.000 tellingen per omwenteling, en de rotor draait met 15.000 tpm, is dat 2.500.000 tellingen per seconde (2,5 MHz), comfortabel minder dan de max. 48 MHz. bemonsteringssnelheid.
Helaas is het niet duidelijk of de PSoC 4 TCPWM aan dezelfde 10x bemonsteringsvereiste lijdt als de PSoC QuadDec die wordt genoemd in Simon Jenkins 'antwoord. Ik vermoed van niet, aangezien de datasheet niet de kloksignalen op de timingdiagrammen bevat. Dit houdt in dat PSoC 4 TCPWM flankgestuurd is (beperkt door de tellerklok), terwijl PSoC QuadDec wordt aangestuurd door het niveau bij elke klokflank en dus wordt beperkt door de bemonstering aan de klokfrequentie.
Zelfs als de PSoC 4 TCPWM oversampling vereist, is de max. 2,5 MHz pulstrein nog steeds minder dan beide 10x bij 48 MHz voor de PSoC 4 TCPWM en 28 MHz voor de PSoC QuadDec .
Als je slechts 2000 PPR bij 6000 RPM nodig hebt (zoals voorgesteld in je opmerking), dan hoef je slechts 200 KHz (2000 * 6000/60), dus een 2MHz-klok zou voldoende moeten zijn.
Interruptiebehandeling
Een andere zorg is of de CPU in staat zal zijn om te gaan met de interrupts die dit zou kunnen genereren .
Als we aannemen dat je de kwadratuur precies op de limiet van het decoderblok laat draaien, dat wil zeggen 48 MHz met een 16-bits teller, krijg je 1465 overflow-interrupts per seconde, dus tenzij je je interrupt ( inclusief eventuele vereiste contextomschakeling) in minder dan 68 2 microseconden, dan ga je worstelen.
Gelukkig lijkt het erop dat de Cortex-M0-processors een zeer efficiënte ISR-verwerking hebben (zie A Beginner's Guide on Interrupt Latency - and Interrupt Latency of the ARM® Cortex®-M processors ) dus tenzij je ISR erg inefficiënt is, zou het dit moeten kunnen verwerken.
Resolutie
Overigens lijkt het erop dat je de X4-modus moet gebruiken als je individuele kwadratuurovergangen willen tellen. Als je X1 gebruikt, zie je alleen hele kwadratuurcycli (4 toestanden), terwijl als je X2 gebruikt, je slechts de helft van de toestanden ziet.