[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