Fórum témák
» Több friss téma |
Fórum
Az one-shot, a nevében is benne van...
Egy impulzus előállítása, nincs szükség idő megadására, mert a program egyetlen ciklusára érvényes és amivel kapcsolatba hozzuk, abban biztosan "elvégzi a dolgát"... Természetesen, pozitiv és negativ szinteket is figyelhetünk vele. Nagyon fontos "rutin" ez a vezérléstechnikában, ne hanyagoljuk el a jelentőségét, használjuk bátran, stabil program alapeleme a bemeneteken illetve a program egyéb részein is... Érdekességképpen jegyzem meg, az I2C kezelésekor, ezen egy impulzussal kiolvasható egy ilyen eszköz.
Igen, de a sok időzítést jobb kerülni. Inkább számlálókkal szoktunk időzíteni, mint megpakolni a programot monoflopokkal, és Delay-ekkel, Timerekkel.
a mono flop is ugyanez nem? Csak ott lehet állítani a kimenetet is, meddig tartson 1-es értéket.
1 impulzus.. Ha 1-es értéket adsz a bemenetére, egy rövid tüskeimpulzust ad a kimenetén..
Sok helyen látom még az One-Shop funkciót. Mi is ez? én kb olyannak látom mint egy mono-flop. Vagy nem?
az utolsó pár sor kérdésen kívül csak a programot írtam le, amit készítettem, hogy mivel volt gondom, mit hogy csináltam stb
Beleégetem a PIC-be, a megfelelő helyre kötöm az LCD lábait, bekötöm a kvarcot, a MCLR-t fel a +ra ellenállással, és mennie kellene?
Valószínű félreértettem, de most sem teljesen tiszta mit is akarsz. Válaszolok amire tudok.
Mi számoljon visszafelé? Ami szimulációban működik általában az életben is. Olyan kvarcot használj amilyen van . Én 8MHz-eset szoktam mert az van itthon sok, így nem kell vennem. 4MHz a megszokott, ez esetben XT oszcillátor lesz. 22pF-os kondik kellenek körülbelül.Ha még mindíg nem a lényeget mondtam, akkor fogalmazd meg úgy hogy értsem . üdv: Dávid
Nemértem miért küldöd nekem ezt. írtam hogy nekem nem az kell msot hogy egy működő PIC-s voltmérőm legyen, hanem a tesztelés. Sok kérdés, amit nem válaszoltál meg..
Szia!
Valami hasonlóképp próbálkozz! üdv: Dávid
Ehhez mit szólsz? Egy voltmérő, természetesen pontatlan, de a gyakorlat a lényeg. A komparátor kapcsolta volna kijelzőt, de amikor az ADC érték a maxon van, akkor az 5 kijelző CF lába mindig aktív lenne, azért tettem oda egy mono-flop-ot. Viszont ha csökken az érték, akkor vissza nem ment az érték, hacsak nem kezdtem előröl. Azzal bajlódtam egy pár órát, hogy hogyan megoldani, hogy visszafele is számoljon. Mennyire bonyolult megoldást használtam? Elméletileg működne ha PIC-be égetném? 8MHz-ről a kvarc értékét át lehet írni? Mi szerint válasszam a kvarc értékét?
Nagyon szívesen.
Örülök, hogy müködik...
Sikerült a két LM75 kiolvasása.
Az asm rutin amit írtam jó volt, csak nem jó helyen. Áthelyeztem és máris működött a dolog. Ha valakit érdekel érdekel itt található az eredeti Dcsabi által írt program. Én csak az II2_1.inc fájlt módosítottam és a Parsic fájlt. A módosított fájlok a mellékletben. Csabi köszönöm a segítséget.
Ne M0.2 nek az állását változtasd csak,(a pic mást sem fog csinálni mint I2C-t olvasni) hanem hozzál létre egy másik bitet is M0.3 (ez tartozik a másik szenzor címéhez) és ezt is célszerűen one shot kapcsolja, pár ms és kész is a kiolvasás így.
Ezeket a bit változtatásokat ismételgesd Pl: 500ms-al... Azok a programsorok amelyek ki vannak iktatva, azok valőszínű nem kellettek... Nem találom azokat az Inc fileket, a másik laptopomom van a teljes projekt (az meg "beteg") Azért így konkrétumok nélkül próbálok segíteni.
Amit módosítottál annak űgy nem sok hatása van...
valami olyasmivel próbálkozzál, hogy adjál egy másik szubrutin cimet Pl: set_slaveADR1 és a Parsic-ban ha egyik feltétel előáll akkor az egyik cím állításra ugrik, ha a másik feltétel áll fenn akkor a másik cím állításra ugrik. A MAIN.inc file-ból vehetsz példát, ahogy az írás és olvasás elkülönítése történik feltételes ugrással, -valamelyik változatban 4 db ugrást is tettem. Természetesen a kiolvasott értéket is el kell különítened(MX modul)... - erre már tettem javaslatot...
Sikerült még tovább jutnom.
Az LM75_AV fájlban ki lehet választani közvetlenül az érzékelő címét, csak ez a pár sor ki volt iktatva.
Ha itt a második sorban található értéket változtatom 1 és 0 között, akkor más-más érzékelőt olvas ki a program. Azt szerettem volna elérni ha ezt a kapcsolót a parsic vezérli, ezért kiegészítettem a programot pár sorral, most így néz ki. [/code]; Set SlaveADR movlw 1 banksel m0 btfss m0,2 movlw 0 ; can be 0 or 1 banksel iislaveadr movwf iislaveadr ; Set Clock Mode movlw B'00000001' ; Address 15 - control banksel iiadr movwf iiadr movlw B'00101000' ; Control byte, see Datasheet banksel iidata movwf iidata call PCF8583WriteByte ; Get current time ;call PCF8583ReadClock [code=c] De hiába változtatom a Parsicon belül M0.2 értékét, mindíg ugyanazt az érzékelőt olvassa ki a program. Hol rontottam el a dolgot?
Szia Csabi!
Csak most volt időm ismét foglalkozni a több LM75 érzékelő kiolvasásával. Amit javasoltál első lépésnek Idézet: azt sikerült megcsinálnom. Az LM75_I2C.inc fájlban három helyen kellett megváltoztatni a slave addresst.„Ha külön-külön mindkettőt helyesen huzalozva a cím átírásával ki tudod olvasni, akkor tovább léphetsz...” A következő lépésnek azt gondoltam hogy a slave address értékét az INC fájlban, a konstans szám helyett átírom egy a Parsic által előállított bájtra pl: S3. Így a továbbiakban a Parsicból tudnám vezérelni hogy melyik érzékelőt olvassa ki. Ehhez kellene további segítség.
Hello!
Idézet: „Azaz ha 0-255 ig vesz fel valami értéket” Tegyük hozzá, hogy amennyibe az AD modul, 8 bitre van beállítva. Mert ha 16 bitre, akkor 0..1023-ig. üdv! proli007
Így igaz... Itt is járd végig a létra fokait. Kezd villogókkal, futófényekkel, léptetőmotorozz, LCD kijelzőzz.. Szépen lassan mindere csináltál progit, tesztelted is, akkor majd lehet továbbvinni a dolgot.
Értem azt hiszem
Nemsoká veszek egy pár 877-est meg egy pár 628A-t és majd tesztelgetek van még most is egy jó pár dolog, ami nem világos a parcisban, de nehogy már egy hét alatt akarjam kitanulni az egészet
628-as PICnek nincs valódi analóg bemenet, sajnos ott nemtudod használni. 874-877 ig van, ezeknek is HA MEGNÉZED AZ ADATLAPOT
, láthatod, hogy az A portja analogként is használható. A többi nem. Tehát ha megadod, hogy ADC0 akkor tudni fogja a program, hogy az adott PIC ( azaz 877 ) 0. analog lábára gondolsz . Azaz az RA.0 lesz analog bemenet. Ezt jobban nemtudom elmagyarázni.A Komparátort sokféleképp/sokmindenre használhatod. Tulajdonképpen ugyan azt csinálod mint ha müv erősítővel játszanál. Az 51 egy beállított, tulajdonképp alapjelként fogható fel, amihez viszonyít. A másik bemenete amit figyel. Az ADC0 egy folyamatosan változó érték. A relációt gondolom érted. A példaprogi amit feltöltöttem egyértelmű.
ilyen ADC konvertert csak megadott lábakra lehet kötni, vagy akármelyik IO lábra? PL 16F628A-nál melyik lenne az? Ha bármelyik láb lehet, akkor hogy nevezem el, ha pl az RB.5-re akarom? Van az ADC0 bemenet a konverteren, és ez a bemenet a komparátoron. B ponton meg az 51-es érték. A komparátor honnan tudja hogy mi ez az 51? Onnan hogy az A ponton ADC0van, tehát a B pont is az ADC konverter értékét figyeli? ... Nem lett volna az ADC-nek egy bementet és kimenetet?...
Ha azt akarod, hogy az RA.0 analóg bemenet legyen, akkor lehúzod a DAT modult, és elnevezed ADC0-nak. Ha az RA.1-es lábat akarod analognak akkor ADC1.
Az intervallum minden esetben 0-5V ig értendő. Azaz ha 0-255 ig vesz fel valami értéket értelem szerűen ki kell számolnod mennyi mondjuk az 1 V. Az 1 az 5-nek az ötöd része, tehát a 255:5=51. Felhasználni úgy tudod például, ha leteszel egy Comparator modult. Ennek 2 bement lába van. Ráklikkelsz az egyikre, és megadod, hogy ADC0-át figyelje. Ráklikkelsz a másikra, megadod, hogy 51. Azután ráklikkelsz magára a comparator modulra, és kiválasztot a relációs jeleket. Ha azt akarod, hogy kapcsoljon fel egy led ha a bejövő jel 1V vagy annál nagyobb akkor a nagyobb vagy egyenlőt választod ki.
Újra nézegetem ezt az ADC konvertert, de nemvilágos...
Azért értem hogy ha elnevezem ADC0-nak, és a ,,bemenetet,,?... elnevezem RA.0-nak, akkor ha oda arra a lábra kötök egy értéket, mondjuk 4V, és akkor mi van? .... Honnan tudom, hogy mennyi az az érték? Mondjuk azt akarom, hogy egy LED kivilágítson egy kimeneten, ha az a bemenet kap 0,5V-ot. Honnan tudjam hogy ez az ADC konverteren milyen érték lesz? De még ha tudnám is, hogy ha oda 0,5V-ot kötök, akkor ott az érték 8bitben 16 lesz, és ezzel mit kezdek? ah eléri a 16-os értéket, akkor valahol egy kimeneten meg kell hogy jelenjen egy LOG.1 érték. Ez lesz az ADC jobb oldalán lévő ,,kimenet,,? Le tudnád rajzolni azt, hogy mondjuk, 0,5V-tól bekapcsoljon egy LED (egy kimenet aktív legyen) és 4V-tól inaktív egy kimenet..
Szia a sleep modullal, de benne van a sugóban de leforditottam a guglival azért remélem érthetö
"Az ilyen tárgyú el lehet mozgatni a mikrokontroller az alvó üzemmódba. Ha az IN-bemenet fekszik a magas szintű, akkor az alvó üzemmód be van kapcsolva, a program leáll és az oszcillátor ki van kapcsolva. Visszaállítani a normális funkció 2 lehetőség áll rendelkezésre. 1. pozitív él az Rb0-bemenet 2. módosítására szintet RB4, RB5, Bb6 ... RB7"
Tudnátok segíteni, hogy hogy tudom megvalósítani a sleep üzemmódot PIC16F628 estében? Előre is köszönöm a segítséget.
a futófény és a villogó, az 877-esre van, azt meg nem tudom kipróbálni, mivel olyanom nincs, de amit Te módosítottál az én rajzomon, azt beleégettem, az ,,működött,,(nem sorba, és csak 2 LED villogott, de azért mert nem jól volt megírva a kimenetek)
Most még mindíg nem közölted , hogy mentek a programjaim?
|
Bejelentkezés
Hirdetés |


. Égesd bele próbáld ki. 