0,00 €

V košarici ni izdelkov.

0,00 €

V košarici ni izdelkov.

More
    DomovRevijaProgramiranjePSoC4 – Cypress-ova poceni alternativa Arduinu (3)

    PSoC4 – Cypress-ova poceni alternativa Arduinu (3)

    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

    Slike niFunkcije timerja/števca pa tudi PWM, ki so vključene v PSoC 4, so podobne tistim, ki jih najdete v ostalih mikrokontrolerjih. Največja razlika je v tem, da lahko zgradite timerje, števce in PWM funkcije od 8-bit do 32-bitne dolžine. Občasno potrebujem 24-bit števec in enostavneje je vzeti 24-bit PSoC 4 števec, kot pa dodati prekinitveno rutino, s čemer bi razširil AVR-jev 16-bit števec na 24-bitov.

    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.

    Slike niVerjetno ste navajeni uporabljati standardne PWM oblike, kjer je PWM perioda razdeljena na “on” in “off” intervale glede na razmerje signal/pavza. Če na primer s PWM kontrolirate LED svetila je možno, da pride do pobliskavanja ko je razmerje signal/pavza nizko. To se zgodi zato, ker se generira kratek impulz, ki mu sledi relativno dolga pavza. Da bi premagali to oviro, je Cypress vključil posebno komponentno, ki je podobne kot enostaven PWM, vendar zmanjša utripanje. Imenujejo co prISM komponenta. Namesto da bi uporabili običajne PWM signale, prISM vezje uporablja pseudo-naključni generator števil. Navedete lahko gostoto bitov med 0 in 100 odstotki. Ta gostota pa določa svetilnost LED, hitrost vrtenja motorja itd. Ker dobivate naključno mešanico impulzov s spremenljivo širino, razdeljeno preko časa, se pojavlja manj utripanja.

    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.

    Celotni članek

    PSoC4 – Cypress-ova poceni alternativa Arduinu (3)

    2015_SE230_34