Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   253 / 1216
(#) promax hozzászólása Máj 8, 2012 /
 
Fixpontos és lebegőpontos osztás/szorzás kapcsán érdeklődnék. Nézegettem a már többször belinkelt oldal Multiply / Divide linkjein lévő példákat, és néhány kérdés felmerült bennem.
Az rendben, hogy hány bites operandusokkal számolunk, de ezek egészek/fixpontosak/lebegőpontosak?
Milyen processzorra készültek a mintaprogramok?
Például a PIC 24 közvetlenül a DIV.UD WM,Wn -el tud Unsigned 32/16-bit Integer Divide -t, vagy a MUL.SS Wb,Ws,Wnd -el Wnd+1:Wnd = sign(Wb)*sign(Ws) -t.
Ha magam akarok például fixpontos számot ábrázolni mondjuk 16 biten én határozom meg az egészrész / tötrész bitjeinek számát kedvemre egy PIC 18 -on?
És még valami: Fixpontos ábrázolás esetén miért kell negatív szám esetén mind az egészrésznek, mind a törtrésznek a venni kell a kettes komplemensét?
(#) Hp41C válasza promax hozzászólására (») Máj 8, 2012 /
 
A már többször belinkelt oldalon a Multiply / Divide linkjein lévő példák egész számokkal működnek, a rutiniknál le van írva, hogy előjeles vagy előjel nélküli számokat használ. 8 bites midrange PIC -ekre (16F) készültek, de kis munkával átírhatók 18F -ekre is.
Rendeben van, hogy a 24F el tud osztani egy 32 bites számot egy 16 bitessel, de a következő fennakad a torkán: 134217727 / 22 = 6100805 azaz 0x7FFFFFF / 0x16 = 0x5D1745, mivel az eredmény 16 bitnél nagyobb lesz... Ekkor ezekből a rutinokból kiindulva meg lehet írni a 16 bitesekre is az osztást, ami 32 bites hányadost is megenged.
16F vagy 18F -re lebegőpontos eljárások is léteznek Assembly szinten: An575 Már a jó öreg 16C84 -en lehetett használni...

A 18F -re készített frekvenciamérőben 48 / 64 bites egyész aritmetikával számolom a frekvenciából a periódusidőt (vagy fordítva) és külön tartom nyilván a tizedespont helyét...
(#) Zsora válasza Hp41C hozzászólására (») Máj 8, 2012 /
 
Idézet:
„de a következő fennakad a torkán: 134217727 / 22 = 6100805 azaz 0x7FFFFFF / 0x16 = 0x5D1745, mivel az eredmény 16 bitnél nagyobb lesz...”

A túlcsordulás bit jelzi hogy az eredmény nem ábrázolható 16 biten. Ilyenkor az osztót szorozhatjuk 256-tal (balra toljuk 8-cal), majd megismételjük az osztást. Az eredményt 32 bitre bővítjük, majd 256-tal szorozzuk (balra toljuk 8-cal). Ezután az osztás maradékát újra osztjuk az eredeti osztóval, és ezt az eredményt az előző részeredményhez adjuk 32-bitesen.
(#) Hp41C válasza Zsora hozzászólására (») Máj 8, 2012 /
 
Egy minden esetet pontosan lekezelő rutin körülbelül olyan bonyolult lesz, mit a 8 bites kontrollereken...
(#) speed008 hozzászólása Máj 9, 2012 /
 
Üdvözlete!

Megpróbáltam megépíteni egy E-dobókockát.
A nyákot megcsináltam, csak a pic 12 es hiányzik belőle.
Csináltam egy pic égetőt:

http://www.picnick.hu/egeto/eget.htm

ez a kapcsolás alapján.

A pic égetéskor kiírja, hogy "oscillator configuration found" vagy hasonlót.
A program beállításokat:

http://www.picnick.hu/egeto/ic_prog_beall.htm

erről az oldalról néztem.
A dobókockába berakom a pic et de semmi nem történik!

Ha van ötletetek elfogadnám.
(#) speed008 válasza speed008 hozzászólására (») Máj 9, 2012 /
 
Az Ic-programernél csak a program részébe kell adatot vinni?
Az eeprom részt hagyjam üresen?
A bevitelnél ha a karakterek "kínaiak" az probléma?
(#) Hp41C válasza speed008 hozzászólására (») Máj 9, 2012 /
 
Szia!

Egy újabb áldozat....
Vedd ki a 7405 vagy 74LS05 tokot az áramkörből, tegyél a helyére 7406 vagy 74LS06 áramkört. A 7405, 74LS05 alkalmatlan a feladatra.
(#) speed008 válasza Hp41C hozzászólására (») Máj 9, 2012 /
 
Köszönöm a segítséget, megpróbálom megcserélni ahogyan írtad, ha végzek vele megírom a fejleményeket.

üdv. speed008
(#) speed008 válasza speed008 hozzászólására (») Máj 9, 2012 /
 
Megnéztem a pontos hibakád. Oscillatior Callibration Value.

Bocs, hogy érdeklődök, de ez már másoknál is előjött?
Nem vagyok szakértő, de miért van ez pontosan?
(#) Hp41C válasza speed008 hozzászólására (») Máj 9, 2012 /
 
Szia!

Csatolj inkább képet a hibáról és töltsd fel a hex állmányt is.
(#) speed008 válasza Hp41C hozzászólására (») Máj 9, 2012 /
 
Üdv!

A probléma abból áll, hogy a pic et nem ithon írom, hanem az egyik ismerősömnél, mert a laptopokon nincsen soros port.

Az IC-Prog konfigurálás után, amikor a hex filet importáltam bele és fel szeretném .
égetni, hogy No "Oscillatior Callibration Value"
Rányomok, hogy igen és a program végigfult, majd kiírja, hogy a felírás sikertelen.
Próbáltam visszaolvasni, ami elvileg sikerült is.
Amikor berakom a kockába semmi sem történik vele.

Próbáltam tisztítani az PIC et dés újraírni, de a hiba ugyanúgy fenn áll.

A dobókocka kapcsolását innen vettem:

http://www.hobbielektronika.hu/kapcsolasok/elektromos_dobokocka_pic...2.html

a program pedig itt van:

http://www.hobbielektronika.hu/kapcsolasok/files/459/dobokocka.hex

A nyáktervemet mellékeltem, a ledeket próbáltam megforgatni, hátha fordítva raktam be, de semmi.


Az a gondom, hogy szerintem az égető áramkörrel van hiba, lehet az amit te mondtál, hogy 74LS05 helyett 74LS06 kellene. A Picall program például nem ismeri fel az égetőt, pedig elvileg azzal teljes kompatibilisnak kellene lennie.

Az normális, hogy a .hex filet amikor hozzáadom a programhoz, akkor vannak benne érdekes karakterek? vagy ez valami nyelveltérési hiba?
(#) Hp41C válasza Zsora hozzászólására (») Máj 9, 2012 /
 
Szia!

Lefordítottam a következő C programot 24FJ32GA002 -re.
  1. #include <p24fxxxx.h> // Common header file
  2. int main(void)
  3. {
  4. longa,b,c;
  5. a=0x7FFFFFF;
  6. b=0x816;
  7. c = a/b;
  8. }

Vettem a fáradságot és megnéztem a program memóriát, ami a mellékelt exportált listán látható.

A 8 biteseknél is bevált léptetős megoldást látom. A fordítom nem optimalizált jól, vagy a div utasításokkal bonyolultabb lenne?

div32-32.txt
    
(#) Hp41C válasza speed008 hozzászólására (») Máj 9, 2012 /
 
Szia!

Elnézést de beszúrom ide a hex állományt - nem hosszú.
Így kellene kinéznie - a színezést leszámítva...
  1. :020000040000FA
  2. :1000000001288316FF239000C8308500003081004E
  3. :1000100008309600831285010730990008308B0064
  4. :10002000C83081008319772825188028A42025143A
  5. :10003000290D290D291A013AA91A013AA919013ADB
  6. :10004000A900290D290D291A013AA91A013AA9195D
  7. :10005000013AA9004920A501492029088720240840
  8. :10006000952085000630A000A220A00B342880280F
  9. :10007000C830A10050302407A700210E0F39503896
  10. :10008000281BA70B412820308506A10B3A28851292
  11. :100090000034320D320D321A013AB21A013AB21955
  12. :1000A000013AB200320D320D321A013AB21A013A57
  13. :1000B000B219013AB20032088E200630B118310868
  14. :1000C00031193108B1193108311A3108B11A310822
  15. :1000D000311B3108B11B310831183108A0008620CE
  16. :1000E0002408952085003820A00B6F280034A60135
  17. :1000F000173085000630A0003820A420A00B7C28F3
  18. :10010000A4203820A60AA501850163000108A400E7
  19. :100110000C3003102402031887280034B100043087
  20. :100120000310310203188E28003482071034013482
  21. :1001300011340534153407341034043414340534C0
  22. :1001400015340734A301A6280130A3004630A200CD
  23. :10015000A101A10BA928A20BA828A30BA628003453
  24. :040160000034003433
  25. :0207FE000034C5
  26. :02400E00A43FCD
  27. :00000001FF


Az a baja, hogy a 25. sorban egy retlw 0x00 utasítás áll. A 0x00 helyett annak az értéknek kellene benne lennie, ami az első törlés előtt volt a kontrollerben. Mivel nem eget rengető az órajel pontossága, írj bele egy tetszőleges, nem 0x00 adatot.
Azaz a programozás előtt a 0x3FF program memória címen a 0x3455 értéknek kellene lennie. (A 0x55 a tetszőleges adat.)
(#) speed008 válasza Hp41C hozzászólására (») Máj 9, 2012 /
 
Köszi mindent!

Nem lenne nagy kérés, hogy ezt a sok jót, leírjad nekem egyszerűsítve? Még nem dolgoztam PIC el és programozó sem vagyok.

Arra rájöttem, hogy a Pic 12F629- nél van programozáskor egy program és egy EEprom ablak.
A kérdésem, hogy az EEprom ablakába kell valamit változtatni?
A 74LS06 os ic-t rakjam bele égetéskor?
Ha a te leírásodat bemásolom az égetőbe akkor lev jó lesz?

Bocs, hogy kérdezek, de kezd érdekelni a téma.
(#) speed008 válasza Hp41C hozzászólására (») Máj 9, 2012 /
 
Üdv.
Csináltam pár képet a hibáról.
Az első képen a hiba felirata látszik.
A másik kettőn pedig amikor a programot beimportáltam a programba. (Az második módszernél Assembley kódolásba is látszik valami, az elsőnél csak kérdőjelek vannak.
(#) Hp41C válasza speed008 hozzászólására (») Máj 9, 2012 /
 
Inkább ezt próbáld meg...
(#) speed008 válasza Hp41C hozzászólására (») Máj 9, 2012 /
 
Beimportáltam a programba, de a hiba még mindig fent áll.
A kocka még mindig el van vetve.

Ha lesz időm szerzek 06-os ict aztán megpróbálom azzal is.
(#) vilmosd válasza speed008 hozzászólására (») Máj 9, 2012 /
 
'07 is jo. Csak a programban at kell allitani, mert a '06 invertal, a '07 nem invertal.
(#) Hp41C válasza speed008 hozzászólására (») Máj 9, 2012 /
 
Még egy apróság: Sok programozó a gyári érték megtartása érdekében importáláskor kiolvassa a kontrollerből az osccal értéket, a hex állománybelit felülírja a kiolvasottal. Lehet, hogy az általad használt program is ilyen (én nem használom). Ez esetben az importálást úgy kell elvégezni, hogy a programozóra van csatlakoztatva a kontroller vagy az importálás után kell az értéket kézzel módosítani.

Ideje lenne egy gyári programozót beszerezni vagy utánépíteni...
(#) Zsora válasza Hp41C hozzászólására (») Máj 9, 2012 /
 
A DIV utasítást 16-bites számokkal való osztásra tervezték. Míg az osztandó szabadon bővíthető, az (A+B)/C = A/C + B/C azonosság értelmében, addig az osztó nem bontható fel így. Emiatt kell saját iterációs osztó eljárást írni 32-bites (vagy nagyobb) osztóhoz. Egyébként a DIV utasítás ugyanilyen iterációs algoritmust használ, csak hardveresen némileg megtámogatva.
(#) speed008 válasza Hp41C hozzászólására (») Máj 9, 2012 /
 
Ez a programozó elvileg ProPic2 néven fut.

Megpróbálom először kicserélni az ic-t.
Meg megpróbálom a beállításokat finomhangolni.
(#) Hp41C válasza speed008 hozzászólására (») Máj 9, 2012 /
 
Szia!
PICKit2 -t használok, ott az importálás kiolvassa az OSCCAL értéket a kontrollerből.
(#) speed008 válasza Hp41C hozzászólására (») Máj 9, 2012 /
 
Üdv!

Megpróbáltam a WinPic800 programot.

Ez a hardver elvileg törléskor viszaolvas mindent.
Bevittem vele egy programot, de itt is hibát írt ki az ellenörző egység.

Amikor az ic üres benne, akkor kiolvasáskor mindent rendben talál és 3FFF lesz mindenhol.

Olvastam olyat, hogy a túl gyors gépek is bekeverhetnek a rendszer működésében?

Nem tudjátok, hogy mi okozhatja a hibát amit kiír?

hiba.JPG
    
(#) Hp41C válasza Zsora hozzászólására (») Máj 10, 2012 /
 
Szia!

Ezen hozzászólásod alapján nem értem erre a hozzászólásomra adott válaszodat. Mégicsak a léptetős, iterálós eljárás a megoldás a 16 biteseken is. (Sőt a 32 bitesen is, ha 128 bit / 128 bit osztást kell végezni.)
(#) ferkoo válasza speed008 hozzászólására (») Máj 10, 2012 /
 
Üdv.
Nekem is ugyan ezeket a hibaüzenetet dobta a(z) Icprog és a winpic is akkor "utáltam" meg a jpm-et belefogtam a pickit2-be de idő és pénz szűkében még csak a nyáknál tartok!

Ui: Mérd meg a vpp-t és a vdd-t is hogy megvan-e, esetleg szkóppal rámérhetsz az adat és órajelre, a pic adatlapjában megtalálod mit kellene mérned.
(#) speed008 válasza ferkoo hozzászólására (») Máj 10, 2012 /
 
Már kezd lasan engem is idegesíteni a dolog. Ne, lehet hogy a pc-s programok csinálják a feszkót?
Még próbálkozok más beállításokkal.
Van egy tartalék win98 as gépem, poénból kipróbállom azon is valami öskövület rendszerrel [code=c]
(#) ferkoo válasza speed008 hozzászólására (») Máj 10, 2012 /
 
Megnéztem jobban a kapcsolási rajzot, és úgy látom az MCLR láb nincs felhúzva VDD-re, így a pic nem léphet programozói módba, úgy tudom 10K ellenállással felkellene húzni +5V-ra.
(#) speed008 válasza ferkoo hozzászólására (») Máj 10, 2012 /
 
Üdv!

Végül is egy próbát megér. Majd keresek ellen?lást aztán megpróbállom. Az alkatrészjegyzékbe volt egy plusz ell. ami nem lett felhasználva.

De lehet, hogy a programozó magába jó, mert amikor rákötöm gépre felismeri a pic et. Ha figyelmen kívül hagyom a hibajelzést fel is viszi elvileg a pic re, bár nem lehet, hogy a hex ic be megy csak adat? Visszaolvasásnál pedig mintha megírta volna a pic et.

Kipróbállom a felhúzó ellenállást, hátha segítene.
(#) speed008 hozzászólása Máj 10, 2012 /
 
Üdv!

Valaki tudna ajánlani nekem egy jól működő, könnyen megépíthető, lehetőleg USB-s pic programozót?
(#) potyo válasza speed008 hozzászólására (») Máj 10, 2012 /
 
Pickit2-n kívül nemigazán létezik ilyen. LPT portra meg Oshon vagy Watt égetője.
Következő: »»   253 / 1216
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