[elektro] CD4017-el ULN2003 meghajtása

potyo potyo.ada at gmail.com
Wed Jul 20 01:53:16 CEST 2011


Na akkor azon a részen lehetne szerintem reszelni sokat. Lebegőpontos
aritmetikát lecserélni több bájtos integerre.

2011. július 20. 1:48 Szilágyi Péter írta, <sysypet at hdsnet.hu>:

> Hát, igen, van némi lebegőpontos aritmetikai is meg konverziók ide-oda.
> Kicsit fujtós lett a kód a proci számára.
>
> -----Original Message-----
> From: elektro-bounces at tesla.hu [mailto:elektro-bounces at tesla.hu] On Behalf
> Of potyo
> Sent: Tuesday, July 19, 2011 9:40 PM
> To: elektro at tesla.hu
> Subject: Re: [elektro] CD4017-el ULN2003 meghajtása
>
> 2011. július 19. 20:44 Szilágyi Péter írta, <sysypet at hdsnet.hu>:
>
> > Első olvasatra kb ugyanaz a terhelés az MCU-nak, mint az én
> megoldásomban.
> > A kijelzőt kénytelen voltam megszakításosan szkennelni, mert különben
> > sztohasztikusan villogott (GIE tiltása) és a megrendelő visszaküldte,
> > hogy ez így szar. Most be van ágyazva a kijelző megszakításába a DS
> > kommunikációja, így nem villog, csak már nem bírja a plusz
> megszakításokat.
> > Kicsit bonyi lett a TMR0 megszakítása, mert a billentyűzetet is ez
> > kezeli le. Most átgondolom a CCP module használatát. Nem tűnik
> egyszerűbbnek.
> >
>
> Nemtudom, nekem akkoris furcsa, hogy ne tudná ezeket kielégítően kezelni.
> Esetleg valami olyan dolog van a kódban, ami valahol nagyon megakasztja a
> kód futását, mint pl. osztás, printf, ilyesmi? Amit leírtam, annak érzésem
> szerint simán mennie kellene még alacsonyabb órajelen is.
>
>
> > Lehet, hogy mégiscsak HW csere lesz belőle. A 16F1827 állítólag 8mips vs.
> > 16F648 1mips.
> >
>
> Állítólag helyett van az adatlap, de valóban 8mips belső oszcillátorról.
>
>
> >
> > sysypet
> >
> > -----Original Message-----
> > From: elektro-bounces at tesla.hu [mailto:elektro-bounces at tesla.hu] On
> > Behalf Of potyo
> > Sent: Tuesday, July 19, 2011 7:32 PM
> > To: elektro at tesla.hu
> > Subject: Re: [elektro] CD4017-el ULN2003 meghajtása
> >
> > Szerintem valami nincs ott teljesen átgondolva. Első körben pl. a
> > kijelző multiplexelést felesleges megszakításból csinálni, ha jelenleg
> > abból csinálod. A főprogram végtelen ciklusában elég figyelni a T0IF
> > bitet, és amikor bebillen, akkor elvégezni, amit most ezzel
> > kapcsolatban megszakítási rutinban csinálsz - ha ott csinálod. A
> > kijelző biztosan nem marad le semmiről :-))
> >
> > Következő a DS18B20, aminek a kezelését szintén meg lehet csinálni a
> > főprogramból, mivel az egyes bitek olvasásához vagy írásához elég
> > rövid az időkeret, így azokat NOP utasításokkal kell mindenképpen
> > megoldani, két bit olvasása/írása között viszont ha jól emlékszem,
> > bármennyi idő eltelhet, így ez sem annyira időzítésérzékeny. Amire
> > érzékeny, az az, ha egy bit írása/olvasása alatt jön megszakítás, de
> > ezt meg lehet úgy oldani, hogy a bit művelet előtt tiltani, majd utána
> > engedélyezni a GIE bitet, így a DS kezelése rendben lesz. Viszont
> > ekkor ugye elcsúszhat a 100Hz időzítése. Ezt viszont úgy küszöbölheted
> ki, ha használod a CCP modul capture módját.
> > Nevezetesen beállítod, hogy pl. feltutó élre reagáljon, és okozzon
> > megszakítást is. Amikor a megszakításra ráfut, kiolvasod a Timer1
> > tartalmát, kivonod belőle azt, amit a CCPR1H-CCPR1L regiszterekben
> > találsz, és a különbség megadja, hogy mennyivel vagy a megszakítás
> > tényleges bekövetkezése után, vagyis ezzel tudod kompenzálni a GIE bit
> > kikapcsolása miatti ismeretlen mértékű plusz késleltetést. Itt ekkor
> > felkonfigurálod mondjuk a Timer2-t, hogy x idő múlva okozzon
> > megszakítást, amikor pedig az okoz megszakítást, akkor meg kiadod a
> tirisztor számára a gyújtást.
> >
> > Nekem a fenti alapján bőven elégnek tűnik a 4MHz és ez a kontroller a
> > feladatra, maximum kicsit át kell rendezni a hardvert, hogy a 100Hz az
> > RB3 lábra menjen.
> >
> > 2011/7/19 Szilágyi Péter <sysypet at hdsnet.hu>
> >
> > > Zsolt!
> > >
> > > Meg tudja hajtani, tapasztalatból mondom.
> > > Egyébként ugye, nem akarsz mást is csináltatni ezzel az MCU-val?
> > > Nekem egy 16F648 hajt egy 3 digites kijelzőt DS18B20 hőmérővel. A
> > > TIMER0 adja a kijelző frissítéshez a 4ms megszaggatást.
> > > Már a DS18B20-at is szinkronizálnom kellett a TIMER0-val, mert elég
> > > szigorúak az időzítések a kommunikációban.
> > > Most kitaláltam, hogy a mért hőmérséklettel arányosan egy soft PWM
> > > jelet is generálok, ami egy tirisztoros fázishasításos szabályzót
> > > fog
> > üzemeltetni.
> > > A 100Hz nullátmenet az INT lábon jön be és a TIMER2 fogja a
> > > fázishasításhoz eltolni a tirisztor gyujtójelét.
> > > Ha finoman akarok fogalmazni akkor azt mondanám, hogy 4MHz órajel
> > > mellett összetojta magát az MCU.
> > > Vagy én csinálok valamit rosszul? Van valami szofisztikáltabb
> > > módszere ennek,hogy bírja a proci ezt a terhelést?
> > > Persze anélkül, hogy dsPIC33-ra kellene váltanom 16mips mellett.
> > > Vagy túl nagyok az elvárásaim egy ekkora MCU-tól?
> > > Valaki mondta a nagyjaink közül, hogy merjünk nagyokat álmodni.
> > -----------------------------------------
> >          elektro[-flame|-etc]
> >
> > -----------------------------------------
> >          elektro[-flame|-etc]
> >
> -----------------------------------------
>          elektro[-flame|-etc]
>
> -----------------------------------------
>          elektro[-flame|-etc]
>


More information about the Elektro mailing list