Fórum témák

» Több friss téma
Fórum » Fotoellenállásos világításkapcsolás
Lapozás: OK   2 / 3
(#) Jobbagyag válasza kobold hozzászólására (») Feb 3, 2008 /
 
Meg tudná valaki mondani hogy lehet egy pic(16F877) assembly-ben irt programjaban egy bejövő megszakítási jel után szoftveresen tiltaniezen jel ujboli feldolgozasat egy adott ideig? Mindezt ugy kellene, hogy az egyeb bejovo jelek feldolgozasa tovabbra is menjen.
Kosz.
(#) kobold válasza Jobbagyag hozzászólására (») Feb 4, 2008 /
 
Ez így nem teljesen egyértelmű, de a korábbi, időzítős kérdésedre a válasz: létre kell hozni egy időzített megszakítást Timer vagy CCP modulok használatával, ami ismert hosszúságú. Ennek a bekövetkezéseit számolod, adott számnál megvan a várt időtartam. Pl. 1 sec időzítésnél kétbyte-os számlálásnál 18 órát is tudsz időzíteni. Persze elegánsabb volna egy olyan külső tag pl. 555-tel, ami hosszabb időtartamokra van beállítva, és akár SLEEP-ből is ébrsztheti a procit.
A megszakítást okozó jelet úgy tiltod, hogy nem engedélyezel neki további megszakítást (pl. INT tiltott ha INTE=0). Az adott ideig tartó tiltást nem egészen értem, alapból ilyet nem tud a proci, neked kell időzített ciklust létrehozni, és abban tiltani vagy engedélyezni a feldolgozást.
(#) Jobbagyag válasza kobold hozzászólására (») Feb 4, 2008 /
 
Az INTE=0 azert nem jo az en esetemben, mert az ontozo vezerlonek egyeb funkcioi is vannak(pl kezi bekapcsolas) amire mondjuk napkozben is szukseg van(amikor a fenyerzekelo jelfeldolgozasa tiltva van).
Ezek is RB0/INT megszakitas reven hagyatjak abba a PIC-el a vegtelen ciklust(amiben alapallapotaban van), tehat a megszakitast nem tilthatom.
Azt fogom megprobalni amit javasoltal, hogy Timerrel kétbyte-os számlálással idozitek, ami ha tulcsordult atallit mondjuk egy bitet es ettol kezdve ha bejon egy jel a fenyerzekelotol akkor engedi feldolgozni, addig meg nem.
Meg nem csinaltam Timerrel eddig semmit, de feltetelezem ez a programtol fuggetlen idozito, mint pl a WDT, azaz a PIC lehet sleepben, vegtelen ciklusban, vagy eppen a program valamelyik resze futhat rajta, ez attol fuggetlenul szamol. Illetve mivel a 2 byte-os szamlalot leptetgeti, ez nem zavar be az amugy futo programba? Biztos amator a kerdes de tenyleg nem idozitettem meg semmit.
Kosz
(#) kobold válasza Jobbagyag hozzászólására (») Feb 4, 2008 /
 
Böngészd át az adatlapot, 3 időzítőt is találsz a prociban. A Timer0 programozható előosztóval rendelkező 8 bites, a Timer1 szintén előosztható 16 bites, a Timer2 pedig elő- és utóosztóval felvértezett 8 bites időzítő. Mindegyik túlcsordulása tud megszakítást generálni, az ezt lekezelő rutinban pedig állítgathatsz biteket, vagy regiszterek tartalmának inkrementálásával / dekrementálásával, és összehasonlítással tovább ki tudod terjeszteni az időzítést.
A programba való belezavarás elkerülése érdekében különösen ajánlott az adatlap átnézése, mivel az egyes modulok több más modul működésétől, engedélyezésétől is függenek (pl. a Timer0 és a Watchdog ugyanazt az előosztót használják, de egyszerre csak egyikük használhatja; Timer2 adja a PWM-kimenet órajelét). A konkrét megvalósításhoz abból kell kiindulni, hogy mely erőforrásokat foglalja le a jelenlegi program, és mit lehet elérni a szabadon maradt modulokkal.
(#) Jobbagyag válasza kobold hozzászólására (») Feb 12, 2008 /
 
Szenvedek tovabb ezzel a napi 1x-i bekapcsolassal. Nezegettem a timer0-t, novelgettem regisztereket stb. Megy a dolog, de az a problemam, ha a programban mondjuk tortent egy RB0/INT megszakitas, ami mondjuk percekig tart lekezelni (mondjuk kezi vezerlessel annyi idore bekepcsolom az ontozorendszert) akkor ez ugy tunik felfuggeszti a timeres megszakitast ill. annak szamlalasat (5 perccel kitolodik a kovetkezo timeres megszakitas ideje). Hogyan tudom igy a timert egy fix idotartam meresere hasznalni? Csak emlekeztetonek az alap problema: pirkadatkor egy jel erkezik (PIC elinditja a napi ontozest) - ezutan meg szeretnem tiltani az ismetelt jelfeldolgozast kb 20 orara(ujbol ejszaka lesz addigra). Igy csak napi 1x hajnalban ontozne.
Kosz.
(#) kobold válasza Jobbagyag hozzászólására (») Feb 12, 2008 /
 
5 perccel nem tolódhat ki a Timer0 periódusa, max. programhiba miatt.
Nem egészen értettem, minek kap a proci megszakítást, ha kézzel öntözöl, de végül is mindegy.
A Timer0 "szabadonfutásának", azaz a folyamatos időzítésnek a menete:
- OPTION_REG regiszterben PS2S0 bitekkel beállítani az előosztót
- ugyanitt PSA bit törlése, hogy az előosztót a Timer0 használhassa
- INTCON regiszterben T0IE beállítása, interrupt engedély
- ugyanitt GIE beállítása, globális interrupt-engedély
Gondolom, ezek neked is ugyanígy vannak, és csak egyszer, az inicializálás során kell végrehajtani. Ezután a Timer0 már bármikor indítható az OPTION_REG T0CS bitjének törlésével, és folyamatosan működni is fog. Minden túlcsorduláskor bebillenti az INTCON T0IF bitjét, erre jön a megszakítás, ahol számolgatsz, és a RETFIE utasítás előtt törlöd a T0IF bitet.
Ha ez nálad is így van, és mégsem jó, akkor már többet kellene látni az eszközből meg a progiból.
(#) Jobbagyag válasza kobold hozzászólására (») Feb 13, 2008 /
 
Igy van minden sztem. Melléklem a programot (nem a bonyolult öntöző progi, hanem a timer + RB0/INT interrupt együttes használatának szimulálására irt tesztprogramom). Timerre 'XOR-olja' a ledeket (kb 16sec-ként), RB0/INT megszakitasra egy 5 sec idotartamu (bocs most látom 5 percet irtam) másik programrészlet indul el és ilyenkor 16+5=21 sec utan valtanak a ledek a timer megszakitasra. A baj ezzel az, hogy egy tobb funkcios öntözőről van szó, azaz azon tulmenoen, hogy napi egyszer vegig ontozi a kulonbozo agakat(magnesszelepek nyitnak egymas utan), kézzel is be tudok kapcsolni egy tetszőleges ágat (radios tavkapcsolo gombjat annyiszor nyomom le ahanyadik ag magnesszelepet akarom kinyittatni a pic-cel, majd bekapcsolja a motort stb.) Nem akarlak a reszletekkel untatni, csak hogy miért kell a pic a kezi ontozeshez is. Szoval teszem azt egy adott nap tobbszor csinaltatok vmit a pic-cel RB0/INT megszakitassal, aminek az idotartama kitolja a timer idoziteset, igy pl kovetkezo napfelkeltekor hiaba jelezne a fenyerzekelo, a timet meg mindig tiltja a jelfeldolgozast. Udv.

main.asm
    
(#) kobold válasza Jobbagyag hozzászólására (») Feb 13, 2008 /
 
Pár dolgot mondanék így elsőre, írásban kicsit nehéz ezeket vesézni, így tárgyilagos leszek:
  1. ;Főbb regiszterek mentése interrupt kezdetekor:
  2. MOVWF   WTMP
  3. SWAPF   STATUS, 0
  4. MOVWF   STMP
  5. MOVF    PCLATH, 0
  6. MOVWF   PTMP
  7.  
  8. ;Regiszterek visszaállítása interrupt végén és kilépés:
  9. MOVF    PTMP, 0
  10. MOVWF   PCLATH
  11. SWAPF   STMP, 0
  12. MOVWF   STATUS
  13. SWAPF   WTMP, 1
  14. SWAPF   WTMP, 0
  15. RETFIE

Megvizsgálod RA3 állapotát, ha 1, nyugtázod az RB0 interruptot; miért nem INTF bitet vizsgálod?

Nagyon illetlen dolog megszakítás-kezelőben jó hosszú késleltetést megírni, értelmét veszti az egész megszakítás, ráadásul a verem is túlcsordulhat. Inkább be kellene állítani egy bitet, aztán a főprogramban ennek hatására megcsinálni a késleltetést, és törölni a bitet, hogy a következő megszakítás megint beírhassa.
(#) Jobbagyag válasza kobold hozzászólására (») Feb 14, 2008 /
 
Nagyon koszonom a segitseged, atirtam, hogy a megszakitsi lapon csak 1 bitet allitson at(RB0 eseten) illetve leptesse a Timeres szamlalot(Timer megsz. eseten). Megy, bar egy 5%-al lassul a timeres megszakitas ha kozben sok RB0 interrupt kovetkezik be. Ez gondolom normalis (az en alkalmazasomban mindenesetre nem zavaro). Azert nem INTF bitet vizsgálom, mert az ontozo vezerlo programban sok minden tud RB0 megszakitast okozni(ezek egymastol egyeniranyitoval el vannak szeparalva mielott az RB0/INT labra is ra lennenek kotve.
Lehet ez igy vadul hangzik, nem tudom egy hozzaerto ezt hogy oldana meg, en igy tudtam megoldani szereny tudasommal. De igazabol rajottem a valaszod alapjan, felesleges az RB0 interrupt, mikor alap allapotban a program egy NOP-ot "csinalo" vegtelen ciklusban van. Ebben a ciklusban kellene vizsgalgatni az egyes bemeneti labakat es a megszakitasi lapot csak a timer hasznalna. Nem is ertem mire hasznaljak altalaban az RB0 vagy a PORTB4:7 megszakitast (esetleg ha SLEEP-ben van a PIC alapbol, akkor ez felebreszti gondolom).
Bocs az egesz biztos amator megkozelitesi modomert, kerdeseimert, de 2 honapja foglalkozok PIC-cel egyaltalan(viszont ezalatt teljesen mukodokepesre "farigcsaltam" az ontozo vezerlo progim, ami mindent csinal amit szerettem volna, ugyhogy teljes a sikerelmeny). Kosz megegyszer.
(#) kobold válasza Jobbagyag hozzászólására (») Feb 14, 2008 /
 
Igazán nincs mit, örülök, hogy sikerült
Kötözködhetek még egy picit? Ha sok olyan vonal van, ami RB0 megszakítást okoz, úgy írnám a rutint, hogy az INTF vizsgálata meghatározza, RB0 volt vagy sem, utána pedig a bemenetek lekérdezésével eldönteném azt, hogy konkrétan melyik periféria jelentkezett. A végeredmény gyakorlatilag ugyanaz, csak a kódot teszi szebbé, olvashatóbbá.
Egyébként teljesen jogos az RB0 interrupt száműzése, és helyette a bemenetek pollingozása, ha nem küldöd el SLEEP-be a procit. Mivel semmi más dolga nincs, vizsgálódhat folyamatosan. Sőt, még az is lehet, hogy gyorsabb lesz a polling, bár ez nem determinálható így. A megszakítás ugyanis csak a nevében jelent azonnali megszakítást, a valóságban eltelhet pár usec, mire a végrehajtás a vektorra ugrik. Ráadásul polling előtt és után nem kell regisztereket sem menteni, megint spóroltál egy kis időt.
Nem nevezném amatőrnek a megközelítést, szerintem büszke lehetsz, ha két hónap alatt a semmiből ennyire jutottál. Gratulálok hozzá, és további kitartást kívánok a jövőbeni projektjeidhez
(#) Jobbagyag válasza kobold hozzászólására (») Feb 14, 2008 /
 
Koszonom!
(#) rammeradrian hozzászólása Aug 24, 2008 /
 
Üdv érdeklődni szeretnék hogy hogyan lehetne megoldani az alábbi 220V éjjelilámpa működtetését 12V-ról.
Lehetséges ?Itt a rajz.
(#) titi válasza rammeradrian hozzászólására (») Aug 24, 2008 /
 
Hali!
Ha arra gondolsz, hogy a glimm helyére 12V-os izzót teszel, és 12V-ról használod, akkor megoldható, de szerintem inkább használd fel a foto-ellenállást, és komolyabb tranyót használj, mint ami ebben van.
(#) rammeradrian válasza titi hozzászólására (») Aug 24, 2008 /
 
Tudnál rajzot hozzá
(#) titi válasza rammeradrian hozzászólására (») Aug 24, 2008 /
 
Bővebben: Link
Nyugodtan használhatod 12V-ról.
Ha izzót szeretnél hajtani, a második tranyó helyett használj "komolyabb" tranyót, vagy a LED helyére tégy relét, és azzal kapcsold. (Utóbbi esetben természetesen a LED-el sorbakötött ellenállás nem kell.)
(#) fúró válasza witi hozzászólására (») Jan 31, 2009 /
 
Bővebben: Link

ezt a kapcsolást megépiteted
a 330-500ohm os ellenálas te hány ohm osat raktá bele

Link javítva.
-- kobold
(#) bimbi hozzászólása Szept 1, 2010 /
 
Helló!
Ezt a kapcsolást akarom elkészíteni, már minden megvan hozzá kivéve a fotoellenállásokat amik kék, zöld és piros színre reagálnak.
Ezeknek kellene a típusa és boltban megtudnám rendelni.
Segítene ebben valaki?
(#) vilmosd válasza bimbi hozzászólására (») Szept 1, 2010 /
 
Hali
Ezek normal fotoellenallasok, es az optikaban vannak a szinszurok. Tehet 3 egyforma fotoellenallast kell vasarolni.
Udv Vili
(#) bimbi válasza vilmosd hozzászólására (») Szept 1, 2010 /
 
Köszönöm a választ.
Akkor azok a ovális alakzatok a színszűrűt jelölik?
Tehát veszek 3 egyforma ellenállást és bemegy egy optikába és kérek színszűrőt?
Azok mekkorák? Vagy van különböző méretben? Mennyibe kerülnek?
(#) vilmosd válasza bimbi hozzászólására (») Szept 1, 2010 /
 
Hali
A rajz szerint van harom tubus, amiknek az eleje lencse, utana a szinszuro, majd a LDR. A szinszuroket esetleg diszkos boltokban lehetne kerni. Sok nem kell, mert a tubus atmeroje 1-2 cm (lencsetol fugg).
Udv Vili
(#) bimbi válasza vilmosd hozzászólására (») Szept 1, 2010 /
 
Hogy-hogy nem kell sok?
Az nem egy kör alakú műanyag, amiből egyet veszek?
Veszek 3 féle színt, 3 lencsét és készítek egy tubust, összerakom az LDR elé teszem. Ugye?
(#) vilmosd válasza bimbi hozzászólására (») Szept 1, 2010 /
 
Hali
Gondolom harom erzekelo, harom tubus. Mivel a LDR nem nagy, igy a tubusok sem nagyok. Tehat ha 2 cm atmeroju lencsed van, akkor szuro is kb ekkora kell. Ilyen szuroket hasznalnak a diszkos lampak ele, de ha tudsz szerezni szines cellofant az is megteszi (papirbolt). Nem tudom mire akarod hasznalni ezt a kapcsolast, de ha nem kell preciz atvaltas akkor barmilyen szines folia megteszi.
Udv Vili
(#) bimbi válasza vilmosd hozzászólására (») Szept 1, 2010 /
 
Nem fontos, hogy precíz legyen, csak hobbiból csinálnám. Megpróbálom a fóliát.
Köszönöm.
(#) Stewe válasza bimbi hozzászólására (») Szept 1, 2010 /
 
Már majdnem leírtam, hogy készen lehet ilyen érzékelőt venni....
(#) bimbi válasza Stewe hozzászólására (») Szept 1, 2010 /
 

Ha gondolod belinkelheted kíváncsi vagyok rá.
(#) bimbi válasza vilmosd hozzászólására (») Szept 1, 2010 /
 
És 2cm átmérőjű lencsét, optikában tudok venni?
(#) vilmosd válasza bimbi hozzászólására (») Szept 1, 2010 /
 
Hali
Nem tudom hol lehet venni de esetleg a kereso megmondhatja.
Udv Vili
(#) DJanosi hozzászólása Szept 1, 2010 /
 
Hali en megepittettem ezt a kapcsolast: Bővebben: Link es nem tudom hany Ohm os ellenallast tegyek esteleg helyette vagy mivel van a gond mert allandoan eg a led

Legyél szíves használd a LINK gombot! --vicsys
(#) frank tibor válasza DJanosi hozzászólására (») Szept 1, 2010 /
 
Bocs hogy nem értem, mi helyett szeretnél ellenálást tenni?
(#) DJanosi hozzászólása Szept 1, 2010 /
 
Hat pl 330-500 ohm oda akkor miet tegyek?es nekem egy 100 K stereo potivan es akkor stereoba kell kotni vagy eleg az egyik fele?
Következő: »»   2 / 3
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