Fórum témák
» Több friss téma |
Sziasztok!
Problémám csakis software jellegű, pontosabban a programozásban kérném segítségeteket. Egy olyan programot szeretnék írni egy 16F84A-hoz, aminek csak két dolgot kell tudnia! Ha megnyomom a B2-vel jelölt gombot, ég egy LED, és ha elengedem is égve marad. Eddig nincs probléma. Viszont HA ÚJRA UGYAN AZT a gombot megnyomom el kéne hogy aludjon a LED, és ha elengedem, mindaddig nem szabad hogy újra égjen, míg meg nem nyomom újból. Kezdő vagyok még a PIC programozás terén, csak az alapdolgok mennek, szóval tényleg csak a bsf/bcf meg a mov utasítások. Megkérnék minden hozzászólót, értelmesen, és egyszerűen fogalmazzon. Külön köszönet érte. A programot a Microchip MPLAB 7.21 nevű fordítójában írom. Én a következő utasítások variálásával akarom megoldani, vagy ilyesmi módon:
Amit tudni kell: A nyomógombgomb hozzá tartozó portjára van kiküldve a GND, a nyomógomb másik fele csatlakozik az RTCC-re, és egy 2k2 ellenálláson keresztül a TÁPra (+5V). Ha megnyomom a gombot az RTCC-n (PORTA,4) GND lép fel, ha nincs lenyomva a gomb, TÁP van az RTCC bemeneten. tehát egyszerűen ha a gombot lenyomom a lenyomva címkére ugrik a progi:
Várok minden ötletet hogyan lehetne megoldani ezt az egyszerű kapcsolást. Köszönöm előre is mindenki hozzászólását, ötletét. deguss
Hali!
Nem rossz, amit írtál, sőt! Már majdnem készen is volt a kis programod :yes: Most akkor beírom, hogy mi az én verzióm, remélem, érteni fogod START kezd bsf PORTB,7 gomb1 btfss PORTA,4 goto gomb1 bcf PORTB,7 gomb2 btfss PORTA,4 goto gomb2 goto kezd És igazából ennyi lenne az egész program.
Szia Norberto!
Köszi szépen a javaslatot, de a progi sajnos így még nem működik, mert alapból világít fele fényerővel (egyszer bsf, és bcf), és amíg nyomom addig teljes erővel világít, ha elengedem meg megint fele fényerővel, és akrárhányszor nyomom le, mindig ugyan azt csinálja. Lenne egy ötletem mi lehet a megoldás, de tényleg csak ötlet. Szóval a gombot nem tudjuk mi olyan rövid időre lenyomni hogy a program ne fusson le vagy 1000szer vagy akár 10000-szer is. És amikor elengedjük a gombot, egyből elolja a lámpát, a te programod szerint, és mivel nincs lenyomva újból kigyújtya. Ezért látjuk a csökkentett fényerőt. Nekem az lenne az ötletem hogy regiszterekben kéne tárolni a gombok állapotát, és ezt mindig ellenőrizni. Szóval ha megnyomtam a gombot és elengedtem REG1=1. Ha újra megnyomom és a REG1=1 akkor jön hogy eloltja a lámpát, ha pedig REG1=0 akkor kigyújtya. És ezt ismételgeti. Viszont nem tudom hogyan lehetne megvalósítani. Az oké ahogy írok bele: movlw .1 és movwf REG1... de amikor kiolvasom ugye nincs olyan hogy if(REG1==0) vagy ilyesmi hanem csak az incfsz meg a decfsz... Szóval ha valaki tudna szolgálni egy kódrészlettel, csak annyit hogy hogyan tudom egy változó tartalmát, ill. értékét lekérdezni, annak örülnék. Természetesen NEM azt várom el hogy valaki megírja a programot helyettem, de ha valakinek van ötlete nagyon szívesen fogadom. Köszi előre is. deguss
Hi!
Én így oldanám meg:
Remélem nem rondítja össze a sorokat... Röviden. A program induláskor 1-et ad az RB7-es kimeneten. Ha lenyumjuk a gombot, átáll 0-ra, majd "várakozik" egészen addíg, amíg a gombot elengedjük. Utána újra figyeli a bemenet állapotát. Ha megint lenyomjuk a gombot az RB7-re újra 1-et ír, és ismét várakozik a gomb elengedésére. És minden kezdődik előről ...
Szia kaninjo!
Köszi szépen, a program majdnem tökéletes, egyetlen szépséghibája még hogy mikor újra be akarom kapcsolni, háromszor kell megnyomni, de valóban addig ég még újra nem nyomom meg. Szóval most azon filózok mit lehetne rajta módosítani hogy tökéletes legyen. Mindenesetre nagyon köszönöm ötleted. u.i.: lehet hogy a kommentet elírtad a gomb1-es résznél, mert a goto gom1 akkor teljesedik be, ha le van nyomva!
Bocsi kaninjo, tévedtem!
A programod kifogástalan, ne haragudj. A probléma ott van hogy nem egyszerű úgy megnyomni a gombot hogy ne érintkezzen kétszer. Szóval ha hirtelen mozdulattal nyomom meg a gombot, tökéletesen működik! Csak tényleg az a problémám hogy többször érintkezik nagyon nagyon rövid időn belül a gomb, de ez mellékes A pontot megkapod, de ha van ötleted mivel lehetne kiküszübölni az említett problémát, megköszönném. Üdvözlettel: deguss
Szia!
Szerintem "pergés" mentesíteni kellene a kapcsolást. Van egy kapcsolásom hozzá itt: http:attilapapp.uw.hu Ezen belül FAVORITES,egyéb(kapcsolások),LCD modul leírás. A 3.ábrán láthatsz egy lehetséges megoldást. Nekem ez a tippem További programozásokhoz sok sikert és kitartást kívánok! Üdv.appee
Köszi szépen Pappee, biztos működne, csak így utólag nem tudom nem hiszem hogy egyszerű lenne beleépíteni a három nyomógombhoz a "pergésgátlót" ahogy az itt a HE-n is le van írva Topi cikkében.
De köszönöm, a következő projektemnél tudni fogom . Üdv: deguss
Szívesen!
Egy lehetséges megoldás: teszünk egy párszor 10, esetleg 100-200 msec-os várakozást a progiba, mielőtt újra figyelné a kapcsoló állását. valami ilyesmit:
Sziasztok!
Ha már létrejött egy ilyen téma is, nem nyitok újat egy hasonlónak Van egy elég szép nagy kijelzőm, biztos sokat is tud. Típusszáma: Powertip PG240128BRS-ATA-B Tehát egy 240x128-as kijelzővel állunk szembe. A gondom az, hogy nem igazán értem a működését. A másik gond az időzítés...azt hogyan oldom meg, ha PIC-et használok? Mert ugye ha 4MHz-es kristályt teszek a PIC-re (16F873), akkor egy órajelciklus 0,25usec lesz. Tehát gondolom szoftveres időzítést kellene csinálnom...és azt hogy? Miképp működik? A másik gond pedig, hogy maga az LCD hogyan működik? Milyen parancsokat kell írni neki, hova? Hogyan tudok egy meghatározott helyzetű pontot kijelölni, és kigyújtani? Marhára nem vágom ennek a belső működését Nagyon megköszönném, ha valaki segítene Itt az LCD-hez az elég szegényes GYÁRI leírás: [link=http://users.atw.hu/pupak/LCD.pdf]http://users.atw.hu/pupak/LCD.pdf[/link]
Sziasztok!
nem akartam új topicot nyitni , de szerintem idevág a kérdésem.Adott ez az áramkör az lenne a kérdésem,hogy mit kell a programban átírni ahhoz hogy például a fénypont jobbra futásához a gombot folyamatosan nyomni kelljen mikor elengedem egyik led se világitson.Tehát a fény futása jobbra ill balra és középről csakis addig működjön míg tartom az adott gombot benyomva.Mondjuk a progizással gyerekcipőben járok, de ha nem bonyi és valaki segít azt megköszönném...
Hali
ahogy elnézem, az utolsó előtti oldalon lévő táblázat minden fontos adatot leír. az már biztos, hogy ez tud grafikus és szöveges módban is írni. A grafikus módról van elképzelésem: Az "address pointer" azt állítja be, hogy hol akarsz módosítani. elvileg 8-as blokkokban vannak a pontok,de ebben nem vagyok biztos. Kísérletezni kell. Tehát írsz az lcd bemeneteire: 00100100; adat1; adat2. az adatok a pozíciót adja meg. úgy vettem ki a doksiból, egy 16bites cím a kijelző bal felső sarkától, de lehet, hogy eyik az oszlop, másik a sor. Itt is csak kísérletezés. Aztán a "bit set"-tel állítod át a pontot. Ilyenkor a következő formátum: 1111ABBB Ha A=1, akkor kigyújt, ha A=0 akkor elolt. BBB pedig a pont sorszáma binárisan az "adress pointer"-rel beállított blokkban. Szerintem ennyi. Sok sikert!
milyen technológiát ajánlotok a következő probléma legegyszerűbb és leggyorsabb megoldására? :
egy időzítő szertnék készíteni ami VB szoftverből kap egy text filet ami tartalmazza az indításokat (melyik eszközt mikor, meddig, milyen periódus, stb) de ez a text file nem állandó. Kényem kedvem szerint akár napontam akarom a sajátprogimból frissíteni. Viszont számítógép nélkül is működjön a vezérlés. Tehát PIC / AVR vagy hasonló sarlatánság a megoldás gondolom. És USB s adatcserével szeretném megvalósítani. Előre is köszönöm az útbaigazítást!
pic+eeprom,(eeprom csak akkor kell ha sok az adat és nem fér a pic belső eepromjába, pl ha egy évre előre beállítod a dolgokat )
jól megírt progi, pontos kvarc (óra miatt) USBhez ft232 chip vagy az Alacsony költségű digitális oszcilloszkóp topikban felfedezett usb uart converter AVR, mivel elég bonyi igazi usb cuccot kreálni, így meg lesz egy virtuális soros portod. Azt a "text"et meg nem ártana átkodoltatni a progival mondjuk valami1*űbb parancsokká, pl nem: 10:00 lámpa bekapcs 1percre, hanem: 600-1-b. . . . 601-1-k. ez így összesen 8 byte lenne, (bár még ez is csökkenthető). bár godolom te se akartad szépen fogalmazott mondatokkal vezérelni...
Sziasztok!Segítségeteket szeretném kérni egy már meglévő program módosításában.Ez egy riasztó progia és azt szeretném elérni, hogy a rajta lévő két reléből valamelyiket (ha lehet a másodika) riasztás közben bekapcsolla és úgy is maradjon amíg nem inaktiválom.Most az első relé kapcsol be az 1. és a 2. telefonhívás között 35 mp-re.Nagyon hálás lennék ha valaki tudna benne segíteni.A progi a következő:
Segítségeteket előre is köszönöm.
Aztán mit csináljunk egy hexa állománnyal? Lehetne segíteni a forráskódban, de nem tudom, minek rakja fel mindenki a hex-et, azzal csak nagyon muszájból, és akkor is úgy-ahogy, dolgozik az ember.
Ezt ha valaki megfejti szerintem szavazz meg neki 100 pontot, ne 50-et.
Először egy használható asm kéne belőle, és abba beletúrni... ha ez nem járható, akkor a kacsolási rajz is kéne mindenképpen a hardware környezetről. Aztán ha ez sem megy, az adott kapcsirajz és PIC hardwarekörnyezet-re egy új progi... Én visszafordítottam Asm-re, de így iszonyatosan nehéz valamit is módosítani rajta... Ha az eredeti asm megvan az többet segítene... Ha ezek sem mennek, barkácsolj bele logikai IC-ből azt a kiegészítést amit akarsz, vagy egy másik pic-cel pl 12f675- tel ha nem akarsz egy teljesen új riasztóprogit...
Bocsi de, nem vagyok ott a progizásban.Azt hiszem ez már jó lesz.Ha tévednék akkor bocsi.
Előre is köszi a fáradozást!
Sziasztok!
Van egy Parallax PING ultrahang szenzorom, és még régen találtam hozzá egy elvileg működő példaprogramot PIC-hez. Elméletileg minden stimmel a kódban, és mégis van valami ami miatt nem változik a TMR0 tartalma. Nem tudom, hogy a PING szenzor hibásodhatott e meg, bár ennek csekély valószínűségét látom. A szenzor LED-je másodpercentként villog, gondolom ez azt jelenti, hogy működik. A példaprogramot mellékeltem. Remélem valakinek van valami jó ötlete. Üdv.: ssdroon30 |
Bejelentkezés
Hirdetés |