Dotazy začátečníka 2

Odpovědět
PavelM

Dotazy začátečníka 2

Příspěvek od PavelM » 21 úno 2016, 20:55

Vážení kolegové, povedlo se mi odladit prográmek na 08M - diody blikají jak mají dle definovaných cyklů, tlačítko na startu reaguje, uprostřed také. Když odpojím sériový kabel, po restartu vše funguje, dokud nepřiblížím ruku k procesoru - bez doteku! Program se restartuje. To se děje se 100% opakovatelností. Ošetření vstupů 2 a 7 dle doporučení včetně i následně přidané diody.
Nemáte někdo zkušenost s tímto problémem?

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

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

Příspěvek od jrt » 21 úno 2016, 21:36

Ošetření vstupů 2 a 7 dle doporučení včetně i následně přidané diody.
1. Máte co nejblíže pouzdru PICAXE připojen keramický kondenzátor o hodnotě 47 až 220 n mezi piny 1(+) a 8(-)?

Pokud to nepomůže:
2.Odpojte sériový kabel a pin 2 spojte s pinem 8.

Pokud to nepomůže:
3. Pošlete schéma zapojení včetně ošetření pinů 2 a 7.
jrt
hobbyrobot.cz, profirobot.cz
edurobot.cz, robodoupe.cz

Luděk
Příspěvky: 16
Registrován: 22 úno 2016, 08:47

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

Příspěvek od Luděk » 22 úno 2016, 09:11

Ahoj po ránu,
zkusím taky tipovat problém... pokud je pin připojen na tlačítko, nesmí být v luftě, je třeba přidat Pullup odpor,
nebo to udělat příkazem... A jak kolega uváděl i vstup C.5 (pin2), musí mít odpor k zemi 5-22k.
Ale asi bez schema či kodu moc neporadíme...

PavelM

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

Příspěvek od PavelM » 22 úno 2016, 22:15

Kondenzátor přímo na vývodech pomohl. Měl jsem ho původně na vstupu napájení. Tlačítka mám na zem přes 10k. Dík za pochopení.

Pivrnec78
Příspěvky: 16
Registrován: 30 dub 2017, 15:25

Dotazy začátečníka 2

Příspěvek od Pivrnec78 » 07 čer 2017, 06:52

Zdravíčko,
mám malý problém, který jsem sice vyřešil po svém, ale kdyby se to povedlo ... :roll:
přiřadil jsem pinu název, se kterým pracuji ... dále jsem bitu taky přiřadil název a poté jsem názvy "srovnal" ...

Kód: Vybrat vše

symbol S1 = pinA.0
symbol S1_b = bit1
S1 = S1_b
Jenže v tomto stavu mi to funguje (asi) jako opakovač - co je na pinu A.0, to je v bit1 ... ale já bych potřeboval aby si bit1 pamatoval log.1 do doby než jej fyzicky vynuluju např. let bit1 = 0 ... abych po stisknutí a následném uvolnění tlačítka na pinu A.0 mohl dále pracovat s informací, že bylo tlačítko stisknuto ...
Vyřešil jsem to

Kód: Vybrat vše

if pinA.0 = then let bit1 = 1
a když už tuto informaci nepotřebuji, tak mám let bit1 = 0, abych potom zase mohl hlídat opakovaný stisk ...

Dá se nějak "donutit" tento CPU, aby si pamatoval "bit1", aniž bych jej nastavil? Aby při stisku zkopíroval do bitu a tuto informaci tam uchoval dokud ji nevymažu?
Jedná se o 28x2

Díky za názory, P.

Vladimir66
Příspěvky: 105
Registrován: 02 dub 2014, 15:30

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

Příspěvek od Vladimir66 » 07 čer 2017, 18:20

co znamena: if pinA.0 = then let bit1 = 1 ??
kdyz budes mit podminku if pinA.0 = 0 then let bit1 = 1 ,
tak potom kdyz nastane pinA.0 = 1 se bit1 nema jak zmenit. (dokud ho nekde nezmenis let bit1 = 0)
jednou zapsana promenna zustane zapsana.
mozna vic popiš ten zamýšlený algoritmus.

nepochopil jsem myslenku, ze neco zkopirovat je jine, nez neco nastavit.
nastaveni, zkopirovani, prirazeni - to chapu jako stejnou vec. meni se hodnota promenne.
nebo mas problem s tim IFem ?

-V66

Pivrnec78
Příspěvky: 16
Registrován: 30 dub 2017, 15:25

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

Příspěvek od Pivrnec78 » 22 čer 2017, 12:17

Chyba v textu ... vypadlo mi číslo :-/ mělo tam být
if pinA.0 = 1 then let bit1 = 1

Jde o to, že když napíšu "pinA.0 = bit1", tak při každé změně stavu na pinu A.0 se automaticky změní také hodnota bit1. Ale já po stisku (resp. uvolnění) tlačítka potřebuji pracovat s informací, že bylo tlačítko stisknuto. Proto jsem to vyřešil "mechanicky" - ručním zápisem "if pinA.0 = 1 then let bit1 = 1" ... když je podmínka splněna (tlačítko stisknuto), tak se mi příkazem "let bit" obsadí bit a po uvolnění tlačítka si bit danou hodnotu pamatuje pro další možnou budoucí prací s touto informací. A jakmile už tuto informaci nepotřebuji, tak ji vynuluju "let bit1 = 0" ...
Po dobu co bit1 = 1 mne nezajímá, kolikrát bude tlačítko stisknuto. Tímto způsobem řeším i možné zákmity tlačítka nebo kombinace "if", kde potřebuju vědět, jestli už bylo stisknuto, ale nezajmá mne kdy a kolikrát.

Ale přeci jen bych měl jeden technický dotaz ...
co do počtu bitů mám k dispozici pouze 16 bitů (bit0 až bit7 (b0) a bit8 až bit15 (b1))? Co kdybych potřeboval pracovat s více bity - s více uloženými informacemi, ale je pro mne škoda obsazovat kvůli informaci jestli je nebo není =1 celý bajt .. dá se nějak pracovat s jednotlivými bity dalších bajtů? jak "oslovím" jednotlivé bity z b2, b3, atd.? Co jsem pročítal návody, tak jsem našel informaci:
K dispozici je 14 byte b0 až b13, které mohou být sdružovány po dvou v 16 bitová slova (word) w0 až w6. Jednotlivé bity b0 a b1 mohou být také adresovány jako bit0 až bit 15.

Ale co kdybych chtěl pracovat s jednotlivými bity dalšího bajtu ... co se mi stane po zápisu bit16 nebo třeba bit100?
Protože pokud bych chtěl např. při splnění podmínky dvou bitů "if bit1 = 1 and bit2 = 1 then ..." obsadit další bit pro budoucí zpracování a bity z b0 a b1 už mám obsazené (přiřazené), tak nyní mi zbývá používat pouze celé bajty? Není to luxus pro práci s hodnotou "0" nebo "1" požít celý bajt?

Vladimir66
Příspěvky: 105
Registrován: 02 dub 2014, 15:30

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

Příspěvek od Vladimir66 » 22 čer 2017, 23:44

https://www.google.cz/url?sa=t&rct=j&q= ... iA&cad=rja

navrhari neudelali primy pristup ke kazdemu bitu registru v procesoru.
spoustu stavů vyresis hodnotou/obsahem promenne "byte". nemusis mit vzdycky stav vyjadreny bitově..
-V66

Pivrnec78
Příspěvky: 16
Registrován: 30 dub 2017, 15:25

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

Příspěvek od Pivrnec78 » 25 čer 2017, 07:58

Vladimir66 píše:
22 čer 2017, 23:44

spoustu stavů vyresis hodnotou/obsahem promenne "byte". nemusis mit vzdycky stav vyjadreny bitově..
-V66
Za mapku díky - pomůže (doufám)
Ano, i s bajtem (byte) mohu pracovat, dokonce jsem pro uchování informací vytvořil "mapu" na bitech u b1 a pro pozdější práci jsem ji "překlopil" do b2 ... let b1 = b2 a let b1 = 0 a b1 opět používal po bitech, ale to bylo moc složité (zatím), takže já (zatím) hospodařím s hodnotou pouze "1" a "0" ...

Ale teď mi něco došlo ... díky za to ... já mohu použít např.: "if bit1 = 1 and bit2 = 1 then let b2 = 3" a jinde třeba "if bit1 = 1 and bit3 = 1 then let b2 = 5" a poté používat "if b2 = 3 then ..." nebo "if b2 = 5 then ..."
Jo, to by šlo ... :D

Odpovědět

Kdo je online

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