[elektro] CD4017-el ULN2003 meghajtása
potyo
potyo.ada at gmail.com
Tue Jul 19 23:25:39 CEST 2011
Van ott még egy PLL is...
Mármint bitminta kivitele hol? Szerintem simán lehet C-ben, csak nem árt
megnézni, hogy miből mit fordít a fordító és aszerint kicsit kézzel
optimalizálni a C kódot. Nekem eddig még az ilyeneket mindig sikerült úgy
megírni C-ben is, hogy olyan kódot kaptam, mint amit asm-ben írtam volna.
2011/7/19 Skandar Graun <sgraun at gmail.com>
> 2 mips
> A belső oszci valóban 8 mega, szemben a 648 4 megájával, de 4 órajel/
> művelet van...
>
De a 648 szerintem már tudja a 20 MHz-es kvarcot is.
> A bitminta kivitele tud roppant érdekes lenni. Azt a legcélszerűbb
> assemblerben írni.
>
> potyo <potyo.ada at gmail.com> írta (2011. július 19. 21:40):
> > 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