PIC memóriabank->portláb

Tóth Péter tope1 at freemail.hu
Fri Nov 16 11:29:18 CET 2007


Ágó István írta:
> 70h-t konkétan nem írja, azt írja, hogy a felső 16 bájt minden bank-ban
> közös.
>   
Csekély angol tudásommal próbálom értelmezni a szöveget, de nem sikerül. 
Tényleg valami olyasmit ír, hogy közös, de már hogy lenne mind a 16 
közös? Nem inkább azt írja, hogy vannak benne közös regiszterek?
A STATUS, a PCL, az FSR meg a PCLATH tényleg ugyanaz mindegyik 
regiszterben, de ez nem könnyíti meg a mentést, mert az RPx állásától 
függően mindig máshova kerül az adat, ha pl. a 20H-ra mentek.
Az viszont jó, hogy mindegy hogy melyik bankban vagyok, ha a 70H-ra 
mentem a STATUS-t, és a megszakítás végén kiolvasom a 70H-t pl. a 
bank0-ból és visszateszem a STATUS-ba akkor szépen visszaállítja az 
eredeti bank-állásokat.

> 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
>   
Ejnye... De kis buta... nem hogy a kimeneti puffert olvasná :)
> á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.
>   
Hmm. Asszem  2.8V-ot mértem rajta, mert 1K húzza fel és 1K-n keresztül 
hajom vele a tranyót.
Schmitt Triggeres ez a láb, 2.8V már magasnak kéne lenni...
Kipróbálok, a tranyó bázinán a egy 4.7K-t, azzal is ki fog nyitni, a 
porton meg feljebb megy majd a fesz.
> 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.
>   
Ez jó lehet, kipróbálom. ... micsoda programozástechnikai finomságok...
Az autómban is szar a váltó, de ha agresszívan váltok akkor jó :)
> 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.
>   
A várakozást kipróbáltam kb. 500ms-mal, nem jött be.



Kössz a tippet, hétvégén rázuhanok!

ToPe



More information about the Elektro mailing list