PIC16F1847 a falesne spinani vstupnich pinu na portu RA

Jaromir Sukuba jarin.hw na gmail.com
Pondělí Květen 27 17:34:30 CEST 2013


Andy,
softwarovu chybu - teda co sa tyka nastavenia periferii mozeme viacmene
vylucit. Ba dokonca si myslim, ze si kolegu Sulu zaviedol nespravnou cestou.
Ak by boli zapnute capsense vstupy (ktore udajne strkaju uplne vsade) tak
by sa to samozrejme neprejavilo pri citani z PORT vstupov. Su v zasade dve
metody, ktore Microchip pouziva pre touch sense apliackie - ale ani jedna
nefunguje tak, ze nieke zapnes nejaky bit a potom citas stav touch sense
vstupov v PORT registri. Je to pomerne zlozite na nastavenie a
vyhodnotenie, stav sa cita ako hodnota nejakej premennej a tuto musis
filtrovat a porovnavat. Odporucam precitat si appnotes od Micrchipu.
Ak by bol problem s prepnutim analogovych/digitalnych vstupov, tak by sa
opat neprejavil - analogovy vstup vracia pri digitalnom citani (PORT
registre) stale hodnotu 0.
Ak by bol problem s LVP, tak by sa PICko divoko resetovalo.
Ak by bol problem s pull-upmi zapnutymi na porte B, tak by bol problem na
porte B a nie na porte A.

S tym kondenzatorom - neboj mam predstavu o tom ako to s tym kondikom
funguje :-)

Problem je inde - skratka CMOS vstupy su citlive na ESD eventy. Zatlcenie
4k7 odporom pomoze, ale nie vseobjimajuco. Zatlcenie 100nF kondikom
evidentne pomohlo viac- pretoze do znacnej miery absorboval naboj prineseny
skrutkovacom. Takisto by pomohol transil, trebars P6KE6V8. A este nejaky
seriovy odpor by bol fajn.

To, ze to nerobilo s 16F628 je dane tym, ze 16F628 je pomerne stary obvod,
bol robeny "hrubsou" technologiou. 16F1847 je robeny novsou (ved aj interne
bezi na 3V ci kolko), tym padom ma aj mensiu toleranciu k takej nesmiernej
hrubosti ako je tukanie po pinoch skrutkovacom, ktory je nabity nabojom z
ludskeho tela.

Riesenim je osetrit vstup na ESD a software si urobit tak, aby stlacene
tlacidlo neregistroval pri kazdom zakaslani - ale tak to malo byt urobene
uz pre ten PIC16F628.



2013/5/27 Andrej Jancura <aj.hwlist na gmail.com>

> Ahoj,
>
> 2013/5/27 Jaromir Sukuba <jarin.hw na gmail.com>
>
>> To mate pravdu - ale nejaky debouncing je predsa absolutne samozrejma
>> vec, ktoru sa ucia deti v skolke, nie? ;-) (samozrejme, ze nie - staci si
>> prezriet internetove fora)
>> Tu kolegovia hladaju zapnute / vypnute nejake periferie, co je IMHO
>> celkom mimo.
>>
>
> Pokial mas na mysli mna, tak som chcel vylucit chybu v softe v
> minimalistickej aplikacii. Lebo ako hovori skusenost, najviac chyb je medzi
> stolickou a klavesnicou...
>
>
>>
>> Okrem toho skrtat skrutkovacom po pinoch prinasa rozlicne vysledky -
>> podla toho co mate oblecene, na com sedite/stojite/lezite, aka je vlhkost
>> vzduchu a tak.
>> Takze najprv to osetrit na EMC (kondik, transil) - co je vec, ktora musi
>> ist na akekolvek tlacidlo - a potom sa pripadne pohrat s debouncingom aby
>> bol viac ci menej citlivy na "rusenie".
>>
>
> No pokial mas na mysli kapacitu 100nF, ako si tu prezentoval, tak si
> myslim, ze nemas predstavu co za rusivy impulz tym kondikom vobec pohne. A
> to nehovorim o tom, ze tam mas vysokoimpedancny vstup IO pinu zatlmeny
> odporom 4k7. To na vzdusne vyboje dotykom srobovaka urcite reagovat nebude
> (pokial cosi samozrejme nevyskratujes). Si skor myslim, ze tam je nejaka
> funkcna chyba ako EMC. Tipujem nieco s LVP, nieco okolo tych pull-upov a
> toho mTouch... No ale vsak on nam to kolega snad prezradi, ked to rozchodi.
>
> A.
>
>
>
>>
>>
>> 2013/5/27 Pavel Hudecek <edizon na seznam.cz>
>>
>>> 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.
>>>>>
>>>>
>>> ______________________________**_________________
>>> HW-list mailing list  -  sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/**listinfo/hw-list<http://list.hw.cz/mailman/listinfo/hw-list>
>>>
>>
>>
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>>
>>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20130527/673fa9c2/attachment.htm>


Další informace o konferenci Hw-list