Fórum témák

» Több friss téma
Fórum » Folyamatábrás mikrokontroller programozás Flowcode-dal
Lapozás: OK   331 / 360
(#) niedziela válasza Bakman hozzászólására (») Júl 5, 2020 /
 
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.
(#) Firefighter1 hozzászólása Júl 6, 2020 /
 
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?
(#) kokozo válasza Firefighter1 hozzászólására (») Júl 6, 2020 /
 
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.
(#) Bakman válasza Firefighter1 hozzászólására (») Júl 6, 2020 /
 
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ű.
(#) kokozo válasza Firefighter1 hozzászólására (») Júl 6, 2020 /
 
Itt egy másik verzió..
(#) Firefighter1 hozzászólása Júl 7, 2020 /
 
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

flow2.PNG
    
(#) kokozo válasza Firefighter1 hozzászólására (») 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
(#) Firefighter1 válasza kokozo hozzászólására (») 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ó?
(#) kokozo válasza Firefighter1 hozzászólására (») Júl 7, 2020 /
 
Ez csak példa program, azt csinálsz vele amit akarsz , nem kell változó elég a szám.
(#) Firefighter1 válasza kokozo hozzászólására (») Júl 7, 2020 /
 
É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
(#) kokozo válasza Firefighter1 hozzászólására (») 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
(#) Firefighter1 hozzászólása Júl 7, 2020 /
 
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
(#) kokozo válasza Firefighter1 hozzászólására (») 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.
(#) Firefighter1 hozzászólása Júl 7, 2020 /
 
Bocsánat, megviccelt a fórummotor!
(#) kokozo válasza Firefighter1 hozzászólására (») Júl 7, 2020 /
 
Í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
(#) Firefighter1 válasza kokozo hozzászólására (») 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

flow3.PNG
    
(#) kokozo válasza Firefighter1 hozzászólására (») 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
(#) Firefighter1 válasza kokozo hozzászólására (») 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!
(#) Firefighter1 hozzászólása Júl 7, 2020 /
 
A kisebb/nagyobb jelek most a jók.... eddig az is hibás volt

flow5.PNG
    
(#) kokozo válasza Firefighter1 hozzászólására (») Júl 7, 2020 /
 
Szerintem felesleges 2 értékvizsgálat minden elágazásnál, csak fogja a progit.
(#) Firefighter1 válasza kokozo hozzászólására (») Júl 7, 2020 /
 
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
(#) kokozo válasza Firefighter1 hozzászólására (») Júl 7, 2020 /
 
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.
(#) Moderátor hozzászólása Firefighter1 hozzászólására (») Júl 8, 2020
 
A duplikált hozzászólás eltávolítva.
(#) niedziela hozzászólása Júl 10, 2020 /
 
Szia,
Nixie csöhöz van valami makro ?
(#) Bakman válasza niedziela hozzászólására (») Júl 10, 2020 /
 
Milyne makróra gondolsz? Egy kimenetet bekapcsolsz, kilencet kikapcsolsz. Többirányú elágazással megoldható, akkár nulla kioltással is.
(#) kaqkk válasza niedziela hozzászólására (») Júl 10, 2020 /
 
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
(#) kaqkk válasza niedziela hozzászólására (») 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

kép1.PNG
    
(#) Firefighter1 válasza kokozo hozzászólására (») 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?
(#) niedziela válasza kaqkk hozzászólására (») Júl 10, 2020 /
 
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.
(#) kaqkk válasza niedziela hozzászólására (») Júl 11, 2020 / 1
 
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
Következő: »»   331 / 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