Šírkový modulátor PWM: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
Riadok 1: Riadok 1:
[[Category:Mikroprocesorové systémy]]
+
[[Kategória:Konfigurovateľné mikroprocesorové systémy]]
 +
[[Kategória:Čítače, časovače a šírkové modulátory PSoC]]
 
__NOTOC__
 
__NOTOC__
 
{{Draft}}
 
{{Draft}}

Verzia zo dňa a času 21:57, 16. august 2010


Imbox draft.png
Toto je projekt, na ktorom sa ešte stále pracuje!!

Aj keď sú v tomto dokumente použiteľné informácie, ešte nie je dokončený. Svoje návrhy môžete vyjadriť v diskusii o tejto stránke.

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.

Obr.1 Bloková schema PWM bloku, dátová šírka n = 8 alebo 16 bitov


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.


Hodnota registra periódy
Typ porovnávania
Hodnota registra šírky pulzu
Pomer
0
Nezáleží
> 0
1.0
0
0
1.0
0
<
0
0.0
> 0
0
1/(Perioda+1)
> 0
<
0
0.0
Perioda =šírka pulzu
Perioda= šírka pulzu
1.0
Perioda= šírka pulzu
<
Perioda= šírka pulzu
Perioda/(Perioda+1)
PulseWidth Value > Period
Nezáleží
PulseWidth Value > Period
1.0

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

Obr.2 Časový diagram PWM


Jednosmerné a striedavé elektrické charakteristiky


Parameter
Typicky
Limit
Jednotky
Podmienky a poznámky
FOutputmax
--
242
MHz
5.0V and 48 MHz input clock
FInputmax
--
48
MHz
5.0V and 48 MHz Input clock

Poznámky k el. charakteristikám

  1. Najrýchlejší hodinový signal ktorý je možné použiť, je 24 MHz pri 3.3 V.
  2. 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.


PSoC Bloky
8-Bit PWM
16-Bit PWM
1
PWM8
PWM16_LSB
2
--
PWM16_MSB

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]>.