Fórum témák

» Több friss téma
Lapozás: OK   1 / 1
(#) Gabor888 hozzászólása Nov 5, 2007 /
 
Sziasztok

Egy clock impulzust szeretnék előállítani, méghozzá úgy, hogy egy bizonyos jel kezdete után induljon el az impulzussorozat (még erre sem találtam pontosan jó megoldást)...

Csakhogy, az történt, hogy ahogy így nézegettem áramköröket, láttam, hogy pl. az 555-ös vezérelt clock jel sem úgy kezdődik, ahogy jó lenne, mivel a kondenzátornak előbb fel kell töltődnie, tehát az első négyszégjel nem lesz ugyanakkora, mint a többi...

Nem tudjátok hogy lehetne megoldani ezt a problémát?
Válaszokat előre is kösz...
(#) kobold válasza Gabor888 hozzászólására (») Nov 5, 2007 /
 
És ha kihagyod az 555-ös első impulzusát, egy D-tárolót hajtva vele? Igaz, ugyanolyan kimenethez duplázni kell a frekijét.

clock.gif
    
(#) Medve válasza Gabor888 hozzászólására (») Nov 6, 2007 /
 
Hello. Kapuzni kell a folyamatosan (!) meglévő órajelet egy tárolóval, aminek az átbillenése szinkronban van az órajel élével. Vagyis, ha megvan a bizonyos jel, az engedélyezi a tároló billenését, de az csak akkor következik be, amikor megtörténik az órajel általd kívánt szintváltása. A tároló kimenete pedig nyitja az órajel útját...
(#) Medve válasza Gabor888 hozzászólására (») Nov 6, 2007 /
 
Valahogy igy:... A "Space" bekapcsolja az órajelet, az "M" ki
(#) proli007 válasza Medve hozzászólására (») Nov 6, 2007 /
 
Bocs Medve, de így semmi különbség nincsen, csak szinkronizálja az órajelet, de az nem akkor indul, amikor az indítójel indítaná. Nem biztos, hogy ezt szerette volna. Így az indító impulzus és az órajel fázisától függ, hogy mikor fog megjelenni az első ütem.
Egy normál kapuhoz képest, csak annyi a különbség, hogy az első órajel, mindíg egész hosszú lesz.

(Ezt az .ewb-t mivel lehet megnézni? Ez a szimulátor?)

üdv! proli007
(#) kobold válasza Gabor888 hozzászólására (») Nov 6, 2007 /
 
Esetleg egy másik, ezt épp ki is próbáltam, LPT-n pollingozva az első pár ciklusig, LM2904N kétszeres műv. erősítőt használva. Nem tudom, milyen gyors órajel kell neked, ezt itt 500 kHz-re állítottam, és amennyire meg tudtam mérni, nem észrevehető az első periódus változása, csak az indítás után van egy pici, egyszeri késleltetés.
(#) kobold válasza kobold hozzászólására (») Nov 6, 2007 /
 
Bocsánat, 5 kHz, és nem 500 kHz volt a próba...
(#) Gabor888 válasza kobold hozzászólására (») Nov 6, 2007 /
 
Átnéztem, és nagyon jó 5letnek tűnik az a D flip-flop frekvencia felező, mivelhogy ha jól gondolom, akkor az egész áramkörben lesz egy IC, amiben még lesz egy szabad D flip-flop...

A késleltetésekkel sincs bajom, merthogy az is kell, ha nem lesz, akkor max. egy inverterrel megoldom, mivel: a késleltetésnek pont annyinak kell lennie, mint amennyi egy négyszögimpulzus alacsony állapotának ideje, de itt sajnos a késleltetés nem annyi...

Az se gond, ha az impulzus alacsony, és magas állapota nem egyenlő hosszúságú... Egyébként ezt az egyszerű (az egyszerű megoldásokat szeretjük sztem ) D flip-flopost nem lehetne neki megadni, hogy akkor kezdődjön a jel, amikor én szeretném? vagy... Próbálkoztam ugyan (azzal a javás szimulátorral), de nem sikerült...

Mutatok egy rajzot, hogy mi lenne a lényeg számomra.
- Sokat szenvedtem vele, remélem megérte (PAINT)
- A szagatott azt jelenti, hogy tökmindegy...
- A felső egy bizonyos jel, onnantól kezd beindulni az áramkör
- Alsó pedig a kiadott clock impulse
- Tudom, hogy ez így bonyolult, de a lényeg tényleg csak annyi, hogy az impulzusok akkor kezdődjenek, amikor én szeretném, és hogy legyen elejétől fogva ugyanolyan a jel...

U.i.: Kösz a gyors válaszokat! És bocs, hogy ilyen hosszúra sikeredett...
(#) szilva válasza Gabor888 hozzászólására (») Nov 6, 2007 /
 
Szia!

Arról írhatnál valamit, ha nem titok, hogy mire kell ez az órajel, valamint arról is, hogy mekkora lenne az üzemi frekvencia, és esetleg mekkora pontatlanság engedhető meg az első impulzusnál. Ezek sokat segítenének a gondolkodásban!
(#) proli007 válasza Gabor888 hozzászólására (») Nov 6, 2007 /
 
Ha jól látom, akkor az indítójel megjelenése után az órajel, már állandóan jár, akár megszűnik az indítójel akár marad.
Ha lassú a kívánt órajel, akkor van egyszerű lehetőség, persze a pontossági és frekvencia igényeidet még nem ismerjük.

Az indító jelet megtárolod (CD4013 D tárr, vagy RS tár), és ezzel a jellel kapcsolod egy számlánc reset lábát.
Ha bebillen a tároló, a számlánc el kezd számolni, és szimmetrikus négyszögjelet fog szolgáltatni.
Ha hosszú a számlánc, akkor kicsi a hiba, mert az első órajel, max egy bemeneti óraütemmel térhet el.
A számlánc lehet CD4020, CD4040, és CD4060 pld.
Ha pld. 4020-at használunk, akkor az első ütem maximálisan a következő ütem 6milliomod részével térhet el, de a kimeneti órajel frekvenciája, max 600Hz.

Hát ezért kellene ismerni a megkívánt pontosságokat, mert dönteni, csak annak figyelembevételével lehet. (mint Szilva írtafenn)

- Kívánt órajel frekvenciája és pontossága
- Első ütemnél megengedhető hiba

üdv! proli007


(#) szilva válasza proli007 hozzászólására (») Nov 6, 2007 /
 
Pontosan ezekre gondoltam én is.
(#) Gabor888 válasza proli007 hozzászólására (») Nov 6, 2007 /
 
Mapaság, mint mindenki, én is csak a számítogép és egy áramkör között szeretnék adatokat továbbítani. Szal a cucc lényege egy RS232 és egy áramkör között lenne... Szerintem ehhez elég nagy pontosság kell...
A gond az, hogy nem szeretném PIC-ekkel, mert nemismerem, másrésztmeg szeretem érteni, amit készítek. A PIC túlságosan is bonyolult ahhoz...

Soros port aszinkron jel: Link

Egy egyszerű 8 ledet szeretnék villogtatni, azaz sorosból párhuzamosba átalakítani... A clock pedig a mintavételi jel,
és egy 4015-ös, vagy újabb IC fog (sok D flip-flop) gondoskodni arról, hogy minden mintavételi szakaszban a data inputról bejövő jel átalakuljon párhuzamos jellé.

Szerintem innentől elég érthető mi a probléma, és hogy miért mi kell, hogyan.
(#) ferci válasza Gabor888 hozzászólására (») Nov 6, 2007 /
 
Ennek a pontossága csak tőled függ, ha 555-tel csinálod. Ha van türelmed, ellenőrizd le, hol billen át az IC (általában Ut 33%-a) és a bal oldali osztót úgy kell "trimmelni"... a rajz pl. 10 volthoz oké, a két ellenállás értékét más táphoz arányosan változtasd.
IC nélkül kell beállítani.

555 imp.JPG
    
(#) Medve válasza Gabor888 hozzászólására (») Nov 6, 2007 /
 
Hello Ferci, egy soros kommunikáció órajelét RC-vel akarod? Kvarccal inkább!
(#) ferci válasza Medve hozzászólására (») Nov 6, 2007 /
 
Bocs... a témaindító nem erről szólt.
***láttam, hogy pl. az 555-ös vezérelt clock jel sem úgy kezdődik, ahogy jó lenne, mivel a kondenzátornak előbb fel kell töltődnie, ***

Erre reagáltam, hogy van az másképp is...
(#) Spagoca hozzászólása Nov 6, 2007 /
 
Veszel egy 4060-as IC-t berezgeted az oscillátorát a kívánt órajel 16384 szeresével. A 3-as lábon leveszed a kívánt órajelet. A reset lábbal lehet indítani és leállítani. A hiba max 1/16384-ed órajel. Ez már elég jó, vagy nem?
(#) Medve válasza ferci hozzászólására (») Nov 6, 2007 /
 
jahhh... Meg is osztottam a hozzászólásom címzettjét, hát akinek nem inge...Ám én még most sem tudom, hogy miről van szó Pedig volt egy pillanat! Ámde, egy USART chip esetleg megoldás lehet? Sőt a fenébe, nem tudom már a tipusát, 2 hete volt a kezembe egy soros komm.-hoz való órajel generátor. Az összes baud rátát tudta.
(#) szilva válasza Medve hozzászólására (») Nov 6, 2007 /
 
A kérdező egy soros porton kiküldött byte-ot akar saját maga dekódolni egy párhuzamos, 8 bites regiszterbe - ha jól értettem a szándékát.

Tanulásra kifejezetten jó feladat. Csak kicsit rossz irányba indult el, szerintem.
(#) kobold válasza Gabor888 hozzászólására (») Nov 6, 2007 /
 
Hát, én ledek villogtatására kihagynám a Win soros kommunikációját, inkább írnék "protokollt", az API-hívásokra támaszkodva, és eszerint készítenék áramkört. Csak ami nagy hirtelen eszembe jutott, azt írom le, biztosan van optimálisabb megoldás is.
A PC soros portján van 3 vonal, amiket kedved szerint állíthatsz programból (egy megfelelő CreateFile... hívás után, ami megnyitja a portot), anélkül, hogy egyetlen byte-ot is küldened kellene a hagyományos módon, ezek a BREAK, RTS, DTR. Kiválasztasz mondjuk egyet órajelnek, egyet adatvonalnak, egyet pedig törlővezetéknek. A panelt egy szintillesztővel kezded, ami az RS-232 szinteket TTL-re alakítja, ez akár pár tranzisztor is lehet. Aztán jön egy soros be - párhuzamos ki shift regiszter, SN74164 vagy hasonló, és ha a ledek árama nem fér bele a léptető specifikációjába, a kimeneteket egy UDN2981-es vagy más driver IC-n keresztül lehet még "tuningolni". Ennek a léptetőregiszternek két bemenete van, közösítve mehetnek az adatvonalra, vagy az egyiket állandó magas szintre is lehet húzni.
Mind a három említett vonal állapota módosítható az EscapeComm funkcióval, a dwFunc paraméternek megfelelően (lásd SDK), illetve a BREAK vonal állapotát a SetCommBreak / ClearCommBreak funkciókkal is állíthatod. A szoftver dolga már "csak" annyi, hogy meglegyen benne a ledek villogtatási sorrendje, n elemű tömb byte-okból, vagy egy byte-nyi változó, kis matekkal számítgatva az egyes állapotokat; aztán indulásnál generál egy CLR impulzust a léptetőregiszternek, majd egyetlen ciklusban kilépteti a következő állapot 8 bitjét, arra kell csak ügyelni, hogy a léptetés melyik élre vezérelten következik be, ennek megfelelően kell az adatvonalat állítani. Ha kint van mind a 8 bit, lehet indítani egy időzítőt, akár callback funkcióval, akár a WM_TIMER üzenetre reagálva (VB-ben meg Timer objektummal), és a következő állapot értékével kezdődhet a folyamat elölről. Amikor meg végeztél, CloseHandle, és ki is takarít maga után a program.
Így nem kényszerülsz arra, hogy igazodj a Win átviteli sebességéhez, nem kell időzítő az aszinkron jelsor detektálásához, és feleannyi alkatrészből megvan ugyanaz.
Pár éve csináltam ilyet, hétszegmenses kijelző hajtására; az emberi szem tehetetlenségének köszönhetően villogás meg összefolyás nélkül megoldható volt, még a folyamat prioritását sem kellett bolygatni.
(#) szilva válasza Gabor888 hozzászólására (») Nov 6, 2007 / 4
 
Nos, ha tényleg nem akarsz valami programozott okosságot vagy egyéb céláramkört felhasználni, akkor is érdemes tanulmányozni azok adatlapját. Merthogy azok sem úgy csinálják, ahogy Te elképzelted, márpedig elég szépen működnek.

Szóval a legtöbb ilyen cucc kb. ezt csinálja:

- van egy, mondjuk a bitsebességhez képest 16x-os órajel, ennek az éleinél vesz mintákat a soros vonalból
- a startbit figyelésénél ha két egymás utáni mintavétel 0 és 1, akkor felkészül a soros szó fogadására
- leszámol az elméleti bitidő feléig, 16x-os órajel esetén 8-ig
- vesz egy újabb mintát a bemenetből, ha ez még mindig 1, akkor elindul a szó fogadása
- innentől kezdve a szóhossz, a paritás és a stopbitek száma szerinti bitet fogad úgy, hogy 16 órajelenként vesz mintát a bemenetből, ezeket a biteket belépteti egy regiszterbe
- megvárja, hogy a vonal "inaktív" (0) állapotba kerüljön az újabb szó fogadása előtt
- kész

Folyt. köv.
(#) szilva válasza szilva hozzászólására (») Nov 6, 2007 /
 
Ezt a módszert önálló digitális áramkörökkel kb. így lehet megvalósítani:

- kell egy (lehetőleg kvarcvezérelt) órajelgenerátor a kívánt bitsebesség 16-szorosával
- kell egy 16-os számláló, amit lehet 8-ra "reseteni" (párhuzamos beírással), ez az alapállapot - ezt nevezzük bitléptető osztónak
- kell egy élvezérelt tárolóból egy áramkör, ami érzékeli a startbitet, és engedélyezi a számláló elindulását
- a számláló túlcsordulásával kell léptetni egy 16 bites (mondjuk 2db 8 bitesből kialakított) léptetőregiszterbe a soros vonalról az adatokat
- közben egy másik számlálóval számolni kell, hogy hány bitet léptettünk be, ha ez eléri a kívánt mennyiséget, akkor a bitléptető osztó működését letiltjuk azzal, hogy az engedélyező, élvezérelt tárolót visszabillentjük
- a léptetőregiszterek párhuzamos kimenetein megjelennek a start, adat, paritás és stopbitek is

Esetleg szépészetként lehet még egy tárolót tenni a léptetőregiszterek kimeneteire, amibe akkor írjuk be a szót, amikor az már teljesen összeállt, így vétel közben nem "zizegnek" a kimenetek. Nem lesz egy egyszerű áramkör, de megépíthető.
(#) szilva válasza kobold hozzászólására (») Nov 6, 2007 /
 
Ugyan nem tudom, hogy mire szolgálna ez az áramkör, de ha megtartja az RS232 protokollt, akkor azon kívül, hogy progit írsz rá, lehet terminálprogramokkal és egyéb dolgokkal is kiküldeni rá adatot. A saját protokollt csak a saját progi fogja kezelni.

Nekem azért sikerült a PIC-es, RS232-n kommunikáló cuccaimhoz írni mindig valami kis progikát, általában VB2005Express-t használtam a feladatra.
(#) Gabor888 válasza szilva hozzászólására (») Nov 6, 2007 /
 
Igen, gondolom, tudom, hogy vannak jól műödő áramkörök. Néztem már néhányat leszűrtem néhány infot, de ha bizonyos órajel éleknél mintát veszek, akkor annak ugyanúgy működnie kell. Ebből idultam ki. Attómég nem gondolom, hogy nincs jobb megoldás, bitzos van. Ezért kérem a segítséget. Ha tudtok jobbat, akkor szívesen várom az 5letet.

Még azért átnézem amiket írtatok, mert ez így nemkevés. Szilva 5lete jónak tűnik, de még elgondolkozok rajta. Szóval bocs, ha most nem tudok még dönteni, kösz a válaszokat, még gondolkozok, meg ugye nincs annyi időm, hogy ilyen gyorsan gép elé kerüljek mindig...
(#) kobold válasza szilva hozzászólására (») Nov 6, 2007 /
 
Igazad van, bevált dolog a PIC saját USART-ját használni, de mintha írta volna azt is, hogy nem szeretne kontrollert. Mindegy, javaslatot kapott bőven, lehet válogatni

A saját protokoll valóban csak az adott programmal jó... Én C-t, C++-t vagy VB6-ot szoktam használni, mivel csak ez van, sokszor keverve is. Ha hordozhatót akarok írni, sima C és W32API, annyi a hátránya a terminálprogrammal szemben, hogy egyszer fel kell másolni a működtető gépre, előnye viszont, hogy a protokollt ahhoz igazíthatom, ami a kábel végén van. Saját részemről, 8 led villogtatására nem "pocsékolnék" el egy PIC-et
(#) szilva válasza kobold hozzászólására (») Nov 6, 2007 /
 
Idézet:
„Saját részemről, 8 led villogtatására nem "pocsékolnék" el egy PIC-et”


Hát nem is tudom, mi a pocséklás: egy 300 forintos PIC (csak azért ilyen "drága", mert sok láb kell a sok LED-hez), vagy a következő IC-temető (így hirtelen belegondolva, elképzelhető, hogy vannak jobb választások is):

1 db 4060 az órajelgenerátorhoz
1 db 74193 a bitléptető osztóhoz
1 db 74193 a bitszámlálóhoz
1 db 7474 a startbit-re induláshoz
2 db 74xxx, 8 bites léptetőregiszter
x db esetlegesen a logikához kellő kapuáramkör

extraként
1db 74573 a LED-kimenetek másodlagos puffereléséhez

Plusz ezeket valamire összeszerelni.

Persze, ha tanulási céllal, élvezetből rakja össze az ember, akkor nem kérdés; ha gyorsan és olcsón kell, akkor a PIC a legcélravezetőbb.
(#) proli007 válasza Gabor888 hozzászólására (») Nov 7, 2007 /
 
Hoppá akkor már érthető a bánatod!

Ezek szerint a mintavételi órajelet szeretnéd előállítani ezzel. Hát a PIC egyszerűbb lenne, mert majd tovább is akarod alakítani.

Egyébként nem biztos, hogy olyan pontos jel kell. Gondoljatok bele. A start ipmulzus után, van 8db adatjel és a stop jel. Hogy ne hibázzon, csak 9 impulzus ideje alatt, nem tévedhet egy impulzust az órajel. (Hány százalék az?) A régi CAMAC számgépben is csak monostabil multi volt az órajel)
De mivel neked a mintavételezést úgy is az RS adat "közepén" kell végezned, és az első a start jel, még jól is jöhet, a kezdeti hosszú impulzus.
Amúgy egy monostabilt indítasz a start jellel (ami mindíg H) és lekéslelteted az első ütemet (Start+1/2jel) és azzal indítod az astabilt.

üdv! proli007
(#) proli007 válasza proli007 hozzászólására (») Nov 7, 2007 /
 
Jesszus! Én egy lapot elaludtam? VAgy egy napot?
(#) proba válasza Gabor888 hozzászólására (») Dec 11, 2007 /
 
Két monostabil (cd 4538) szerintem teljesíti de az osztós módszer jobban tetszik.
Következő: »»   1 / 1
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem