Re: PIC memóriabank->portláb
Ágó István
istvan3 at gmail.com
Fri Nov 16 10:46:17 CET 2007
70h-t konkétan nem írja, azt írja, hogy a felső 16 bájt minden bank-ban
közös.
Az AD átalakítót gondolom kikapcsoltad a lábakról, meg van az RA4 lábon
felhúzóellenállás.
Gyanús, hogy belefutottál az ún. Read-Modify-Write problémába. Nevezetesen
az, hogy ha egy lábat módosítasz, akkor először beolvassa a port lábainak
állapotát, módosítja az adott bitet, majd visszaírja a teljes portra a
tartalmat. Namost ha te egy BSF-el felhúzod az RA4 lábat, de az jobban meg
van terhelve (pl. jelentős kapacitív terhelés van rajta), és nem emelkedik
fel a feszültség a logikai egy érzékeléséhez szükséges szintre, akkor egy
BCF RA5 hatására beolvassa, hogy az RA4 lábon logikai 0 van, majd ugyanezt
visszaírja já, és máris ugrott az, hogy az előbb átállítottad egyre az RA4
lábat.
Egyik lehetőség a megoldásra, hogy a port lábait nem birizgálod BCF/BSF
utasításokkal, hanem csinálsz egy árnyékregisztert, pl. PORT_A néven, és
ebben állítod a biteket BCF/BSF utasítással, és utána az egész PORT_A-t
kimásolod a PORTA-ra.
Másik lehetőség, hogy kisebb felhúzóellenállást használsz, illetve az RA4
láb felhúzása utána vársz néhány utasításnyit (beszúrsz néhány NOP-ot,
illetve ha lehet, akkor átrendezed az utasítások sorrendjét egy kicsit),
mielőtt a PORTA valamelyik másik lábához hozzányúlsz.
Az RA4 láb különösen érzékeny, mert csak felhúzóellenállás biztosítja a
logikai magas szintet, nincs felső oldali mosfet, de a jelenség a többi
lábnál is előfordulhat.
Ugyanezen mutatvány az árnyékregiszterrel a 18F és későbbi sorozatokban már
meg van eredendően oldva, így ott nyugodtan lehet használni a BCF/BSF
utasításokat közvetlenül a lábakra.
Tóth Péter <tope1 at freemail.hu> írta, 2007.11.16.:
>
> Ágó István írta:
> > Most nem kötözködni akarok, de a 16F877 adatlapban a 12.11 fejezet
> harmadik
> > bekezdése épp ezt mutatja be, mint ideális helyet a mentésre...
> >
>
> Az általad említett fejezetben sem írja, hogy a 70H-ra mentsem, mert az
> jó.
> Viszont a 16F628-as doksiban benne van! ...hogy a macska rúgná meg...
> Amit most használok 16F737 abban meg megint nincs benne...
> Mindegy, nem is ezért vagyok igazán pipa!
>
> Emberek, mondjátok már meg nekem, hogy miért szivat engem egy egyszerű
> port pin kapcsolgatás?!
> A 16F628-asnál már szívtam az RA4-gyel, ami csak földre tud húzni, de
> azt sem mindig, csak, ha őkelme akarja...
> Át kellett kötnöm másik lábra, mert nem jöttem rá, hogy mi a baj.
> Most meg ugyanazt csinálja a 16F873 RA4-es lába, ami szintén csak lefele
> húz.
> Ha BSF PORTA.4 után van egy BCF PORTA.5, akkor a PORTA.4-et kikapcsolja!
> De miért?
> Ha megfordítom és előbb törlöm a PORTA.5-öt és utána kapcsolom be a
> PORTA.4-et, akkot meg jó!
>
> ...hogy az a bábolnai mingyá mindom micsoda...
>
> ToPe
>
> -----------------------------------------
> elektro[-flame|-etc]
>
More information about the Elektro
mailing list