Spínač picaxe 08M
Re: Spínač picaxe 08M
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ů.
- jova
- Příspěvky: 1117
- Registrován: ned 15.02.2009 0:00
- Bydliště: Chýnov - to je kousek od Tábora
- Kontaktovat uživatele:
Re: Spínač picaxe 08M
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ů".
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
fotky: https://mapy.cz/fotografie?fotomapy&x=15&y=49&z=8&aid=861
Re: Spínač picaxe 08M
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/
Re: Spínač picaxe 08M
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"
- jova
- Příspěvky: 1117
- Registrován: ned 15.02.2009 0:00
- Bydliště: Chýnov - to je kousek od Tábora
- Kontaktovat uživatele:
Re: Spínač picaxe 08M
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.
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
fotky: https://mapy.cz/fotografie?fotomapy&x=15&y=49&z=8&aid=861
Re: Spínač picaxe 08M
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...
Re: Spínač picaxe 08M
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...
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...
- jova
- Příspěvky: 1117
- Registrován: ned 15.02.2009 0:00
- Bydliště: Chýnov - to je kousek od Tábora
- Kontaktovat uživatele:
Re: Spínač picaxe 08M
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
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: Vybrat vše
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
Naposledy upravil(a) jova dne stř 28.08.2019 10:06, celkem upraveno 1 x.
EPP samokřídla
fotky: https://mapy.cz/fotografie?fotomapy&x=15&y=49&z=8&aid=861
fotky: https://mapy.cz/fotografie?fotomapy&x=15&y=49&z=8&aid=861
Re: Spínač picaxe 08M
Jen pidi drobnost, spíš offtopic:
bych nahradil za
(% je zbytek po dělení)
Kód: Vybrat vše
w0=w0+1
if w0>350 then : w0=0 endifbych nahradil za
Kód: Vybrat vše
w0 = (w0+1) % 351(% je zbytek po dělení)
http://semos333.rajce.idnes.cz/
- jova
- Příspěvky: 1117
- Registrován: ned 15.02.2009 0:00
- Bydliště: Chýnov - to je kousek od Tábora
- Kontaktovat uživatele:
Re: Spínač picaxe 08M
semo píše:Jen pidi drobnost, spíš offtopic:Kód: Vybrat vše
w0=w0+1
if w0>350 then : w0=0 endif
bych nahradil zaKód: Vybrat vše
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
fotky: https://mapy.cz/fotografie?fotomapy&x=15&y=49&z=8&aid=861
Re: Spínač picaxe 08M
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.
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/
- jova
- Příspěvky: 1117
- Registrován: ned 15.02.2009 0:00
- Bydliště: Chýnov - to je kousek od Tábora
- Kontaktovat uživatele:
Re: Spínač picaxe 08M
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.
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
fotky: https://mapy.cz/fotografie?fotomapy&x=15&y=49&z=8&aid=861
Re: Spínač picaxe 08M
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).
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
Re: Spínač picaxe 08M
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...
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...