V drugem delu sem se lotil opisovanja “komponent”, ki jih lahko poljubno povezujemo med sabo. V zadnjem delu PSoC članka bom opisal Timerje in PWM, komunikacijske “komponente” in razhroščevanje. Razhroščevanje v PSoC 4 je v primerjavi z AVR mikrokontrolerji zelo učinkovito.
Timerji in PWM

Kot v nekaterih novejših AVR-jih, imajo PSoC 4 PWM vezja komplementarne izhode in možnost kot t.i. “dead-time insertion”. Števce lahko nastavite tako, da delujejo kot vmesnik za rotacijski enkoder s standardnim dvofaznim vhodom, lahko pa dodate dodatni indeks vhod. Na voljo sta dve Enkoder komponenti, ena uporablja TCPWM blok, ena pa ne. Poizkusil sem uporabiti ne-TCPWM verzijo te “komponente” v projektu (zato ker sem TCPWM blok uporabil drugje), vendar sem moral priznati, da ga nisem uspel zagnati. Ko sem iskal po forumih sem opazil, da so tudi drugi uporabniki imeli podobne probleme, vendar nisem našel rešitve. Morda je to popravljeno v Creator 3.1 IDE. Komponenta Rotacijski enkoder lahko ima predznačen izhod števca in resolucijo od 8 do 32 bitov.
Ker ima PSoC 4 veliko različnih logičnih “komponent”, lahko uporabite izhod PWM in ga vežete preko teh logičnih vrat tako, da omogočite hardversko “kill” funkcijo, ki bi “ubila” napajanje za PWM motorja ali grelnika glede na neko napako, brez da bi v to vpletali programsko ustavitev.

In še, če naložite isto začetno vrednost v generator naključnih števil v vsako psISM komponentno, bo vsak LED izhod “v fazi” z drugim – če to želite seveda. Če pa v generator naložite različno začetno vrednost, lahko na ta način zmanjšate EMI motnje, ki jih generirajo močna LED svetila.
Komponenta prISM vsebuje “omogoči” vhod, ki ga lahko preklopite interno tako, da ga povežete na zunanje GPIO priključke in ga uporabite za proženje.
Na Sliki 1 lahko vidite nekaj primerov prISM izhodov pri različnih razmerjih signal/pavza.
Podobno kot pri drugih časovnih funkcijah ima PSoC 4funkcijo pomikalnega registra. Ta register je lahko od 8 do 32-bitov dolg. Komponenta pomikalnega registra vsebuje obe funkciji “shift-in” in “shift-out”, zato lahko z njo naredite funkcije, kot npr. SPI. To je lahko uporabno, če potrebujete sinhronski serijski protokol z več kot standardnimi 8 biti. Takšna komponenta bi bila na primer uporabna pri krmiljenju NeoPixel LEDic, kjer morajo biti rutine časovno hitre in tudi zelo natančne. Moj članek o NeoPixel si lahko preberete v SE226. V tistem primeru je bila potrebna zelo pametna AVR asemblerska rutina, s katero sem krmilil polje 60 NeoPixel LEDic v projektu za uro.
PSoC4 – Cypress-ova poceni alternativa Arduinu (3)
2015_SE230_34

