[elektro] PIC lebegopontos szamolas

Moravcsik Szilárd mszilard at contarex.hu
Sun Nov 28 10:08:00 CET 2010


Sziasztok!

2010.11.26. 13:54 keltezéssel, Kiss Gábor írta:
>> Egy PIC12F617-es 8 lábúról lenne szó, amelyik a bels? 8 MHz-es órájáról
>> jár, 5V-os tápról. Az eddig már többször bevált mikroC demo verzióját
>> használnám a program megírásához.
>>
>> A PIC-kel többek között meg kell mérnem egy bejövő 14kHz-es (ez máshol
>> 3kHz, vagy akár 20kHz is lehet!) PWM jel H és L részeinek arányát, majd
>> ennek alapján elő kell állítani legalább 1% pontossággal a PIC lábakon
>> kívülről fixen kiválasztott 50Hz..100Hz közé es? ugyanilyen H és L
>> arányú kimenő PWM jelet.
>>
>> Eddig nincs is nagyobb gond.
>
> Csak a játék kedvéért belegondoltam, és számomra nem tűnik
> triviálisnak a feladat.
> Ha a 20 kHz-es jel kitöltési tényezőjét 1% hibával akarod mérni,
> ahhoz több mint 2 MHz-es órajelet kellene kapuzni vele.
> A Timer0 erre nem alkalmas.
>
> A Timer1 járhat ugyan 8 MHz-ről, de a Timer2 nem.
> Ha az utóbbit is használod, akkor már az első lépésben bevittél
> 1% hibát. Plusz a kvantálási.
> (A Timer2 amúgy is kell a kimenőjel generálásához.)
>
> Ha csak a Timer1-gyel mérsz, akkor pedig a két félperiódus közti
> váltás overheadjét nagyon pontosan kell kompenzálnod programból,
> és mellesleg a mérési tartomány szűkebb lesz a 0-100%-nál.
>
> A legjobb ötletem eddig az, hogy egy külső XOR kaput vezérelve
> egy szabad kimenettel, a fel- és a lefutó jelre is érzékennyé
> lehet tenni a Capture Mode-ban a CCP1 bemenetet, és akkor
> nem veszítesz időt az átprogramozással. A 0-100% így sem
> érhető el, de majdnem. :)
>
> Te hogy tervezed a dolgot?
>

Igazából még a feladat specifikációját nem kaptam meg, a munka 
megrendelője fogja összeállítani. Eddig csak szóban beszéltünk a 
feladatról, ezért csak eléggé nagy vonalakban ismerem.

A hardver már készen van, így azután adottság, hogy a CCP bemeneten kell 
mérni a bejövő PWM jel periódus idejét ill, a H és L részek arányát.

Nekem is eszembe jutott, hogy az arányok 0% illetve 100% környékének 
mérése necces lesz. Szerencsére úgy tűnik, hogy a két szélső érték 
környékén nem kell túl nagy pontossággal mérni.

Egyébként ha az ISR-ben az IRQ-t generáló él irányának váltásával 
lekésnék a várt, de már közben bejött élről, akkor csak a következő 
periódusban bejövő azonos irányú él fogja a capture regisztert 
vezérelni. Ilyenkor viszont a mért idő hosszabb lesz, mint a teljes 
periódusidő, mégpedig éppen az "elveszett" félperiódus idejével. A két 
idő különbsége megadja a keresett félperiódus idejét.

A kimenő PWM valóban a Timer2-essel megy majd. Valószínűleg a 
legmagasabb lesz a prioritása (leghamarabb fogom kiszolgálni a közös 
ISR-ben), mivel a fentebb írtak szerint a lekésés egy-egy élről nem 
akkora katasztrófa.

> Nem lehetne egy inkább RC tagon mérni a feszültséget az A/D
> konverterrel? :)
>

A hardver készen van (már ki is szállították :)), ezért nem lenne jó 
újabb panelt tervezni, beültetni, kiszállítani, stb.
Marad a digitális capture.

> A kimenőjelnek milyen gyorsan kell követnie a bemenet kitöltési
> tényezőjének változását?

Ha jól értettem a feladatot, nincs nagy jelentősége. Egyébként is a 
kimenő és a bejövő jel időaránya elég nagy. Néha egy-egy kimenő PWM 
periódus megismétlése az előző értékkel nem lehet probléma, annál is 
inkább, mert a bejövő PWM aránya időben csak lassan válozik, 
nagyságrendekkel lassaban, mint pl. a kimenő jel periódusideje, ami 
fixen 10ms..20ms között lesz.

Üdv:
Szilárd



More information about the Elektro mailing list