Fórum témák
» Több friss téma |
Az nem jó
![]()
Pedig mukodik az animacio amit irtam bele......
Es a resetlabat(mclr) felhvanhuzva most nezem .....
Az animáció ( szimuláció ) nem foglalkozik a hardverbeállításokkal ( config-al )
![]() szerk: vagy animáció alatt valami LED-es fényjátékot értettél ![]() A hozzászólás módosítva: Okt 16, 2016
Naa van felhuzó ellenállás
![]() ![]() Szerk.:
Lassú a fényjáték !!! Másik sajnos nem oldotta meg a problémám
A hozzászólás módosítva: Okt 16, 2016
Ha megy a fényjáték, akkor a config bitek nagyjából biztos rendben vannak ( belső oszc. jó beállítás, MCLR rendben !)
![]() A programodban hol állítod a jatek változót ( alapból!), illetve előtte milyen jatekx fv-t indítottál el ?!
Amikor deklarálom a változot 1 értéket kap pl az 1 játék kodja:
Én még az RE1 es port belső felhúzó ellenállásáról érdeklődnék.... Lehet hogy alapból fent van a bemeneted és dzt szeretnéd a nyomógombal felhúzni? Mert így nem sok változást okoz a gomb nyomogatás. Ezért írza nekek korábban talán Attika, hogy test felé húzzon a nyomógomb.
A hozzászólás módosítva: Okt 16, 2016
Szerintem próbáld ki a következőt:
Írd az elejére és ha ez így megy, akkor keresd meg a programodban a hibát, de ha így mindig csak egy-egy részletet teszel fel, akkor ezt nem igazán jó mazsolázni ![]() Ez egyébként általában is igaz a programírásra: a programot érdemes részletekben megírni és kipróbálgatni, nem írsz egy "nagyot" és utána csak azt tudod, hogy nem jó ![]() ![]() A hozzászólás módosítva: Okt 16, 2016
Valóban így van. Ha egyszerre ezernyi hi,alehetőséget visz be , akkor nagyon nehéz megtalálni mi nem jó.
Semmit se csinál De ha PORTE.RE1 ---> 0 írom villagit és ha nyomogatom a gombot akor se alszik ki semmi A hozzászólás módosítva: Okt 16, 2016
A LED-ek mátrixban vannak? Ha igen, akkor engedélyezd a megfelelő oszlopot bittel, ne függvénnyel, a kimenetek legyenek beállítva, valahogy így:
A while ugye jól volt írva, be is írtad a kódot, nem csak papíron próbáltad ![]() szerk.: a konfiguráció, ANSEL, TRIS persze előtte legyenek beállítva !!! A hozzászólás módosítva: Okt 16, 2016
Na most ebből a részletből azt látom, hogy ha RE1 egyenlő 1 el akkor RB 6-7 lábon bekapcsolja a ledet. De ha RE1 egyenlő 0 akkor mi kapcsolja ki? Esetleg ureskocka() fügfényben van ami kikapcsolja?
Akkor kapcsold be előtte fixen és próbáld ki, hogy "tuti-e", azaz tudod-e kapcsolni LATB.RB7-et és LATB.RB6-ot, majd írd be a while-os részt a shift.regiszter külön vezérlése nélkül!
Még az "oszlopok(1)' függvény tartalma érdekes lehet. Előfordulhat, hogy benne ragad a program, ha abban is van egy végtelen while ciklus.
A hozzászólás módosítva: Okt 16, 2016
Müködik !!
Forasztási baj volt. Adc _read ugy kell hogy : ANSELE.ANSB1=1; ADC_READ(4) És ennyi??
Én így gondolom:
De ha ezek megvoltak már akkor nem szóltam. bocs, ha nem jó a bit név nem MirkoC-ztem sokat
Én mág használnék pergésmentesítést is:
Ekkor, csak 1szer fut le a programodban a feltétel. Legalább is, ha 1szer nyomod meg a gombot.. Amúgy a gomb kezelésére használt bemenetet 1db 10K-s ellenállással húzd fel tápra, majd mikor gombot megnyomod, akkor a alacsony szintet vizsgáld. (5v-ot 10k-n keresztül lehúzod test-re a gombbal) Te most fordítva csinálod.. Így lenne jó:
Persze az is jó amit te csinálsz, de lehetnek zavarok amire majd automatizálja magát ![]() A hozzászólás módosítva: Okt 16, 2016
Sajnos ezzel nem tudod teljes mértékben megszüntetni a prell-t ( ha ezt akartad ?!), egyébként az ilyen megoldás azért sem jó, mert "blokkolja" a végrehajtást: nem jelentkezik a nyomás eredménye, az ügyfél meg "legyilkolja" a gombot
![]()
Általában egy változó értékét szokták egyenüővé tenni Adc_Read(x) értékével és utána ezel a vál4ozóval dolgoznak tovább.
De, azt azért tegyük hozzá, hogy első nekifutásra szerintem mindenki, while-el próbál/próbált prell mentesíteni.
De erre ugye legmegfelelőbb, a megszakítás, ahol ugye lehet IOC, vagy INT pin-el, de így a megszakításban szükség lehet várakozásra, és ugye megszakításba nem szoktunk, nagyon delay-t dobálni. (szerintem) A legjobb módszer, (kriszrap ez neked is hasznos lehet), pl 20 ms timer minden megszakításba nézzük, hogy megnyomták-e vagy nem, és ha már megnyomták, még mindig nyomva van vagy elengedték. A hozzászólás módosítva: Okt 16, 2016
"Sima" while-al nem tudsz pergésmentesíteni, mert az első rugalmas érintkezéskor már "átmegy" az utasításon a proci, a kezdők sima késleltetést szoktak használni, a gyakorlottabbak pl. eseményszámolást ( hányszor ment át a hurkon a NY lenyomása után!), a "profik" meg megszakításból kezelik le! !
MikroC -ben pergés mentesítésre van beépített fügvény. De ha sokat használunk belőle gorsan megeszi a memóriát.
Koszonom mindenki segitseget
![]() Annyi meg a kerdesem ha sorra 25 mA folyhat 25 ledre ti milyen elvel keszitenettek el az fenyjatekokat ugy hogy a legjobb fenyerot adjanak a ledek?? ( rem erthetoen irtam nem az erossegem ![]()
![]()
A profik nem kezelnek prellt megszakításból, mert tudják, hogy lenyomáskor is / felengedéskor is ugyan úgy pörög mindkét állapot, és képtelenség abból bármit normálisan hámozni ki. Nem nagyobb segítség az interrupt, mint a főciklusból aszinkron állapotgépet pörgetni, ami elteszi az előző stabil állapotot, és számolja, hogy kvarchoz igazított időzítés szerint már legalább 50 msec ideje nem fordult elő a régi állapot, csak az új - na akkor van váltás. Kisebb pic-eken, ahol nem lehet - vagy nem érdemes - gép órát kidolgozni, egyszerűen csak hasra ütni, hogy az az 50 msec kb hány főciklus lefutás lesz, és azt használni helyette.
Így is jó, csak ha hozzáírsz a főhurokhoz, akkor "csúszik" a prell mérésed, de "Kinek a pap, kinek a papné"
![]()
Valószínűleg nem bemenetváltozás megszakításra gondolt, hanem időzítőmegszakításra. Én legalábbis mindig időzítőből kezelem a nyomógombokat, és sosincs gondom a prellezéssel (másodpercenként kb. 30 lekérdezést szoktam használni). Egyszer kellett megírnom a gombkezelő függvényeket, amit az adott projecthez csak adoptálni és paraméterezni kell. Megoldható, hogy hasonlóan működjön, mint a számítógép billentyűzete (folyamatos lenyomásnál egy idő múlva beállítható sebességgel ismételjen).
Két külön elgondolás, bár mind a kettő titulálható asszinkronosnak.
Mert végül is egy a timer-al egy asszinkron dolgot hozunk létre. Bár szerintem a főciklusba vizsgálni mindent, nekem sokkal inkább a Visual Studios Event kezelésre, hasonlít, ahol ugye csak az "sw létezik". PIC-el is meg lehet csinálni biztos, bár ha a hw adja (szerintem) a könnyebb utat akkor értelmetlen lenne bonyolítani. De abban egyetértek pajti-val, ha már nem is fizikai gombok-ról beszélünk (tapi kijelző) és mér egy rendszer szerű dolog fut a PIC-en, jobb lehet asszinkronosan a fő szálból kezelni a gomb nyomásokat és eventeket meghívni, ha jól tudom a Harmony TFT libje is valami ilyet csinál (vagy próbál csinálni ![]()
Urak!
Mi lehet a hiba a mellékelt nyákkal? A Timer1 külső oszcillátorról nem akar menni. Ha kiveszem a pic-ket és beteszem egy próbapanelbe akár ugyanazzal a kristállyal is, ott megy rendesen. Már lesikáltam, körbekapargattam, átvilágítottam, de semmi hibát nem találtam. |
Bejelentkezés
Hirdetés |