ATTINY 2013- podivné chování

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
epes
Příspěvky: 120
Registrován: 05 srp 2008, 00:00
Bydliště: Praha 5

ATTINY 2013- podivné chování

#1 Příspěvek 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.
Přílohy
regulacekotlu.txt
(5.7 KiB) Staženo 117 x
Jenda_KL
Příspěvky: 1173
Registrován: 10 zář 2008, 00:00
Bydliště: Kadaň
Kontaktovat uživatele:

#2 Příspěvek 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Ω.
Uživatelský avatar
epes
Příspěvky: 120
Registrován: 05 srp 2008, 00:00
Bydliště: Praha 5

#3 Příspěvek 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
Uživatelský avatar
Standa33
Příspěvky: 298
Registrován: 07 lis 2009, 00:00

#4 Příspěvek 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.
Jenda_KL
Příspěvky: 1173
Registrován: 10 zář 2008, 00:00
Bydliště: Kadaň
Kontaktovat uživatele:

#5 Příspěvek 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ě.
Uživatelský avatar
Panda38
Příspěvky: 725
Registrován: 21 lis 2012, 00:00
Bydliště: Most, Praha, Lanžhot
Kontaktovat uživatele:

#6 Příspěvek od Panda38 »

Asi je v tomhle překlep?

pina=0;
pind= 0b0010000;

zřejmě bylo zamýšleno:

porta=0;
portd= 0b0010000;
Jenda_KL
Příspěvky: 1173
Registrován: 10 zář 2008, 00:00
Bydliště: Kadaň
Kontaktovat uživatele:

#7 Příspěvek 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.
Uživatelský avatar
Standa33
Příspěvky: 298
Registrován: 07 lis 2009, 00:00

#8 Příspěvek 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))
Uživatelský avatar
epes
Příspěvky: 120
Registrován: 05 srp 2008, 00:00
Bydliště: Praha 5

#9 Příspěvek 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é.
Jenda_KL
Příspěvky: 1173
Registrován: 10 zář 2008, 00:00
Bydliště: Kadaň
Kontaktovat uživatele:

#10 Příspěvek 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?
Uživatelský avatar
epes
Příspěvky: 120
Registrován: 05 srp 2008, 00:00
Bydliště: Praha 5

#11 Příspěvek od epes »

No, jasan. Mám na to takové speciální zařízení - PC a dva prsty.
Uživatelský avatar
epes
Příspěvky: 120
Registrován: 05 srp 2008, 00:00
Bydliště: Praha 5

#12 Příspěvek 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.
Jenda_KL
Příspěvky: 1173
Registrován: 10 zář 2008, 00:00
Bydliště: Kadaň
Kontaktovat uživatele:

#13 Příspěvek od Jenda_KL »

A chyby v hardwaru jsou taky opravený?
Uživatelský avatar
epes
Příspěvky: 120
Registrován: 05 srp 2008, 00:00
Bydliště: Praha 5

#14 Příspěvek od epes »

Jenda_KL píše:A chyby v hardwaru jsou taky opravený?


Jaké máš konkrétně na mysli?
Jenda_KL
Příspěvky: 1173
Registrován: 10 zář 2008, 00:00
Bydliště: Kadaň
Kontaktovat uživatele:

#15 Příspěvek 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.
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“