Fórum témák

» Több friss téma
Fórum » Folyamatábrás mikrokontroller programozás Flowcode-dal
Lapozás: OK   209 / 360
(#) watt válasza Baxi hozzászólására (») Okt 27, 2014 /
 
Í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
(#) kokozo válasza Tertech hozzászólására (») 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.

kép.JPG
    
(#) Baxi válasza kkrisz75 hozzászólására (») Okt 27, 2014 /
 
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!!
(#) Baxi válasza watt hozzászólására (») Okt 27, 2014 /
 
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
(#) kokozo válasza Baxi hozzászólására (») 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?
(#) Baxi válasza kokozo hozzászólására (») Okt 27, 2014 /
 
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.
(#) Baxi válasza kokozo hozzászólására (») Okt 27, 2014 /
 
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

INTERRUPT.fcf
    
(#) kokozo válasza Baxi hozzászólására (») 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.
(#) watt válasza Baxi hozzászólására (») Okt 27, 2014 /
 
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
(#) kkrisz75 válasza Baxi hozzászólására (») 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.
(#) Baxi válasza watt hozzászólására (») Okt 27, 2014 /
 
Hi
Mért is nyitna ki?
(#) Baxi válasza kkrisz75 hozzászólására (») Okt 27, 2014 /
 
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
(#) Tertech válasza kokozo hozzászólására (») Okt 27, 2014 /
 
Köszönöm az instrukciót....
javítom..
(#) kkrisz75 válasza Baxi hozzászólására (») 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
(#) ktamas66 válasza Baxi hozzászólására (») 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ő?).
(#) watt válasza Baxi hozzászólására (») Okt 27, 2014 /
 
Azt írtad, 20 felett lezár, alatta kinyit. Ha nem jól értettem, akkor elnézést!
(#) Baxi válasza watt hozzászólására (») Okt 27, 2014 /
 
lehet hogy Én írtam rosszul, bocs!
(#) Baxi válasza ktamas66 hozzászólására (») Okt 27, 2014 /
 
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.
(#) Baxi válasza kkrisz75 hozzászólására (») Okt 27, 2014 /
 
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!

kp_zar.fcf
    
(#) kkrisz75 válasza (Felhasználó 15355) hozzászólására (») Okt 27, 2014 /
 
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
(#) kkrisz75 válasza (Felhasználó 15355) hozzászólására (») 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
(#) watt válasza kkrisz75 hozzászólására (») Okt 28, 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
(#) Baxi válasza (Felhasználó 15355) hozzászólására (») 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!!

kp_zar.fcf
    
(#) kkrisz75 válasza watt hozzászólására (») Okt 28, 2014 /
 
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.
(#) watt válasza kkrisz75 hozzászólására (») Okt 28, 2014 /
 
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.
(#) kkrisz75 válasza watt hozzászólására (») Okt 28, 2014 /
 
igen, így vannak kötve. Ez volt logikus is
(#) Tertech hozzászólása Okt 30, 2014 /
 
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 ??
(#) Tertech hozzászólása Okt 30, 2014 /
 
Vagy, a program hibás...!
Vagy valamit nagyon nem értek....
(#) Tertech válasza Tertech hozzászólására (») Okt 30, 2014 /
 
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..
(#) kokozo válasza Tertech hozzászólására (») Okt 30, 2014 /
 
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
Következő: »»   209 / 360
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