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