Dotazy začátečníka 2

labus
Příspěvky: 9
Registrován: 30 čer 2018, 20:54

Re: Dotazy začátečníka 2

Příspěvek od labus » 19 črc 2018, 09:10

Přerušení nepoužívám, ani neznám. Myslíš tím hintsetup?
Senzor dle dokumentace potřebuje 750 ms, takže mám nastavenou pauzu 1s.
Kód sem teď nezkopiruju, protože jsem na mobilu, ale stejně toho moc nemám, protože logicky nevím jak dál:)
Prvně inicializuju display - to je mimo smycku.
Ve smyčce: měřím teplotu (readtemp12), pak čtu stav prvního tlačítka (button), pak druhé tlačítko, pak potenciometr (readadc), pak je if pro spínání topení dle měřené teploty, pak se mi teplota vypisuje na display - zatím 8bitove, ale už mám objednaný převodník na serial.
Jde mi o to, jak zařídit, že při točení potikem budu číst hodnoty z potiku a nebudu zrovna čekat na čtení teploty. Nebo program bude číst teplotu a já zrovna zmacknu tlačítko, tak se mi ta informace ztratí.

Uživatelský avatar
jrt
Příspěvky: 1334
Registrován: 17 úno 2013, 17:13

Re: Dotazy začátečníka 2

Příspěvek od jrt » 19 črc 2018, 11:42

Budeš muset nastudovat a vyzkoušet příkazy Setint a Setintflags.
Bez toho to nepůjde.
jrt
hobbyrobot.cz, profirobot.cz
edurobot.cz, robodoupe.cz

labus
Příspěvky: 9
Registrován: 30 čer 2018, 20:54

Re: Dotazy začátečníka 2

Příspěvek od labus » 19 črc 2018, 11:58

Děkuji, to bude ono!

Howky
Příspěvky: 56
Registrován: 07 dub 2016, 15:41

Re: Dotazy začátečníka 2

Příspěvek od Howky » 11 zář 2018, 17:25

Zdravím :) potřeboval bych trochu poradit.
Mám rychloměr který posílá různé zprávy do picaxe.
Rychloměr pošle např zprávu $01,$06,$F9 nebo $01,$07,$F8 a nebo jiné.

A teď jde o to, že potřebuji aby v případě přijmu zprávy vykonal další příkazy.
Mohu nějak udělat to, aby když nepřijde první zpráva ($01,$06,$F9) aby ji přeskočil, a když přijde dotaz na tu druhou ($01,$07,$F8) aby ji přijmul a šel na goto MPP

Ono časem těch zpráv tam bude víc, které přijdou od rychloměru.

setfreq M16
symbol BAUD =T9600_16 ;rychlost pro LCD
symbol R485 =C.0

DopZ3: ; Doplnkova zprava
serin[100],R485,BAUD,($01,$06,$F9) goto MCP ;
serin[100],R485,BAUD,($01,$07,$F8) goto MPP ;
goto DopZ3


Díval jsem se tady :
http://www.picaxe.cz/wp-content/uploads/Serin.pdf


Je tam rada využít Address
Address – adresa, na níž program odskočí v případě překročení časového limitu.

Ta adress , se asi nedá zapsat takto
serin[100,MPP],R485,BAUD,($01,$07,$F8) goto MPP


Děkuji za radu :)

DavidO
Příspěvky: 534
Registrován: 01 kvě 2013, 21:27

Re: Dotazy začátečníka 2

Příspěvek od DavidO » 11 zář 2018, 21:29

Takhle to nepůjde. Ten "qualifier" (to v kulatých závorkách), na který serin může čekat, funguje tak, že dokud chodí cokoli jiného, tak to ignoruje, zahazuje a teprv až přijde to co má anebo nastane konec světa (timeout), čekat přestane. Takže kdyby ti ta první zpráva nepřišla a rovnou přišla druhá (ještě před timeoutem), tak to stejně bude na tu první čekat. Myslím, že to musíš udělat tak, že budeš přijímat vše a sám se rozhodovat, co s tím uděláš.
Howky píše:
11 zář 2018, 17:25
Ta adress , se asi nedá zapsat takto
serin[100,MPP],R485,BAUD,($01,$07,$F8) goto MPP
Skoro jo, akorát na konci vymaž "goto MPP". Teda místo "adresa" by v popisu příkazu mělo terminologicky přesněji být napsáno "návěští", ale ať už se to pojmenuje jak chce, serin v případě překročení času skočí tam, kam je uvedeno. A protože serin umožňuje napsat jen kvalifikátor a nic dalšího nepřijmout, tak se dá použít k "pozastavení letu" do doby, než přijde cos chtěl.

jova
Příspěvky: 267
Registrován: 16 pro 2013, 11:40

Re: Dotazy začátečníka 2

Příspěvek od jova » 12 zář 2018, 10:08

1. ten rychloměr je taky osazen PICAXEM? Nemohl by do té zprávy "přibalit" ještě další informaci na jejíž základě by se ten "přijímač" rozhodoval co provede?
2. nemůžeš prostě přijímat všechny zprávy a teprve po přijetí je porovnávat s pevně nastavenými daty a podle nich se rozhodovat co s tou zprávou program udělá?
Přijmu b0,b1,b2
if b0=x and b1=y and b2=z then : goto MPP else serout C.x, baud, (b0,b1,b2) endif (chybí tam samozřejmě ještě souřadnice LCD...)
jestliže b0=x a současně b1=y a současně b2=z jdi na MPP jinak odešli data na LCD konec jestliže

Howky
Příspěvky: 56
Registrován: 07 dub 2016, 15:41

Re: Dotazy začátečníka 2

Příspěvek od Howky » 12 zář 2018, 14:48

No rychloměr není osazen picaxem, má svého vlastního švába :)
A ten posílá právě ty zprávy , když potřebuje na ně odpověd.

DavidO
Příspěvky: 534
Registrován: 01 kvě 2013, 21:27

Re: Dotazy začátečníka 2

Příspěvek od DavidO » 12 zář 2018, 21:17

jova píše:
12 zář 2018, 10:08
2. nemůžeš prostě přijímat všechny zprávy a teprve po přijetí je porovnávat s pevně nastavenými daty a podle nich se rozhodovat co s tou zprávou program udělá?
Šak to je to co jsem psal - teda vlastně neptám se "nemužeš ... ?" ale tvrdím "musíš!" ;)

Howky> co to je za rychloměr? A taky ne úplně rozumím, že "potřebuje na ně odpověď" - to jako když rychloměr něco pošle, že mu musíš z Picaxe odpovědět?

Howky
Příspěvky: 56
Registrován: 07 dub 2016, 15:41

Re: Dotazy začátečníka 2

Příspěvek od Howky » 12 zář 2018, 21:31

Jedná se o rychloměr z lokomotivy.

A nastane mi tam situace , kdy si rychloměr žádá o doplňkovou informaci.
A on právě pošlě jednu z techto zpráv

01 01 FE - rýchlomer od základnej jednotky žiada údaje rušňovdiča a vlaku (nechránené štatistické dáta)
01 02 FD - rýchlomer od základnej jednotky žiada chránené štatistické dáta
01 03 FC - rýchlomer žiada údaje o zmene času (letný/zimný)
01 04 FB - rýchlomer žiada údaje o simulovanej rýchlosti
01 05 FA - rýchlomer žiada zmenu údajov (čas, chránené, nechránené data atď.)
01 06 F9 - rýchlomer žiada údaj verzie MCP
01 07 F8 - rýchlomer žiada údaj verzie MPP

A já právě potřebuji, aby si program zvolil tu správnou zprávu , tedy ji přečetl, a pokračoval dál.

Howky
Příspěvky: 56
Registrován: 07 dub 2016, 15:41

Re: Dotazy začátečníka 2

Příspěvek od Howky » 12 zář 2018, 21:42

zkusil jsem to i takto

symbol KP3 =$06 or $07
symbol KP4 =$F9 or $F8


DopZ3:
serin[100],R485,BAUD,($01,KP3,KP4) ; Rychlomer pozaduje informaci
low D485 ;prepne modul RS485 na cteni
if KP4 =$F9 then goto MCP
if KP4 =$F8 then goto MPP
goto DopZ3

ze by prijmul zprávu, tu si dosadil a poté by vykonal ale tady mu zase nelíbí řádky
if KP4 =$F9 then goto MCP
if KP4 =$F8 then goto MPP

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti