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