Stránka 1 z 2

ATTINY 2013- podivné chování

Napsal: 16 dub 2013, 10:03
od epes
Prosím o pomoc s následujícím problémem.
AT TINY 2313 8MHz, pinD a pinA - použity jako vstupy uzemněby 15K odpory, portB - výstupy přes 1k odpory. C- kod je v příloze.
Pokud je MCU ve zkušebním bordu, vše funguje jak má, alespoň podle mne.
Pokud je MCU v reálném zařízení, chová se podivně. Jakmile se na pinech D1, D5 a hlavně D3 objeví jednička (značka //111) program nepochopitelně skočí do cyklu while - značka //222 i když tam nemá co skákat.
Napájení je blokované, vstup A2 též. Zákmity se na vstupech neobjevují. Pouze na výstupech PortB a na napájení je cca 20mV šum. Ten je ovšem ve zkušebním zapojení též. Vyzkoušel jsem i jiný ATTINY2013, bohužel se stejným výsledkem. Nepomůže ani snížená frekvence.

Budu vděčný za jakoukoliv realizovatelnou radu.

Napsal: 16 dub 2013, 10:25
od Jenda_KL
attiny2313.pdf strana 181 říká že:
Rpu I/O Pin Pull-up Resistor min20 max50 kΩ.

Proto bych si nebyl moc jistý přizeměním 15kΩ.

Napsal: 16 dub 2013, 12:51
od epes
Díky za tip.
Nicméně, platí pravidla pro pullup i pro přizemnění. Ve zkušební desce mám tyto odpory cca jen 5k a MCU funguje. Zkusím pro jistotu ty odpory zvětšit.

Díky

Napsal: 16 dub 2013, 15:03
od Standa33
1. Jak máš oddelenou desku s procesorem od výkonových prvků(relé..)
2. Jak jsou připojené vstupy k pinům(oddělené optočleny, nebo připojeny delším vodičem....).

Zkus snímat stav vstupů s odstupem (cca 10ms) a pokud budou 2vzorky po sobě(nebo více) stejné, až pak se provede další program.

Napsal: 16 dub 2013, 15:14
od Jenda_KL
Ten Rpu rezistor popsaný v DS je ale interní.
když se dá ta samá hodnota zvenčí na zem tak na pinu bude poloviční hodnota napájecího napětí, což je stav tak trochu nežádoucí.
Jeho vypnutí je možné v konfiguraci DDRx.y=0(input) a PORTx.y=0(noPU),
výchozí je in+PU
nebo PU vypnout globálně, pak při jedničce lítá v luftě.

Napsal: 16 dub 2013, 15:18
od Panda38
Asi je v tomhle překlep?

pina=0;
pind= 0b0010000;

zřejmě bylo zamýšleno:

porta=0;
portd= 0b0010000;

Napsal: 16 dub 2013, 15:23
od Jenda_KL
teď na ten program taky koukám,
zápis do registru jen pro čtení postrádá smysl.
Vůbec bych to nekomplikoval, nechal bych všechny s PU:
porta=0xFF
portd=0xFF
a vstupy spínal ke GND.

Napsal: 16 dub 2013, 15:25
od Standa33
Ještě jsem v programu našel několikrát zápis podobný tomuhle:

if ((pina0_bit==0)&(pina1_bit==1))

operátor &(bitový AND) se používá pro porovnání bitů, pro stav kdy mají platit oba výrazy společně, je operátor &&(logický AND - a zároveň).

if ((pina0_bit==0)&&(pina1_bit==1))

Napsal: 16 dub 2013, 16:13
od epes
Jejda, to je najednou odpovědí. Tak zkusím reagovat postupně.
Co se týče pinů a pullup rezistorů, tak toi je pochopitelně překlep, který jsem už opravil, zajímavé je, že to funguje i s tím špatným zápisem. Proč jsem nepoužil MCU s PU už dnes nevím, ale asi by to bylo lepší, ale už je jpozdě.
Logický ssoučin / bitový součin - správnější by bylo použití logického operátoru, s bitovým opoerátorem to chybu nehlásí a vyhodnocuje se tak jak jsem zymýšlel, tak jsem to tam holt nechal, ale opravím to.

Připojení vstupů a výstupů - zde tuším též zradu, ale zatím jsem chybu neobjevil.
Výstupy - relé jsou ovládána přes spínací tranzistory, triaky přes optočleny a výkon.FET přímo z MCU.
Vstupy jsou ovládány výstupy z komparátorů (OZ) přes PCB. Vše jsem kontroloval oscilem a nic jsem nezjistil.
Tak trochu nerozumím snímání stavu vstupů s 10ms odstupem ...... prosím, trochu polopatičtěji.

Opravím, odzkouším a poreferuji.

Zatím díky, pánové.

Napsal: 16 dub 2013, 17:05
od Jenda_KL
epes píše:Proč jsem nepoužil MCU s PU už dnes nevím, ale asi by to bylo lepší, ale už je jpozdě
Ty jsi je z toho procesoru vyletoval ven?

Napsal: 16 dub 2013, 17:34
od epes
No, jasan. Mám na to takové speciální zařízení - PC a dva prsty.

Napsal: 16 dub 2013, 18:33
od epes
Tak chyby v programu jsem opravil, přložil, naprogramoval MCU, zasunul do desky, pomodlil se a ...... vše při starém.
Jakmile se k pinu D1=1, D5=, D4=1 přidá ještě pin D3=1 začne si program dělat co chce.

Napsal: 16 dub 2013, 20:28
od Jenda_KL
A chyby v hardwaru jsou taky opravený?

Napsal: 16 dub 2013, 22:01
od epes
Jenda_KL píše:A chyby v hardwaru jsou taky opravený?


Jaké máš konkrétně na mysli?

Napsal: 17 dub 2013, 08:19
od Jenda_KL
Viz předchozí příspěvky.
hranice mezi 0 a 1 je ca 0.7V což uzeměním přes 15k odpor je těžko spolehlivá záležitost.