Fórum témák
» Több friss téma |
Írd le, mi az elképzelésed, hogyan szeretnéd, hogy 60Hz felett váltson a kimenet!?
Azt meg se merem kérdezni, hogy arra gondoltál, hogy mi lesz városban egy dugóban? Főleg, hogy pont ott jönne jól, ha zárva lenne az ajtó... A hozzászólás módosítva: Okt 27, 2014
A bekarikázott rész a rossz. fő ciklusból nem célszerű kiugrani mert akkor leáll a pic.. Kell még egy kimenetet csinálni ami engedélyezi és leállítja a meghajtást.
Hi
Én is gondoltam rá a pontos freki mérésre, de a timer-el meglehet oldani külső órajellel akkor miért ne . Az a lényeg hogy mihelyst mozgásba van a kocsi zárjon le. Ez 20km/h sebességnél 60Hz-et jelent a sebességjeladótól. A timer előosztását addig állítottam hogy ilyen kis frekin is túlcsorduljon. A gondom a TMR0 kikapcsolása volt a megszakításban, de ezt jelezték is, és egy kisebb rávezetés után sikerült rájönnöm a megoldásra. Jelen esetben most így üzemel. "Padon" müködik nincs random zárásom. Kocsira feltöltve se volt vele gond Köszönet és hála a Mindenkinek aki segített!!
Hi
Sikerült, mint írtam már kkrisz75-nek. A dugós kérdést nem nagyon értem. Most úgy működik a kegyere hogy ha elindul a kocsi lezárja a kp. zárat. Amint megállok s mondjuk kiszáll valaki és megint elindulok vele akkor lezár megint. Az ajtó nyitás aktiválja újra a kp. zárás "rutint". Attól meg tartok hogy álló helyzetben zárja le. Előbb utóbb bent maradna a kulcs a gyújtáskapcsolóba járó motorral, Én meg kivül lennék rajta A hozzászólás módosítva: Okt 27, 2014
Csak egy kérdés.. Mi van akkor ha 1-el mész és pont tmr0 belépés előtt vált a jeladó? egyből lezár nem?
Valószínű hogy igen. Ezért akartam tiltani ha megvan a zárás. De azt a...... . Na okoskodok egy kicsit még a prg-én.
Na letiltottam a TMR0-át ha megtörtént a zárás. A tiltást illetve az engedélyezést nem interruptban csináltam még is kaptam: "never get called " figyelmeztetést fordításkor.
Látok benne valami hibát? A hozzászólás módosítva: Okt 27, 2014
Őszintén megmondom nem is értem, hogy hogy működhet ez jól, és mitől zár be 20 fölött.. ez akkor zár be amikor ő akar, és csak a véletlenen múlik mikor.. Sőt azt se értem minek kell megszakításból figyelni egy több másodpercig tartó ajtó nyitást, amikor abszolút nem lényeges, hogy milyen gyorsan érzékeli a pic a nyitást, sőt még a zárási idő se fontos..
Enyém lehet bonyolultabbnak tűnik, de legalább azt csinálja amit kell.
Ahogy olvasom még sem sikerült, de azért ne add fel!
Az ajtók lezárására pesten azért van szükség, mert piros lámpánál kiemelnek a kocsiból valamit, vagy valakit! Ha 20 alá megy a sebesség és kinyit, annak nem sok értelmét látom. Én úgy csinálnám (elvonatkoztatva a feladat értelmétől és a feladatra koncentrálva), hogy egy számlálót növelnék a külső impulzusokkal, megszakításban, majd másodpercenként megnézném, hogy 60-nál több jött e be. A másodperces időzítést csinálnám Timerből és amikor megszakít, akkor lenne a vizsgálat (jelenlegi számláló értékét kivonni az előzőből, jelenlegi értéket eltárolni, stb.). Ennyi... ( CCP Capture móddal még pontosabb és egyszerűbb lenne, csak bonyolultabb megérteni a folyamatot és a flowcode nem is nagyon támogatja, de ide a számlálós, timeres is elég) A hozzászólás módosítva: Okt 27, 2014
Én ezt így oldanám meg.
A tmr2 1000Hz. És a hozzá rendelt makróban 250 ig számol vagyis negyed másodpercenként ellenőriz. (250ms) Az rb0 porton figyeli a jeladótól jövő jeleket és megszámolja mennyi. A fő programban ciklusban figyeli a kapcsolót ami az ajtó nyitást jelenti. Ez után ha a timer makróban eltelt a negyed másodperc akkor, kitér és feltétel szerint ha az rb porton 15 jel vagy annál több bejött-e. (60 Hz az 1 mp alatt 60 Jel, 500ms alatt(fél másodperc) 30 jel, 250ms vagyis negyed másdoperc alatt 15 jel) Ha igen vagyis a kocsi 20km/h val megy eldönti a kapcsoló állása alapján nyitva van-e a kocsi, ha igen akkor kitér és lezárja C1 porton (leddel jelzi és világít) majd. Tovább fut és a c1 portot nullázza. (központiknak általában kell egy kis idő, de nem kell folyamatos jel...ez zár függő, hogy a második C1 portos lezárás kell-e. Emellett minden számláló, timer, ellenőrzés, és jel is kinullázza és a folyamat kezdődik elölről. A következő negyed másodpercnél ha az ajtó már zárva van, eloltja a ledet. És a folyamat ismétlődik mind addig míg ki nem nyitod... A kapcsolót teszt miatt kicseréltem pillanatnyiról folyamatosra, a futás teszt miatt. Nem teszteltem így külön, csak kiemeltem az én központi zár vezérlőmből az alapot. Ha az működik, ennek is illene.
Köszönöm szépen. Kipróbálom majd ezt a megoldást.
Lenne egy kérdésem a jeladó illetve a kapcsoló is az RB0-án van? Ha az enyém nem működik átrakom a bemenő jelet az RB0INT-re. Nem sok kedvem van új nyákot csinálni, de kitalálok majd valamit A hozzászólás módosítva: Okt 27, 2014
Melóhelyen vagyok nem tudok sokat írni.
Ezt a kis programot elteszed. Veszel egy szirénát, és egy hestore os rádio modult ami kimenő jeleket ad távirányító gombnyomásra. Kis alakítással máris.van egy riasztód, akár lakás akár kocsi. Sőt figyeli a sebességet és akár pánik kapcsolót is ráköthetsz. Ha a pic mindig megy akkor a motor járást, és az egyhelyben állást is lehet figyelni, sőt az öv be kapcsolását is. Ennek függvényábe zár le vagy nyit ki a zár. Ja és riaszt is... A programja nem publikus. De nem nehéz kitalálni. Viszont olcsóbb venni egyet. boltit... én nem árulok, mielött megköveznek. A hozzászólás módosítva: Okt 27, 2014
Az én autómban ez benne van, és úgy működik, ahogy leírtad. Plusz 2 dolog: ha leveszem a gyújtást kinyitja a zárat (így ha nincs benne kulcs nem is lehet evvel bezárni), belül van egy gomb, amivel zárhatok, nyithatok és kikapcsolhatom a funkciót. Gondolom, valahol be van kötve a baleset érzékelőhöz is (gyorsulásmérő?).
Azt írtad, 20 felett lezár, alatta kinyit. Ha nem jól értettem, akkor elnézést!
A gyárija maradt rajta. Gondolom a gyári vezérlő tudja hogy ha nyílnak a lufik akkor nyitja az ajtókat. A gyújtást nem akarom figyeltetni, de jó ötlet . Most jelenleg a gyújtásról kapja a tápot így remélem nem lesz kulcs bezárás sem.
Hi
Kész, átírtam amit adtál. Valamiért vinnyogott a fordító C kod miatt, de hogy hol talált benne . Mivel a nyák már készen van így maradt az RB0INT az ajtónyitásra. A 15 elagazás azaz a 60Hz nak az 1/4-ede nem akkor jó lenni. Gondolom valami vihar van az óra jelel, de kicsit állítgatva meglett az 60Hz-es zárásnak a "1/4" feltétele. Köszönöm a tippet!
SPI kommunikáció.
meló közbe eszembe ötlött, hogy a mester kiválasztja egy i/o kimenetem melyik szolgával kommunikáljon. Én esetembe ez egy szolga de igazából mindegy. Amikor a kimenetre magasat ad a tovább futó program inicializál, adatot fogad, uninicializák.(szebben nem tudom) A szolga közbe tmr megszakításhoz rendelve figyeli a választó port állását. Ha billen akkor a.fő programban egy feltételes elágazásnál, a init, küld, uninit felé halad a program. De a két program elcsúszik egymástól. Mi lenne ha a figyelést egy rb0int ben és megszakításhoz rendelt makróbanb tenném meg, amine a küldést is bele tenném. Így bárhol tart a program, lefutna a küldés, és nem kellene végig szaladni a ciklusnak mire oda ér a küldésrészhez. Lassítana sokat a program futásán, vagy semmit nem változna, mivel a küldés igyis úgyis annyi idő amennyi. Elmélet még csak, még nem vagyok otthon.de nehézkes mobilon ez a forummotor, akad, ugrál a nagyítás. A hozzászólás módosítva: Okt 27, 2014
Itt is csak annyi lenne a feladat, hogy fogadja az adatokat. És hardveresen akarom használni. Sck, sdi,sdo. De az adatlap szerint az SS láb RA5, hiába kötöm össze a másik pic SS lábával, semmi nem történik. Bármilyen verzióban állítom be a szolgát. Lásd privát üzenet.
A hozzászólás módosítva: Okt 27, 2014
Pedig ennek működnie kell, ha megfelelően állítod be a regisztereket! az SPI egy holt egyszerű léptető regiszter. Ami az egyiken kilép az a másikon belép. Szépen helyet cserélnek a bitek a két SSPBUF-ban. Az átvitelt csak el kell indítani a Masternél, a többi magától megy a 8 bit átviteléig, azaz nem foglal erőforrást, nem kell rá várni. Az átvitel végét megszakítás is követheti (ha úgy van be állítva), amikor ki lehet vinni a következő bájtot, amíg el nem fogy. A Slave-nél szintén automatikusan vannak fogadva a bitek (hardveres), szintén okozhat megszakítást a puffer megtelése és szintén ki lehet kapdosni a pufferből az adatokat ilyenkor, hogy jöhessen a következő. Ennek lekezelése néhány usec. Ha nem üríted a puffert, az túlcsordulást okoz, ez is jelezve van (SSPOV) és megszakítást is okozhat, hogy kezelni lehessen pollingozás nélkül.
A SLAVE szinkron átvitelhez be kell állítani az SSPCON.SSPEN bitet, valamint a SSPM<3:0>:0100 módot kell választani (SPI Slave mode, clock = SCK pin, SS pin control enabled). A MASTER-nél hasonlóan, csak az SSPM<3:0>: biteknél valamelyik SPI MASTER módot kell kiválasztani. (ajánlott először egy lassabbal próbálkozni, pl. TMR2/2) Az ˇSSˇ csak Slave esetén működik, azaz bemenet (ez jól látható a rajzon az adatlapban), MASTER módban neked kell egy lábat kiválasztani vezérlőnek és kiadni a jelet az adás előtt, annak az egy Slave-nek, (ha több van), amelyikhez beszélni akarsz. Ez tök logikus, mert egy vezérlő láb a Master esetében kevés lehet... A hozzászólás módosítva: Okt 28, 2014
Kész, este 11-ig elvoltam vele
Így most már tényleg pontosan ott zár ahol kell. Köszönöm szépen mindenkinek aki segített!!
Sanszos, hogy hardveresen is félre értettem valamit az adatlapban.
A mester pic1 kér adatot a szolga pic2-től. Fosc/64 sebességgel. SS lábat mind a kettőn SS(RA5)-re tettem. Sanszos, hogy ezért állt ha így dugtam össze. Ma már nincs időm, de a mester RB0-ás I/O lábát amit választásra használok, a szolga SS lábára kellene tennem? (Ha jól értem) A tőbbi sck,sdi,sdo össze kötve. (Amire nem jöttem rá mags szintű angolom alapján, hogy a mester sdi (adat be) a szolga sdo(adat ki) lábára, vagy sdi, az sdi vel van összekötve.( Logikusan nekem az előbbi értelemszerű) Az órajel, sck stimmel.
Igen, bármelyik lábat választhatod, akár az SS-t is, ha azt lehet kimenetnek használni(általában lehet, mert a Master mód nem foglalja le!)) ami ebben az esetben nem SS, hanem Digit IO, kimenetnek konfigolva. Adás előtt kell 0-ba húzni, hogy a szolga SS-ét aktiválja...
Idézet: „A tőbbi sck,sdi,sdo össze kötve.” Remélni tudom, hogy az sck-sck, sdi<-sdo, sdo->sdi formában lesznek összekötve.
igen, így vannak kötve. Ez volt logikus is
Sziasztok!
Elkészült a tekercselő hardvere is. Hát élesben más a helyzet.... lenne pár kérdésem, a potenciométert kell kalibrálni? Nem azt mutatja az lcd-n amit a flowcódban szimulációnál? Ez gond mert nem tudom pontosan az értékeket beállítani. A másik hiba amit észleltem, ha a folyamat a lépést indító szenzoron áll meg, akkor tovább pörög a számlálás. Ez nem jó mert nem a valós értéket mutatja majd. Valakinek valami javaslata esetleg ??
Hát igen a progi még mindíg hibás, közben rájöttem, új karakter kiírása után nincs lcd clear, így visszamarad az előzőből.
Viszont nem tudom hová tegyem..
Szia!
Ne lcd cleart használj hanem ugorj a kurzorral oda ahová írni akarsz és ott rakj be annyi szóközt amennyi majd a kiírandó szöveg hossza lesz (ez üressé teszi azt a területet) ezután kulzor vissza az eredeti pozicióba és kiírás. A középső poti értéke a nem jó? mert ott a többitől ellentétben a VREf nem VDD re van állítva ezért lehet hogy az rossz értékeket mutat.( középső poti kit tulajdonságok) A hozzászólás módosítva: Okt 30, 2014
|
Bejelentkezés
Hirdetés |