Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   905 / 1319
(#) Kisvé válasza trudnai hozzászólására (») Feb 3, 2011 /
 
Én egyébként az írtam, hogy
Idézet:
„árnyékregiszter (regiszterverem)”
, mivel szerintem mind a két névvel illetik.
(#) Kriss hozzászólása Feb 3, 2011 /
 
Hali!

Nem tudjátok véletlenül hogy a PIC18F45K20 analóg bemenetének a belső ellenállása mennyi kellene h legyen? PORTE,2-n használok ADC-t és 3 V mellett 15mA belemegy. Kicsit sokallom....
(#) cassis válasza trudnai hozzászólására (») Feb 3, 2011 /
 
Az árnyékregiszterrel vigyázni kell, mert olyan megszakítások kezelése esetén (pl. időzítési kiszolgálás), amely már egy futó megszakítás kiszolgálásából (pl. beérkezett karakter feldolgozása) lett meghíva, hibás esredményt ad, mivel csak 1 mélységű a verem. Igaz, ki lehet tiltani a megszakításokat is a feldolgozás alatt erre érzéketlen esetekben.
(#) Hp41C hozzászólása Feb 3, 2011 /
 
Sziasztok!

Nem is tudom kinek kellene válaszolni...
Egy nagyon népszerű típus (18F2550) errata -jából
Idézet:
„If an interrupt occurs during a two-cycle instruction that modifies the STATUS, BSR or WREG register, the unmodified value of the register will be saved to the corresponding Fast Return (Shadow) register and upon a fast return from the interrupt, the unmodified value will be restored to the STATUS, BSR or WREG register.
For example, if a high priority interrupt occurs during the instruction, MOVFF TEMP, WREG, the MOVFF instruction will be completed and WREG will be loaded with the value of TEMP before branching to ISR. However, the previous value of WREG will be saved to the Fast Return register during ISR branching. Upon return from the interrupt with a fast return, the previous value of WREG in the Fast Return register will be written to WREG. This results in WREG containing the value it had before execution of MOVFF TEMP, WREG.
Affected instructions are:
MOVFF Fs, Fd where Fd is WREG, BSR or STATUS;
MOVSF Zs, Fd where Fd is WREG, BSR or STATUS; and
MOVSS [Zs], [Zd] where the destination is WREG, BSR or STATUS.”


Nagyon sok típus küzködik még ezzel a hibával...
(#) watt válasza Kriss hozzászólására (») Feb 3, 2011 /
 
Ott valami gáz van! A bemeneti ellenállásra most nem emlépkszem, de arra igen, hogy max. 10k forrásimpedanciát szoktak megadni. Egy rajzot csatolj, hogy lássuk, hogy kötötted be!
Biztosan A/D bemenetnek van állítva a láb, nem Digit kimenetnek?
(#) Kriss válasza watt hozzászólására (») Feb 3, 2011 /
 
Működni végülis működik. A PIC-en (kikapcsolt állapotban foglalatból kivéve) a PORTE,2 és a GND között mértem ellenállást 220 Ohm volt.
(#) Kriss válasza Kriss hozzászólására (») Feb 3, 2011 /
 
Ez lenne az.

Kivezérlésjelző
(#) watt válasza Kriss hozzászólására (») Feb 3, 2011 /
 
Légyszi, olyan forátumban tedd fel a kapcsolást, amit a böngésző meg tud nyitni!
Viszont a mért érték szinte biztosan nem jó, azaz a PIC sérült. De ha működik, akkor próbáld használni!
(#) cassis válasza Hp41C hozzászólására (») Feb 3, 2011 /
 
Idézet:
„Affected instructions are:
MOVFF Fs, Fd where Fd is WREG, BSR or STATUS;
MOVSF Zs, Fd where Fd is WREG, BSR or STATUS; and
MOVSS [Zs], [Zd] where the destination is WREG, BSR or STATUS”

Milyen utasítást kell érteni a MOVSF, MOVSS alatt?
Egyébként nagyon hasznos volt nekem az errata idézet, próbálok emlékezni majd szükség esetén rá... :yes:
(#) Hp41C válasza cassis hozzászólására (») Feb 3, 2011 /
 
Szia!

Sok 18F képes az úgynevezett "Extended Instruction Set" kiegészítéssel is működni. Ide tartoznak ezek az utasítások. Bővebben pl. a 18F2620 adatlapjában...

Érdemes a típushoz tartozó errata dokumentumot is végigolvasni - sok fejfájástól megóvhatjuk magunkat...
(#) cassis válasza Hp41C hozzászólására (») Feb 3, 2011 /
 
És ha már az errataknál tartunk milyért van az, hogy belőle több verzió is fellelhető. Pl: B0, B2 stb.
Ezek hol rövidebbek, hol hosszabbak a korábbinál. Akkor tehát adott processzorra melyik errata igaz?
Ha jól emlékezem ki lehet olvasni a procból olvasni valami azonosítót, ez segíthet a beazonosításban, de honnan tudjam, ha legközelebb veszek egy IC-t az milyen errataval fog rendelkezni? Kérdezzem meg az eladót milyen REV -el rendelkezik? (Ráadásul úgytudom az errata gyűjtemény a microchip tapasztalati úton komoly fejlesztőktől begyűjtött visszajelzéseire épül, így koránt sem biztos, hogy minden esetben teljeskörű....)
Avagy hogy is van ez?
(#) Hp41C válasza cassis hozzászólására (») Feb 3, 2011 /
 
Szia!

Kétféle errata lehet:
Datasheet errata / clarification: az adatlap hibáit, esetleges homályos megfogalmazásait javítják benne. Néha az adatlapot is módosítani kell az újabb verzióhoz... Az adatlap végén van a Revision History...
Silicon errata: A chip tervezésénél becsúszott hibákat gyűjti. Minden errataban minden hibánál fel van sorolva melyik kontroller (Device Id) és melyik verziójára (Revision Id) vonatkozik. A hibákat az újabb reviziókban javítják, de volt amikor a javítás hozott be újabb hibát...
(#) cassis válasza Hp41C hozzászólására (») Feb 3, 2011 /
 
Rendben, de itt van példának egy ethernet kontroller az ENC_28J60. Ennek aztán bőven van (B1-B4-B5-B7) Silicon errataja. Device Rev '000 0010' hez ez tartozik, míg például a Device Rev '0000 0110' hez már ez .
Az a fura, hogy a B7 ben már 15 hibáról tesznek említést, addig az első kiadású B1 ben csak 6 ról. Tehát egyrészt nem világos merre fele fejlődik a processzor.
Másik dolog pedig továbbra is az, hogy amikor veszek egy ugyanolyan típusú IC-ből kettőt nem tudom meg milyen a Device Rev érékűek, tehát lehet nem is fognak egyformán működni ugyanazon körölmények között (más-más hibáik lesznek). A Fenti controller csak egy példa, de erről mi a véleményed?
(#) Robika hozzászólása Feb 3, 2011 /
 
Hellósztok,
csak egy egyszerü kérdésem lenne,adott 1 programozó,pickit3

ha mplabból beállitom,hogy ne a programozó adjon feszültséget, és adok külső tápról 5v-ot,akkor programozáskor lekell vennem a programozót, vagy ilyesmi?
vagy maradhat rajta,és nem lesz tőle semmi baja?
eddig onnan (a programozóról) adtam a feszültséget,és úgy programoztam,futattam,de most kellessz egy nagyobb áramerősséget is elbiró külső táp(labortápról)
(#) cassis válasza Robika hozzászólására (») Feb 3, 2011 /
 
Idézet:
„akkor programozáskor lekell vennem a programozót, vagy ilyesmi?”
Mit is akartál kérdezni? A PK2 nél - ha jól emlékezem - be lehet állítani, hogy auto modban felismerje Udd jelenlétét.
(#) watt válasza cassis hozzászólására (») Feb 4, 2011 /
 
Egyszer már írtam neked, hogy ezek nem processzorok!

A felvetett problémádra pedig nincs megoldás, te is tudod. Ha fejlesztesz egy adott verzióval, akkor annak az errata-ját kell figyelembe venned. Ha később cserélni kell a kontrollert, és olyan szerencsétlen helyzetbe kerülnél, hogy az akkor kapható verzióban több és más hibák vannak, és azok érintik a működést is, akkor annak az errata-ja alapján kell módosítanod a programot. Ilyen az élet, de megnyugtatlak, ezek nem olyan hibák, amik mindig, mindenhol belédütköznek, de nem ért felkészülni rájuk az erratákkal.
(#) watt válasza Robika hozzászólására (») Feb 4, 2011 /
 
Nem kell levenned.
(#) icserny válasza cassis hozzászólására (») Feb 4, 2011 /
 
Idézet:
„Ha jól emlékezem ki lehet olvasni a procból olvasni valami azonosítót”

A kiolvasott 16 bites adatból a legalsó 5 bit a revízió kódja, a többi a CPU azonosítója. PIC18 példa:
  1. unsigned int devid, cpu_id,cpu_rev
  2. rom far unsigned int *pID=(rom far unsigned int*)0x3ffffe;
  3. devid=*pID;
  4. cpu_id=devid>>5;
  5. cpu_rev=devid & 0x1F;
(#) Zsora válasza Kisvé hozzászólására (») Feb 4, 2011 /
 
Kisvé:
Igen. Amiatt írtam.

MPi-c:
Mivel én PIC24-et használok - ahol mindig így hivatkoznak rá a doksikban - én is ezt az elnevezést használom.
A PIC18 adatlapokon vagy az "FRS", vagy a "Shadow Registers" kifejezést használják. (pl. RETFIE utasítás leírásánál) Mindkettő ugyanazt takarja.

trudnai:
Tudom hogy az adatlap is veremként említi, de valójában nem nevezhető annak. (épp a mélysége miatt) Egyébként meg ezzel kapcsolatban (FAST mód) igazad van, viszont a LAT és PORT regiszterekben már nem.
(#) trudnai válasza Zsora hozzászólására (») Feb 4, 2011 /
 
Ok, latom mar, hogy a RETFIE-nel a shadow registers elnevezest hasznaljak. Ez azert igy elegge zavaro, mivel ahol ezt reszletesen magyarazak ott a stack kifejezest hasznaljak -- es szamomra egyebkent is igy lenne logikus, hiszen egy stack-et kesobb lehet boviteni tobb melysegure, egy egyszeru tarolot azonban nem.

Na mindegy, a LAT-tal kapcsolatban nem tudom mi volt a szandekod, nehez ugy vitatkozni vagy akar csak elgondolkodni is egy probleman, ha egyszeruen csak kijelented nincs igazam es punktum
(#) Zsora válasza trudnai hozzászólására (») Feb 4, 2011 /
 
"Az arnyek regiszter a LATx regiszterek, a PORTx regiszterek arnyekai."
Na, ebben nem értek veled egyet. Miért is lenne a LAT regiszter a PORT regiszter árnyéka?

PORTx: bemeneti tároló (láb aktuális állapota)
LATx: kimeneti tároló (latch)
TRISx: adatirány / a kimenet high-Z állapotú (tri-state)
(#) trudnai válasza Zsora hozzászólására (») Feb 4, 2011 /
 
Azert, mert a LAT csak az RMW hibak kikuszobolesere lett kitalalva. Tulajdonkeppen a midrange es a baseline csaladoknal megszokott szofteresen megvalositott arnyek regisztereket hivatott hardware-esen tamogatni. Ha megnezed a PORT biteket tovabbra is lehet birizgalni kimenetkent, hisz a LAT csak akkor tolja at az ertekeit a PORT-ba ha a LAT-ba irasi muvelet tortenik -- mindegy, hogy RMW vagy csak W.

De amugy mindegy minek hivjuk ezeket vegulis, lenyeg, hogy ertsuk hogyan mukodik es mikent kell hasznalni.
(#) icserny válasza trudnai hozzászólására (») Feb 4, 2011 /
 
Idézet:
„Tulajdonkeppen a midrange es a baseline csaladoknal megszokott szofteresen megvalositott arnyek regisztereket hivatott hardware-esen tamogatni.”

Ez azért nem egészen így van, illetve nem ebben rejlik a különbség, hiszen a mid-range mikrovezérlőknek is van kimeneti adatregisztere. A LATA, LATB stb. bevezetésével tehát a kimeneti oldalon nem raktak be újabb regisztert. A különbség csupán annyi lett, hogy a beolvasási útvonalat választották ketté, s LATA címen a kimeneti adatregisztert, PORTA címen pedig a lábak állapotát olvashatjuk.

Ez a kettéválasztás természetesen a read-modify-write utasítások olvasási ciklusában is érvényes, ezáltal megoldja a korábbi RMW problémákat.

Írásban azonban semmi különbség LATA és PORTA írása között, ugyanazt a kimeneti adatregisztert írják. Ezt kifejezetten írja is valahol az adatlap, de a sematikus áramköri felépítésből is látszik.
(#) trudnai válasza icserny hozzászólására (») Feb 4, 2011 /
 
Pont ez az, hogy eddig nem volt regiszter a latch-hez rendelve, az csupan egy buffer volt azodaig. Azzal, hogy lere hoztak egy regisztert nem valtoztattak meg az adat utvonalat, hiszen a portrol tovabbra is tudsz olvasni meg ha kimenetnek van beallitva is -- ez a resze pontosan ugyanugy mukodik, mint a midrange-eknel. Azonban ha a LATx regisztereket olvasod, ahogy mondtad a latch-et olvasod a port helyett -- magyaran bevezettek egy uj regsztert aminek mas az olvasasi utvonala es a celja.

Abban termeszetesen igazad van, hogy a latch ott van mindket csaladban es, hogy airaskor minden esetben ezt a latch-et irja -- ezt rosszul irtam.
(#) watt válasza icserny hozzászólására (») Feb 4, 2011 /
 
Áramkörileg a Data Latch környékén valóban nem lelhető fel különbség, ezen én is meglepődtem, de ki lehet olvasni a LATx-et is(ami nem más, mint a Data Latch tartalma)! Itt lesz az eltérés az RMW terén, mert ha PORTx-re írsz, akkor a PORTx-et olvassa be kiírás előtt, ha LATx-re, akkor a LATx tartalmát! Belátható, hogy a két módszer eredménye a kimenet valós szintjétől függően nem feltétlenül lesz azonos! Igazad van, hogy nincs külön regiszter a régihez képest, de nem mindegy, hogy mire írsz!
Közben megértettem, hogy ezt hogy értetted:
Idézet:
„Írásban azonban semmi különbség LATA és PORTA írása között, ugyanazt a kimeneti adatregisztert írják.”

A teljes porta írási folyamatban nem mindegy mit írt, de valóban csak az írási részben nincs különbség, csak ezt elég nehéz elválasztani ezért értettem félre!
(#) watt válasza watt hozzászólására (») Feb 4, 2011 /
 
Kapkodtam, kicsúsztam...
Idézet:
„A teljes porta írási folyamatban nem mindegy mit írt,”

Akarom mondani:
A teljes portra írási folymatban nem mindegy mit írsz(PORTx, LATx), ...
(#) icserny válasza trudnai hozzászólására (») Feb 4, 2011 /
 
Mielőtt teljesen elbeszélnénk egymás mellett, tisztázzuk már, hogy ki mit ért regiszter, latch és buffer alatt!

Egy meghatározás szerint a regiszterek a CPU gyorsan írható/olvasható, ideiglenes tartalmú, és egyszerre csak egy gépi szó feldolgozására alkalmas tárolóregiszterei.

Amikor tehát azt mondom, hogy a mid-range vezérlőknek is van kimeneti adatregisztere, akkor azon pontosan azokat a tárolóegységet kell érteni, amit te latch-nek, illetve buffernek nevezel. Tehát regiszter mert címezhető, írható és tárolja az adatot. Csak visszaolvasni nem lehetett, mert helyette az adatvonalak állapotát lehetett látni, ami csak akkor tükrözte a kimeneti adatregiszter állapotát, ha a TRIS regiszter megfelelő bitjének beállítása ezt írta elő.

A LATA "regiszter" bevezetése csupán annyit jelent, hogy a korábban is meglevő adatregiszter egy tri-state kapu segítségével rá lehet kapuzni az adatbuszra (lásd a mellékelt ábra pirossal megjelölt részét). Ezt szerintem nem tekinthetjük új regiszter implementálásnak, hiszen nem jött létre új tárolási egység, csak az amúgy is meglevő tároló olvashatóvá tételét szolgálja egy kapuáramkörrel.

ioport.png
    
(#) icserny válasza watt hozzászólására (») Feb 4, 2011 /
 
Idézet:
„Akarom mondani: A teljes portra írási folymatban nem mindegy mit írsz(PORTx, LATx), ...”
Na, akkor javítsunk rajta még egyet! Csak az olvasási ciklust is tartalmazó műveleteknél (R, vagy RMW) nem mindegy, hogy PORTx, vagy LATx.

Egy movwf PORTA vagy movwf LATA között nics különbség. A bcf PORTA,1 vagy bcf LATA,1 között nyilvánvalóan van, hiszen RMW művelet. Sajnálatos módona bitenkénti logikai műveletek is ez utóbbi kategóriába esnek, hiszen a port olvasása nélkül nem lenne előállítható a végeredmény.
(#) watt válasza icserny hozzászólására (») Feb 4, 2011 /
 
Ámen!
(#) trudnai válasza icserny hozzászólására (») Feb 4, 2011 /
 
En szerintem a regiszterben nem feltetlen tarolodnak ideiglenesen az adatok, de ebbe most ne menjunk bele, nem ide tartozo tema.

Valoszinuleg mas szemmel nezzuk a dolgot, ugyanis Te azt allitod, hogy mert a latch megorzi a kimeneti allapotot, ezert regiszternek kell nevezni. En meg azt, hogy a latch celja nem informacio tarolas, csupan egy kimeneti allapot rogzitese, ezert nem regiszter, hanem egy buffer. Azonban abban a pillanatban mikor megcsinaltak hozza a kiolvasasi lehetoseget mar regiszterbek lehet nevezni. Ez pedig ugye nem csupan egyetlen vezetekbol all amit pirossal bekarikaztal, de hozza tartozik egy memoria mappingeles is ami nelkul ez az adat elerhetetlen lenne. Vegeredmenyben ez is egyfajta IO mapping csak mig a PORTx eseteben ez a port labakra vonatkozik, addig a LATx-nel a latch bufferre.
Következő: »»   905 / 1319
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem