Autor |
Zpráva |
blesk
|
Napsal: úte 27.08.2019 15:10 |
|
Mazák
|
|
|
Registrován: 22.11.2005 Příspěvky: 7132 Bydliště: Vsetín
|
Tak konec poplachu, bylo to verzi SW. Stáhnul jsem 6tku a vše pracuje jak má jen teda ten program upravím a zkusím ten multitasking zejména z důvodu jednodušší úpravy jednotlivých času záblesků.
|
|
Nahoru |
|
|
|
|
|
jova
|
Napsal: úte 27.08.2019 15:22 |
|
Mazák
|
|
|
Registrován: 15.2.2009 Příspěvky: 1124 Bydliště: Chýnov - to je kousek od Tábora
|
Než se do toho pustíš mrkni se sem: http://robodoupe.cz/2015/picaxe-a-multitasking/Pro to blikání to asi fungovat bude, ale jsou s tím občas problémy Problém takového programu jako máš ty všeobecně je ten, že v okamžiku kdy něco zastavíš příkazem pause, tak se zastaví v ten okamžik na tu dobu celý program. Pokud má ale současně probíhat několik dějů nezávisle na sobě, musí program běžet nepřetržitě a proto je vhodnější to počítání "průběhů".
_________________ EPP samokřídla fotky: https://mapy.cz/fotografie?fotomapy&x=15&y=49&z=8&aid=861
|
|
Nahoru |
|
|
semo
|
Napsal: úte 27.08.2019 15:26 |
|
Mazák
|
|
|
Registrován: 20.2.2011 Příspěvky: 993 Bydliště: Telč
|
Tak to moc nechápu, však při multitaskingu zastaví pause jen ten jeden program, ne? Jinak by to nebyl multitasking.
_________________ http://semos333.rajce.idnes.cz/
|
|
Nahoru |
|
|
blesk
|
Napsal: úte 27.08.2019 16:31 |
|
Mazák
|
|
|
Registrován: 22.11.2005 Příspěvky: 7132 Bydliště: Vsetín
|
semo píše: Tak to moc nechápu, však při multitaskingu zastaví pause jen ten jeden program, ne? Jinak by to nebyl multitasking. No to předpokládám že tak jak píšeš se zastaví jen to konkrétní "vlákno"
|
|
Nahoru |
|
|
jova
|
Napsal: úte 27.08.2019 20:11 |
|
Mazák
|
|
|
Registrován: 15.2.2009 Příspěvky: 1124 Bydliště: Chýnov - to je kousek od Tábora
|
Samozřejmě při multtaskingu běží každé vlákno samostatně a v něm i ten program. Samostatně tam bude běžet i několik příkazů pause. Problém o kterém se píše v tom odkazu je to, že ten procesor nerozdělí svůj čas všem jednotlivým vláknům stejně a pak z toho mohou vznikat problémy. Třeba ty, že ta doba zastavení nebude mít hodnoty pause ... Taky píšu, u toho blikání to zřejmě vadit nebude. To co píšu dál se vztahuje na jeden samostatný program, který musí provádět několik prolínajících časových akcí součastně a nedá se použít ten příkaz pause.
_________________ EPP samokřídla fotky: https://mapy.cz/fotografie?fotomapy&x=15&y=49&z=8&aid=861
|
|
Nahoru |
|
|
blesk
|
Napsal: úte 27.08.2019 21:30 |
|
Mazák
|
|
|
Registrován: 22.11.2005 Příspěvky: 7132 Bydliště: Vsetín
|
Třeba na ten blikac co mam teď napsaný je celý přes pauzu, jen je občas rozdělená na více částí kde v mezičase (v pauze pauzy) zapínám/vypínám něco jiného. Zítra to zkusím přes ten multitasking, tam nějaké pozdržení asi vadit nebude, jediné kde byto mohlo vadit jsou ty záblesky, které trvají cca 0,02s tam by asi nějaká změna doby byla poznat, zvláště když jsou dva o 0.25s za sebou. Pokud by docházelo k nesynchronizaci mezi jednotlivými vlákny, to by vůbec nevadilo. Uvidíme...
|
|
Nahoru |
|
|
blesk
|
Napsal: stř 28.08.2019 8:38 |
|
Mazák
|
|
|
Registrován: 22.11.2005 Příspěvky: 7132 Bydliště: Vsetín
|
Tak ten multitasking funguje opravdu nějak podivně...
na samostatné světla v pohodě (běží dvě vlákna) ale jakmile ho v třetím vlákně začnu zatěžovat hlídáním vstupu z RX přes pulsin tak je v háji a světla se zpomalí na cca polovinu, tudy tedy cesta nevede...
|
|
Nahoru |
|
|
jova
|
Napsal: stř 28.08.2019 9:46 |
|
Mazák
|
|
|
Registrován: 15.2.2009 Příspěvky: 1124 Bydliště: Chýnov - to je kousek od Tábora
|
Já to myslel takto: Ty záblesky bude ještě třeba trochu časově poupravit protože i průběh vlastní smyčkou nějaký čas zabere. Dá se to částečně eliminovat zrychlením frekvence procesoru (bude se muset změnit i hodnota w6 a pause), nebo trochu pokrátit ty sčítance co vytváří ty časové jednotky. Nevím jak to máš u sekvence pro zábleskový maják pin 1 25/75/25/875, konkrétně těch 875? v původním programu máš jen pause 225, tak jsem to nechal, ale asi tam patří 875 Kód: w0=0 w1=0
start: pulsin 3,1, w6 if w6 > 150 then goto zapni ;puls delší jak 1,5ms zapni if w6 < 150 then goto vypni ;puls kratší jak 1,5ms vypni goto start ;začátek smyčky
zapni: pause 1 ;nastaví časový krok ve smyčce high 4 ;zapni pin 4 - přistávací světlo
;sekvence pro zábleskový maják pin 1 25/75/25/875 if w0=0 then high 1 endif ;0 if w0=25 then low 1 endif ;+25 if w0=100 then high 1 endif ;+75 if w0=125 then low 1 endif ;+25 w0=w0+1 if w0>350 then : w0=0 endif ;+225
;sekvence pro antikolizní maják pin 2 500/500
if w1=0 then high 2 endif if w1=500 then low 2 endif w1=w1+1 if w1>1000 then : w1=0 endif
goto start ;na začátek smyčky
vypni: pause 1 ;nastaví časový krok ve smyčce low 4 ;vypni pin 4 - přistávací světlo
;sekvence pro zábleskový maják pin 1 25/75/25/875 if w0=0 then high 1 endif if w0=25 then low 1 endif if w0=100 then high 1 endif if w0=125 then low 1 endif w0=w0+1 if w0>225 then : w0=0 endif
;sekvence pro antikolizní maják pin 2 500/500
if w1=0 then high 2 endif if w1=500 then low 2 endif w1=w1+1 if w1>1000 then : w1=0 endif
goto start ;na začátek smyčky
_________________ EPP samokřídla fotky: https://mapy.cz/fotografie?fotomapy&x=15&y=49&z=8&aid=861
Naposledy upravil jova dne stř 28.08.2019 10:06, celkově upraveno 1
|
|
Nahoru |
|
|
semo
|
Napsal: stř 28.08.2019 10:04 |
|
Mazák
|
|
|
Registrován: 20.2.2011 Příspěvky: 993 Bydliště: Telč
|
Jen pidi drobnost, spíš offtopic: Kód: w0=w0+1 if w0>350 then : w0=0 endif bych nahradil za Kód: w0 = (w0+1) % 351 (% je zbytek po dělení)
_________________ http://semos333.rajce.idnes.cz/
|
|
Nahoru |
|
|
jova
|
Napsal: stř 28.08.2019 10:09 |
|
Mazák
|
|
|
Registrován: 15.2.2009 Příspěvky: 1124 Bydliště: Chýnov - to je kousek od Tábora
|
semo píše: Jen pidi drobnost, spíš offtopic: Kód: w0=w0+1 if w0>350 then : w0=0 endif bych nahradil za Kód: w0 = (w0+1) % 351 (% je zbytek po dělení) Mohl by jsi mi vysvětlit smysl toho tvého kódu a co provede v programu?
_________________ EPP samokřídla fotky: https://mapy.cz/fotografie?fotomapy&x=15&y=49&z=8&aid=861
|
|
Nahoru |
|
|
semo
|
Napsal: stř 28.08.2019 10:24 |
|
Mazák
|
|
|
Registrován: 20.2.2011 Příspěvky: 993 Bydliště: Telč
|
Mělo by to provést skoro to stejné, co tvůj if, ale (snad) elegantněji. Nevím jak v picaxe, ale řek bych, že IF je dražší záležitost, než matematická operace.
Tak to vysvětlení: w0=w0+1 ..to je jasné, zvyšuje w0 o jedna. Ale když chceš, aby se w0 vrátilo na 0 když je větší než 350, může se to udělat tim zbytkem po dělení: příklad: "130 % 351" je poářd 130 (podíl je 0 a 130 zbyde). A tak to jde až k 351, kdy "351 % 351" je 0 (podíl je 1 a 0 zbyde).
Rozdíl od toho ifu je, že ještě větší hodnoty w0 (352, ...n) se nenastaví na 0, ale na odpovídající číslo od začátku (352 % 351 = 1, 353 % 351 = 2, .... 2865 % 351 = 57...). Ale to je podle mě a) jedno a za b) většinou žádoucí, protože to neporušuje časovou linii efektu.
_________________ http://semos333.rajce.idnes.cz/
|
|
Nahoru |
|
|
jova
|
Napsal: stř 28.08.2019 10:36 |
|
Mazák
|
|
|
Registrován: 15.2.2009 Příspěvky: 1124 Bydliště: Chýnov - to je kousek od Tábora
|
Dík za typ. v PICAXE to v tomhle tvaru nefunguje, musí se to zapsat bez těch závorek. Ušetří to 6 bytů. Člověk se musí pořád učit On by i ten můj program šel napsat mnohem elegantněji a úsporněji, ale v programování jsem samouk a mám raději když je na první pohled "vidět" jak ten program funguje.
_________________ EPP samokřídla fotky: https://mapy.cz/fotografie?fotomapy&x=15&y=49&z=8&aid=861
|
|
Nahoru |
|
|
semo
|
Napsal: stř 28.08.2019 10:50 |
|
Mazák
|
|
|
Registrován: 20.2.2011 Příspěvky: 993 Bydliště: Telč
|
Ajo, závorky :-).
_________________ http://semos333.rajce.idnes.cz/
|
|
Nahoru |
|
|
jyrry
|
Napsal: stř 28.08.2019 12:09 |
|
Moderátor serveru
|
|
|
Registrován: 28.2.2005 Příspěvky: 20845 Bydliště: Rakovník, CZ Obrázky: 0
|
A co dát do smyčky na začátek pulsin? Cyklus se zastaví po dobu čekání na impulz, následuje 1,0-2,0ms kdy čte délku pulzu, pak je krásných cca 16ms na počítání +1 a porovnávání jestli došlo ke shodě s nějakým číslem a podle té shody zapínat či vypínat ten který výstup LED a podle délky PWM zapínat či vypínat další světlo... Času spousta. Bude to synchronizované s opakovací frekvencí PWM servosignálu. Nevýhoda bude že nejkratší časový úsek bude (obvykle) těch 20ms (a delší úseky jeho násobky) ale tomu se snad dá přizpůsobit... ???
V Arduinu jsou krásné volně běžící časovače a lze číst jejich hodnotu buď v milisekundách nebo (třeba pro měření/generování délky servoimpulzů) v mikrosekundách. To dost používám. Nebo celkem snadné použití přerušení na vstupu (čtení servosignálu), přičemž smyčka může volně žít svým životem s vlastním časováním, nezávisle na nějakém pulsin (PICAXE) nebo pulsein (Arduino).
_________________ jyrry.webnode.cz
|
|
Nahoru |
|
|
blesk
|
Napsal: stř 28.08.2019 15:14 |
|
Mazák
|
|
|
Registrován: 22.11.2005 Příspěvky: 7132 Bydliště: Vsetín
|
Tak jsem se dopracoval k tomu že mám osazený tišťák ale nejede to....
Ve zkratce...
Picaxe 08M2 ovládá spínaný stabilizátor KF33BD... Na vývojové desce samotný picaxe bliká jak má. Když přivedu 1 na ovládací vstup stabíku tak ledka zhasne, ale jakmile to začnu ovládat pomocí MCU tak to prostě nejede...
|
|
Nahoru |
|
|
Kdo je online |
Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 10 návštevníků |
|
Nemůžete zakládat nová témata v tomto fóru Nemůžete odpovídat v tomto fóru Nemůžete upravovat své příspěvky v tomto fóru Nemůžete mazat své příspěvky v tomto fóru Nemůžete přikládat soubory v tomto fóru
|
|
|