Fórum témák
» Több friss téma |
Idézet: „Az XC8 ingyenes verziója az alapértelmezett fordító” Lehet nem emlékszem rá, nem használtam mostanában. Egy biztos, arra emlékszem, mert napokig kísérleteztem, hogy a 8-as és 5-ös verzió fájljait külső fordítóval még lehet zsugorítani az alap fordítási méreten belülre.
Noss költözöl...
Mármint ide a topicba az ESP től... Hiába van itthon egy rakat esp ugy érzem a feladat PIC el és az én kevés tudásomra való tekintettel a Flowal jobban kivitelezhető. A feladatom a következő. Külső pwm... Egy modellen kellene figyelni az egyik csatorna kitöltöttségét! 20 ms a ciklushossz és ebbe a 20 miliszekundumba kap 1 és 2 ms hosszúságú jelet. Az 1 ms a teljesen balra téritett kar az 1.5 ms a közép állás a 2 ms pedig a teljesen jobbra térített. Abba bizom hogy legalább 0.1 ms pontosságot tudok elérni . Nekem az adottbcsatornán egy "poti" van... így tulajdon képpen a potiból tudnék egy 5 állásos kapcsolót csinálni. Első kihivás a feladtra találni egy elegendő lábszámű de mégis "kicsi" PIC et, Gondolom a pontosság miatt jobban járok ha külső orajelet használok. És hogy a topikhoz is hű legyek jöjjön a program. Alap elképzelésként az szerepel hogy 0.01ms időközzel behivok egy "figyelő" makrót ami nézi az allapotot hogy magas vagy alacsony és számol egy változóba. 1-1,2ms ig az "első állás" 100-120 aktív magas állapotig 1,2-1,4ms ig a "második állás" 120-140 aktív magas állapotig 1,4-1,6ms ig a "harmadik állás" 140-160 aktív magas állapotig 1,6-1,8ms ig a "negyedik állás" 160-180 aktív magas állapotig 1,8-2ms ig az "ötödik állás" 180-200 aktív magas állapotig Ha pedig mondjuk 5-8 alkalommal is alacsony értéket kapott akkor feltételezhetem hogy a jel a végére ért ennek megfelelően "billentem a kimenetet" utanna nullázom a változót a kimenethez nem nyúlok és kezdődik előről a ciklus. Kiindulásnak jó lehet?
Szia!
0,01ms az 100kHz. Elég nagy órajel kell ahhoz hogy ezt így megold. 0.05ms az már csak 20kHz ezt már egy 20MHz-es kvarcal is meg tudod oldani, és szerintem ennekis bőven elégnek kellene lennie. Az első magas jelnél számláló indul addig ameddig nem nulla, ezt elmented és utána azt csinálsz vele amit akarsz.
Lásd melléklet. A lehető legegyszerűbben csináltam meg, csak annyi megszakítás van a rendszerben, amennyi feltétlen szükséges. Függvénygenerátorral ellenőriztem, 1 ms H szint esetén 10 a kijelzett érték, 1,4 ms esetén 14 és 2 ms H szint esetén 20.
Ha csak pár érték kell, érdemes tartományt megadni a kiértékelésnél. Vagy, ahogy leírtad, az értéket csak tízzel kell szorozni és már meg is kapod a kívánt 100 - 200 tartományt. Eddig jutottam, eddig egyértelmű a feladat. Az, hogy a 100 - 200 mit jelent, valamint a "poti az adatcsatornán", nem egyértelmű.
Itt egy másik verzió..
Huuu nagyo szuper!
Megnéztem mind a két programot vannak mind a kettőbe "elemek" amik nagyon tetszenek! Én a "jelszint tisztázására" nem is gondoltam, pedig hasznos lehet mert egy késleltetés után nem biztos hogy pont a ciklus "üres részén" fog belépni a program... és így elkerülhető a hibás számítás. mondjuk ha meg kokozo verzióját nézem akkor meg nem kell a "ciklus kezdését megvárni" hiszen tápadás után folyamatosan követi az értéket. kokozo csatolok egy képet belekommenteltem a programba.. Ha nem látszik jól a komment Jól gondolom hogy azt a feltételes elágot akár ki is hagyhatom? Ha az első ágba nullázom a counter-t? Mert a save be már átmentettem a counter értékét, és akkor mentés után akár törölhetem is!? Vagy van valami funkciója hogy igy van a counter törlés? A hozzászólás módosítva: Júl 7, 2020
Persze hogy nem! Gondold végig.. ha az első nem ágában nullázod miután elmenteted akkor a következő tmr-be ugráskor a 0-át menti el újra meg újra.
A nem ágban úgy lehetne menteni hogy a a counter értéke nem 0 akkor save=counter. És akkor nem kell a reset változó. A hozzászólás módosítva: Júl 7, 2020
Végülis... ( hogy én erre nem gondoltam... ) teljesen jogos!
A kijelzőidő válltozóknak van szerepe? vagy az mehet simán változó nélkül számként megadva? Vagy jobb ha változó?
Ez csak példa program, azt csinálsz vele amit akarsz , nem kell változó elég a szám.
Én egy ilyet csináltam!
A kimenetnél nekem annyi a lényeg hogy 5 különböző kimenet válljon magassá az 5 állásnak megfelelően! Szerintetek? szerk: Mondjuk mehetne akár egy többirányu elágazás is a sok feltételes elág helyett A hozzászólás módosítva: Júl 7, 2020
Hátőőő izé.. hol is kezdjem.. Csodálnám ha ez működne
a tmr makroba a jel változó mindig 0 marad mivel sehol nincs beolvasva 2. a port a összes lábát kimenetre állítod a fő ciklusban ami nagy valószínűséggel vagy a kontrollert öli meg vagy ami a jelet adja neki, mivel a ki és bemenet is ugyanaz nálad.Az meg hogy minek kell az abcde változó nem is értem
Igazad van!
A TMR makróba elfelejtettem a bemenetet a változóhoz hozzárendelni! Azt javítottam.. és igen a fő ciklusba is kimenetre teszem az A port összes lábát! Azt hittem hogy az elég ha nem állitom magasra a A0 lábat.. Az abcde változó arra szolgál hogy: AZ első ágon van monsjuk az 1-es kimenet ha az érték alapján vált a kettes ágra akkor ugye az 1 kimenetet ki kell kapcsolnia.. ahol az a port összes kimenetét kikapcsolom ott elvileg elvégzi ezt és utánna magasra állitja az ág szerinti kimenetet.... és az abcde segéd változók arra vannak hogy az ujboli lefutásnál, ne váltsa alacsony majd megint magas szintre a kimenetet... Ugymond a pulzálást szeretném vele elkerülni vagy teljesen fölösleges? szerk: köszbe módosítottam.. kivettem a kimeneteket és a segédváltozókat, hogy lépésról lépésre haladjak ( de csak akkor tovább ha az előző lépés már biztos jó ) A hozzászólás módosítva: Júl 7, 2020
Ha egy teljes portnak szám változót küldesz ki azt átfordítja 2-es számrendszerbe és úgy állítja a lábakat. PL. 0 ilyenkor mind ki lesz kapcsolva. vagy legyen 1. Ilyenkor 00000001 lesz a lábak állása tehát ahol 1 lesz ott magas ahol nulla ott alacsony. Vagy legyen 200 ilyenkor 11001000 lesz a kimenetek állása. Felesleges külön lenullázni őket.
Bocsánat, megviccelt a fórummotor!
Így még jó Mondjuk az a lépcső is megtréfálja majd a programot vidd végig rajta a 23-at hogy hová jut.
A hozzászólás módosítva: Júl 7, 2020
Igy gondolod?
Attól eltekintve hogy igy megint piszkálom az A0 lábat Szerk: Most látom hogy az egész feltételes elág "csibecsőrök nem jók!! A hozzászólás módosítva: Júl 7, 2020
Ha minden áron az a-t akarod piszkálni akkor maszkold ki és nem bántja.
Meg ne felejtsd el elé írni a 0b -t hogy tudja hogy bináris a szám. pl 0b11001000 A hozzászólás módosítva: Júl 7, 2020
Nem azt akarom.. Konkrétan nem tudom hogy mit akarjak piszkálni!
Ezzel a képpel csak azt szeettem volna kérdezni hogy igy gondoltad e az egész port elküldését! Huu de régen volt amikor flow-t használtam.. na akkor se voltam egy mágus de ezeket a "dolgokat" simán megléptem!
A kisebb/nagyobb jelek most a jók.... eddig az is hibás volt
Szerintem felesleges 2 értékvizsgálat minden elágazásnál, csak fogja a progit.
Szépen apránként rájövök hogy ebben is igazad van!
Mivel ez nem egy többirányő elágazás, hanem több egybefűzött feltételes.. és valóban nem kell a két értéket vizsgálni mert az alsó határértéket az előző ág már kizárta vagy igazolta! Akkor az is sztorno... ( ez akkor kellenne ha egy többirányu elág lenne ugye?) Még akkor egy valamit mutass meg légyszives hoyg kell egy "parancsba az egész portot kapcsolni "szelektiven" Idézet: „Meg ne felejtsd el elé írni a 0b -t hogy tudja hogy bináris a szám. pl 0b11001000” A bemenetet meg átrakom egy valamelyik B portra
Legegyszerűbb ha port b-t használsz mert akkor nem kell maszkolni, de a kép szerintem egyértelmű. Annyi hogy hiába írod be a változóba hogy az A0-t is kikapcsolja nem fogja mert a maszk kizárja.
A duplikált hozzászólás eltávolítva.
Milyne makróra gondolsz? Egy kimenetet bekapcsolsz, kilencet kikapcsolsz. Többirányú elágazással megoldható, akkár nulla kioltással is.
A nixit 74141 el szokták meghajtani (bcd-decimál konverter) , a kimenetet (mondjuk RB0-1-2-3) egyszerűen portként használod , a 4567 kimenetet kimaszkolod viszont az órák percek másodpercek csak digitenként kezelhetők , erre kell a többirányú elágazás . Ha segítség kell keress meg , vagy 8 féle nixi órát csináltunk haverommal most éppen egy nixi hőmérő-páramérő ,és egy DS3231 rtc -s nixi óra íródik ....
A hozzászólás módosítva: Júl 10, 2020
Valahogy így ... A port 15 ös állapota a kijelző kioltás ( 74141 )
A hozzászólás módosítva: Júl 10, 2020
Alapban akkor valahogy kb igy kellenne a kimenetek megadásának kinéznie?
Ehhez kell külső kvarz? Vagy elmegy nélküle is?
Szia,
Igen a 74141-el gondoltam én is, egy dologban voltam eltévedve, de már talán tisztul... Ha most jól gondolom, akkor a csőnek az 1-es lába az 1 szám, kettes lába a kettes szám...stb Elsőre nagy tudatlanságban azt gondoltam a nixie-t hasonlóan kell meghajtani mint egy 7 szegmensest.
Valahogy úgy , a 74141 és a nixi adatlapja mindent "megmagyaráz" A VFD cső az ami hétszegmenses meghajtást kér (de az kékeszöld színű nem piros mint a nixi ) Vagy kukkants bele a cikkekbe Bővebben: Link
A hozzászólás módosítva: Júl 11, 2020
|
Bejelentkezés
Hirdetés |