Šírkový modulátor PWM
Predmet |
|
---|---|
Konfigurovateľné mikroprocesorové systémy | |
Tématická časť: | |
Čítače, časovače a šírkové modulátory PSoC |
Vlastnosti
- 8 a 16 bitový univerzálny šírkový modulator používajúci jeden alebo dva PSoC bloky.
- Frekvencia hodinového signal do 48 MHz.
- Automatické znovunačítanie šírky pulzu, pri každom cykle.
- Programovateľná šírka impulzu.
- Vstup povolujúci/zakazujúci nepretržitý beh čítača.
- Možnosť vyvolať prerušenie na nábežnú hranu výstupu.
8 a 16 bitové PWM bloky sú šírkové modulátory s programovateľnou periódou a šírkou impulzu. Hodinový signal a povolovacie signály je možné privádzať z viacerých zdrojov. Výstupný signál je možné vyviesť na jeden konkrétny pin alebo na vnútornú zbernicu, ktorú využívajú ostatné používateľské moduly. Vyvolanie preušenia môže byť naprogramované na nábežnú hranu výstupu alebo keď čítač dosiahne konečný stav.
Popis Funkcionality
Používateľský modul PWM zaberá jeden až dva digitálne PSoC bloky, každý prispieva ôsmimi bitmi k celkovému rozlíšeniu. Na vytvorenie 16bitového modulátora je potrebné spojiť dva za sebou idúce bloky takže tie medzi sebou zdielajú svoje parametre a sú medzi sebou prepojené. Taktiež sú zlúčené countre, perióda a porovávacie registre (dátové registre DR0, DR1 a DR2). Toto všetko je potrebné pre dosiahnutie 16bitového rozlíšenia.
PWM API poskytuje funkcie ktoré je možné volať pomocou C a assemblera na zastevenie alebo spustenie countera a na čítanie a zápis rôznych dátových registrov. Hodnoty dátových registrov môžu byť nastavené taktiež pomocou Device editora. Po štarte cyklu sa s každou nábežnou hranou pri ktorej je nastavený povolovací signál hodinového cyklu, dekrementuje register počítadla. Register počítadla je obnovený na hodnotu z registra periódy keď dosiahne terminal count (hodnotu 0).
Register periódy môže byť modifikovaný novou hodnotou v akomkoľvek okamihu. Ak je PWM zastavené, zapisovanie do registra periódy zmení taktiež hodnotu registra počítadla. Ak je PWM v chode, zapisovanie do registra periódy nezmení hodnotu v registri počítadla, pokiaľ sa nenačíta PWM odznova pomocou terminal countu. Pretože terminal count nastane ak je počítadlo na nule, perióda výstupného signálu je o jedna väčšia ako hodnota uložená v registry periódy. Nasledujúce rovnice hovoria o výstupe na základe vstupného hodinového signálu a hodnoty v registry periódy.
[math]{{T}_{OUT}}=\frac{PeriodValue+1}{{{F}_{CLOCK}}}[/math] rovnica 1
[math]{{F}_{OUT}}=\frac{{{F}_{CLOCK}}}{PeriodValue+1}[/math] rovnica 2
Kde FOUT je výstupná frekvencia PWM, TOUT je výstupná perióda PWM, FCLOCK je frekvencia vstupného hodinového impulzu a PeriodValue je zadaná hodnota požadovanej periódy.
PWM udržiava svoj výstup na hodnote low ak je zastavený. Počas behu komparátor kontroluje cyklus výstupného signálu. Počas každého hodinového cyklu, tento komparátor porovnáva hodnoty počítadla a registra šírky pulzu, vykonáva "menší" alebo "menší alebo rovný" test na základe možnosti vybratej v Device Editore. PWM udržiava hodnotu “high” porovnania na nábežnú hranu periódy v ktorej je vykonávané porovnanie. Pomer medzi šírkou pulzu a periódou určuje operačný cyklus výstupného signálu. Pomer operačného cyklu môže byť vypočítaný podľa tejto rovnice:
Pre Šírka pulzu < Hodnota periódy
[math]DutyCycle=\frac{PulseWidthValue}{PerioValue+1}[/math] For less than comparison
[math]DutyCycle=\frac{PulseWidthValue+1}{PerioValue+1}[/math] For less thanor Equal to comparision
Pre Šírka pulzu >= Hodnota periódy
Operačný cyklus = 100%
Nasledujúca tabuľka sumarizuje niektoré špeciálne stavy výst. signalu na základe periódy, šírky pulzu a porovnávacej operácie.
0 | > 0 | ||
0 | 0 | ||
0 | 0 | ||
> 0 | 0 | ||
> 0 | 0 | ||
Perioda =šírka pulzu | Perioda= šírka pulzu | ||
Perioda= šírka pulzu | Perioda= šírka pulzu | ||
PulseWidth Value > Period | PulseWidth Value > Period |
Hodnota registra šírky pulzu môže byť nastavená pomocou Device Editora alebo počas chodu pomocou API. Nie je poskytnutá žiadna možnosť bufferovania registra šírky pulzu.Bufferuje sa iba register počítadla pred dopočítaním. Preto sa zmeny vykonané v registry šírky pulzu prejavia na porovnávacom výstupe až v ďaľšom hodinovom cykle. Tímto sa dajú vytvárať periódy z viacerími pulzami.
Prerušenie je možné naprogramovať tak aby sa vyvolalo na dopočítanie countera alebo keĎ sa porovnanie stane pravdivým. Prerušenie vyvolané na základe komparátora nastane pri nábežnej hrane výst. signálu a preuršenie vyvolané na základe dopočítani countera sa vyvolá pol hodinového impulzu pred dobežnou hranou výstupu. Tieto možnosti sa dajú nastaviť v Device Editore. Povolenie alebo zakázanie prerušenia sa nastavuje pomocou APi countera. Globálne prerušenie musí byť povolené pred tým ako sa spustí prerušenie od countera.
Je potrebné dávať pozor pri modifikovaní registra šírky pulzu, pretože spolu s aktuálnou hodnotou čítača určuje výstupný stav PWM.Aby sme predišli možným defektom vo výstupnom signále, register šírky pulzu musí byť modifikovaný až po detekovaní dopočítania pomocou prerušenia.
Pre aplikácie ktoré si vyžadujú rýchlejšie aktualizovanie cyklu, môže byť PWM vyvedené na pin, kde je výstup neustále sledovaný. A može byť aktualizovaný hneď ako sa zaznamená zmena signálu z high na low alebo opačne. Acquiring the Count register value must be done very carefully. Reading the Count register causes its contents to latch into the PulseWidth register. This causes the output duty cycle to change.
Ak je potrebné čítať register počítdla za chodu, je možné využiť funkciu z API s názvom ReadCounter(). Táto funkcia dočasne zastaví hodinový signál, uloží register šírky pulzu, načíta počítadlo, obnoví register šírky pulzu a nakoniec znova pustí hodinový signál.
Časovanie
Jednosmerné a striedavé elektrické charakteristiky
FOutputmax | 5.0V and 48 MHz input clock | |||
FInputmax | 5.0V and 48 MHz Input clock |
Poznámky k el. charakteristikám
- Najrýchlejší hodinový signal ktorý je možné použiť, je 24 MHz pri 3.3 V.
- Ak je výstup vedený cez globálne zbernice, potom je hodnota výstupnej frekvencie maximálne 5 MHz.
Umiestnenie
PWM zeberá jeden digitálny blok pri každom 8 bitovom rozlíšení. Ak je použitých viac ako jeden blok, všetky sú umiestnené za sebou v Device Editore v poradí zvyšovania čísla jednotky os posledného byteu (LSB) k prvému byteu (the MSB). Každému bloku je priradené symbolické meno zobrazené v device editore počas a po umiestnení. API priradí menám všetkých registrov uživateľské mená a mená blokov pre priamy prístup do PWM registrov pomocou API. Mená blokov pužité pri rôznych presnostiach sú v nasledujúcej tabuľke.
Parametre, použité výrazy a možnosti nastavenia
Clock
Hodinový signále je možné brať z jedného z 16 zdrojov. Tieto zdroje obsahujú 48 MHz oscilátor (pri 5.0V), nižšie frekvencie (VC1, VC2, a VC3) sú delené z 24 MHz systémových hodín, ostatných PSoC blokov, a externých vstupov prepojených cez globálne vstupy a výstupy.
Enable
Povolovací parameter je vyberaný z jedného z 16 zdrojov. Hodnota high signal enable zapína počítadlo, zatialčo hodnota low ho vypína pokial sa counter resetuje. Výstup nie je ovplivnený stavom enable signálu.
CompareOut
Porovnávací výstup je možné vypnúť (bez ovplivnenia operácií prerušenia) alebo pripojiť na hociktorú výstupnú zbernicu. Vždy je dostupný ako vstup pre ďaľší nadradený digitalny PSoC blok.
TerminalCountOut
Je externý výstup počítadla. Tento parameter môže byť zakázaný, alebo pripojený na hociktorý rad výstupných zberníc.
Period
Tento parameter nastavuje period počítadla. Povolené hodnoty pre PWM8 sú medzi 0 - 255. Allowed Povolené hodnoty pre PWM16 sú medzi 0 - 216-1. Perioda je nahraná do registra periody. Efektívna hodnota výstupnej periody pre PWM16 je period count + 1. Hodnotu je možné editovať pomocou API.
PulseWidth
Nastauje šírku pulzu výstupného signálu. Povolené hodnoty sú medzi 0 a hodnotou periody. Hodnotu je možné editovať pomocou API.
InterruptType
Tento parameter určuje spôsob vyvolania prerušenia. Prerušenie môže nastať na nábežnú hranu signal, alebo ak dopočíta register počítadla do konca. Prerušenie môže vyvolať viacero nezávyslích registrov.
CompareType
Tento parameter určuje typ porovnávacej funkcie "Menší ako" alebo "Menší alebo rovný ako"
InvertEnable
Tento parameter mení spôsob akým blok reaguje na povolovací signál. Ak je hodnota nastavená na "Normal" ,povolovací vstup reaguje na high úroveň signálu. Ak však nastavíme hodnotu na "Invert" vstup reaguje na hodnotu low..
Interrupt Generation Control
Nasledujúce 2 parametre “InterruptAPI” a “IntDispatchMode” sú prístupné iba ak povolíme ”Interrupt Generation Control” v PSoC Designeri. Toto je možné nájsť v menu: Project >> Settings... >> Device Editor.
Application Programming Interface
Application Programming Interface (API) funkcie sú súčasťou uživateľského modulu pre designer na spoluprácu s modulom na vyššej úrovni. Tieto sekcie špecifikujú interface pre každú fukciu spolu s konštantami a priloženými súbormi.
Použitá literatúra
CYPRESS, Semiconductor Corporation. PSoC Programmable System-on-Chip : Technical Reference Manual (TRM). San Jose, USA , c2008. 572 s. Document No. 001-14463 Rev. *C. Dostupný z WWW: <[1]>.