PIC16F1847 a falesne spinani vstupnich pinu na portu RA

Pavel Hudecek edizon na seznam.cz
Pondělí Květen 27 14:36:41 CEST 2013


No, ne tak docela. V mých zařízeních mám vstupy SW ošetřené tak, že se 
podobné problémy nedějí, přestože výchozí hodnotu definuje odpor řádově 
vyšší. Pinzetu k testování používám často a dokud piny skutečně nespojím, 
"stisk tlačítka" se nekoná.

Nejčastěji používám něco v tomto stylu:

Program v pravidelných intervalech, nejčastěji 1/ms kontroluje hodnotu. 
Pamatuje si původní stav a má-li dojít ke změně, musí nový stav detekovat v 
souvislé řadě, např. 16x za sebou.

Skutečnou EMC odolnost lze dále zvýšit přítomností C paralelně ke vstupu, 
ale jak již bylo řečeno, nesmí se zapomenout na další R, který ochrání 
tlačítko před postupným zničením.

PH

From: "Jaromir Sukuba" <jarin.hw na gmail.com>
Mozno som nieco zasadne prehliadol, ale - to, ze po skrkani skrutkovacom po
IO pinoch dochadza k bezhlavemu skakaniu logickych hodnot snad nema nic
spolocne so softwarovymi zalezitostami.
To, co s tym skrutkovacom robite je EMC testovanie z ktoreho vyplvya iba
to, ze na IO piny sa nesiaha bez adekvatnej ochrany. Tym 100nF kondikom bol
vykonany prvy krok.

2013/5/27 Milos Sula <sula na rps.cz>
> Tak jsem otočil polaritu spínání, a teď spínám proti GND a problém
> přetrvává. Jediné co pomohlo je 100nF paralelně na tlačítko.
> ANSEL  a komparátory jsou vypnuté ( vysledny ASM jsem nezkoumal - nevyznám
> se v tom, debugovat nelze - mám jen PICKIT2 ), ale přikládám pro jistotu
> .lst. Kapacitní snímače mě také napadly, ale nikde je nezapínám a pokud je
> v ccsc neinicializuji, tak by měli zůstat vypnuté ....
>
> .................... SET_TRIS_B(0b11111000);
> 0289:  MOVLW  F8
> 028A:  TRIS   6
> .................... SET_TRIS_A(0b00111110);
> 028B:  MOVLW  3E
> 028C:  TRIS   5
> .................... port_b_pullups(0b11111000);
> 028D:  MOVLW  F8
> 028E:  MOVLB  04
> 028F:  MOVWF  0D
> 0290:  MOVLB  01
> 0291:  BCF    15.7
> ....................
> .................... setup_adc( ADC_OFF );
> 0292:  BCF    1D.0
> .................... setup_adc_ports(NO_ANALOGS);
> 0293:  BCF    1E.0
> 0294:  BCF    1E.1
> 0295:  BCF    1E.2
> 0296:  MOVLW  00
> 0297:  MOVLB  03
> 0298:  MOVWF  0C
> 0299:  MOVWF  0D
> .................... setup_comparator(NC_NC_NC_NC );
> 029A:  MOVLB  02
> 029B:  CLRF   12
> 029C:  CLRF   11
> 029D:  CLRF   14
> 029E:  CLRF   13
>
> Dne 27.5.2013 12:41, Andrej Jancura napsal(a):
>> tiez si myslim, ze je cosi zle nastavene. Okrem registrov TRIS, treba
>> este nastavit analogove piny ( register ANSEL), pripadne vypnut 
>> komparatory
>> a hlavne sa pozriet ci tam nie su zapnute kapacitne snimace CAPSense
>> mTouch. Tie totiz strkaju uplne vsade, aj tam, kde ich netreba. 



Další informace o konferenci Hw-list