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   1030 / 1203
(#) ktamas66 válasza oregharcos hozzászólására (») Ápr 20, 2018 /
 
A főprogramban kimaradt a IRANY vizsgálata.
(#) benjami válasza oregharcos hozzászólására (») Ápr 20, 2018 /
 
A megszakításból kimaradt a STATUS regiszter mentése és visszatöltése. Az adatlapjában benne van hogyan lehet ezt megtenni.
(#) cassis válasza Zsora hozzászólására (») Ápr 20, 2018 /
 
Létezhet olyan eset amikor egy szubrutin verem használata nélkül kerül lefordításra?
Ugyanis van olyan szubrutinom, ahol nem látok LNK #lit14, ULINK utasításokat, illetve az ezeknek megfelelő utasítássorokat sem a kódban.
Verem esetén értem, hogy a lokális változók és az átadott paraméterek az FP keretmutató segítségével bázisrelatív módon címezhetőek (MOV [W14+Slit10],Wnd).
Igaz az én példámban mindenhol az SP (W15) került használatra bázisként, talán ez is a fordító optimalizációja?
A visszatérési érték(ek) szerintem nem kerülnek a verembe: 16 bites eredményig a W0 tárolja, felette pedig W0 -tól kezdődően helyezkednek el.
(#) cassis válasza cassis hozzászólására (») Ápr 21, 2018 /
 
megj:
Nincsenek visszatérési értékek csak érték.
(#) Zsora válasza cassis hozzászólására (») Ápr 21, 2018 /
 
Hát... Erre nem tudok válaszolni, mert nem ismerem a fordítókat.
Annak idején MikroBASIC-kel kezdtem a PIC24 programozást, és mindig megnéztem hogy az egyes programrészeket hogyan fordítja Assemblyre. Ma már csak Assemblyt használok, mert akkor tutira az lesz, amit én akarok.
(#) oregharcos válasza ktamas66 hozzászólására (») Ápr 21, 2018 /
 
Nagyon köszönöm a segítséget! Majd estére megnézem.
(#) oregharcos válasza benjami hozzászólására (») Ápr 21, 2018 /
 
Jól mondják, hogy az ember mindig hibázhat Nagyon köszönöm, hogy megnézted!
(#) Pali79 válasza oregharcos hozzászólására (») Ápr 21, 2018 /
 
Ez valóban hiba, de nem ettől nem működik. A status regisztert csak a bankváltásnál használja a program, egyébre nem, így közömbös az értéke. A baj az amit ktamás66 mondott. Hiába változik megszakításban az irány, a főprogram sehol sem használja az értékét.
(#) benjami válasza Pali79 hozzászólására (») Ápr 21, 2018 /
 
Csak bankváltásnál? Akkor az alsó 3 bitje (név szerint C, DC, Z) az smafu? Pont azok a legfontosabbak. Ha a programodban bárhol egy feltétel létrejötte és az azt követő feltételes elágazás közé beesik egy megszakítás, és az más STATUS értéket hagy maga után egészen mást fog csinálni a programod. Ráadásul a megtalálása sem könnyű, mert teljesen véletlenszerű, hogy hol milyen hibákat fog okozni.
A hozzászólás módosítva: Ápr 21, 2018
(#) Zsora válasza cassis hozzászólására (») Ápr 21, 2018 /
 
Csináltam egy gyors tesztet:
1...7db (max. 16-bites) változó esetén a paramétereket a W0...W7 regiszteren keresztül adják át a szubrutinnak. Ott LNK utasítással helyet foglalnak és elhelyezik őket. Minden hivatkozás W14 offszetes indirekt címzéssel történik. Kilépéskor a visszatérési érték a W0 regiszterbe (-től) kerül és a keret ULNK parancsra felszabadul. Több paraméter esetén a maradékot a vermen keresztül adják át, de a szubrutinon belül akkor is W14 regiszterrel hivatkoznak rájuk (mínuszos offszettel).
(#) Hp41C válasza benjami hozzászólására (») Ápr 21, 2018 /
 
Idézet:
„Csak bankváltásnál? Akkor az alsó 3 bitje (név szerint C, DC, Z) az smafu?”

Ez a feltöltött program egyáltalán nem használja azokat a biteket. Egyébként persze Neked lenne igazad, menteni kell a STATUS regisztert is.
A hozzászólás módosítva: Ápr 21, 2018
(#) Hp41C válasza superuser hozzászólására (») Ápr 21, 2018 /
 
Eddig egyszer sem csinált ilyet nekem, még a sokat szidott XC8 midrange CPU esetén sem.
(#) benjami válasza Hp41C hozzászólására (») Ápr 21, 2018 /
 
Jé, tényleg nem használja Ritkán látni ilyet.
(#) Pali79 válasza benjami hozzászólására (») Ápr 21, 2018 /
 
Én konkrétan erről a programról beszéltem, hogy nem használja, nem általánosságban.
(#) oregharcos válasza Pali79 hozzászólására (») Ápr 25, 2018 /
 
Üdv! Már két hete ezzel a programmal kínlódok. Mivel csak tanulom az assemblyt, ezért nem találom a lehetőséget, hogy hogyan hivatkozzak az IRANY-értékére. Azt már többféleképpen megcsináltam, hogy készítettem egy IRANY cimkét és próbáltam hivatkozni rá, de semmi változás.
Már többször végig olvastam a leírást, de nem megy. Jó lenne valahogy életre kelteni ezt a programot, mert a leírásban szereplő többi program működik, ez nem akar sikerülni. Szeretném megtanulni ezt a TIMER-t is. Ha tudnál segíteni, ill. egy példaprogramot mutatni, hogy mit csináljak? Nagyon köszönöm előre is a segítséget Neked és Mindenkinek!
(#) Hp41C válasza oregharcos hozzászólására (») Ápr 25, 2018 /
 
A programban az IRANY egy memória rekesz címe hiszen a CBLOCK -ban definiált.
Hivatkozni rá többféle képen is lehet:
  1. BTFSS    IRANY,0
  2. movwf  IRANY
  3. movf     IRANY,w
  4. decfsz  IRANY,f

stb.
(#) Pali79 válasza oregharcos hozzászólására (») Ápr 25, 2018 /
 
Nem a címkével van a gond. Amikor megnyomod a gombot egy IRANY nevű regiszter értékét változtatja. Ennek a regiszternek a bitjei döntik el, hogy merre legyen az irány. A gond azzal van, hogy visszatérve a megszakításból sehol nem foglalkozik vele, hogy az IRÁNY registerben milye változás történt, csak fut a program magában, pedig a megszakítás a gombnyomásra megtörténik és változik is a regiszter értéke, csak éppen nincs felhasználva sehol.
Megpróbálom majd kijavítani a hibát ha lesz egy kis időm.
(#) oregharcos válasza Pali79 hozzászólására (») Ápr 25, 2018 /
 
Nagyon köszönöm mindkét bejegyzést!
(#) gyoran válasza oregharcos hozzászólására (») Ápr 25, 2018 /
 
Pali79 javaslata alapján egyébként szerintem Te is meg tudod oldani.
A főprogramm inicializálás utáni része meg kell nézze, hogy hogy áll az IRÁNY és ennek megfelelően a JOBBRA vagy a BALRA részre kell ugorjon.
Mivel IRÁNY csak 0x00 vagy 0x01 lehet, az LSB vizsgálata megadhatja, hogy balra vagy jobbra. (BTFSS IRANY,0 után két GOTO)
Innen - az utolsó GOTO - az előbbi IRÁNY vizsgálatra ugorjon. A FORGJ gondolom "visszahurkolja" a fényt. Érzés szerint azt is az IRÁNY tesztelésre kell visszaküldeni.
A BALRA meg ugyanez (most egyébként is a JOBBRA -ba ugrik)
És egy megjegyzés: kommentálj mindent, főleg ugráscímeket, szubrutinokat, változókat. Így Neked és a segítőknek is egyszerűbb.
A hozzászólás módosítva: Ápr 25, 2018
(#) JosKa hozzászólása Ápr 25, 2018 /
 
Sziasztok!
Közel 10 éve foglalkozom PIC mikrovezérlőkkel, kezdetek óta a MikroE fordítót használom. Egy újonnan induló projektemben egy relative új MCU-t szereténk használni (PIC24FJ256GA702) - MikroE fordítók ezt (még) nem támogatják. A projekt sürgőssége miatt nincs időm kivárni, hogy bekerüljön a MikroE támogatott processzorok közé - így MPLAB-X használatára "kényszerülök". Ma feltelepítettem, kattintgattam benne pár percet - összességében nem tűnik vészesnek.
Szerintetek mire készüljek IDE váltás során? Nehéz hozzászokni? Mennyire hasonló a két fejlesztőkörnyezet?

Megtörténhet, hogy nem ide való - ebben az esetben elnézést kérek a moderátoroktól
(#) oregharcos válasza gyoran hozzászólására (») Ápr 25, 2018 /
 
Szia Gyoran! Köszönöm az infót! Majd megpróbálom hátha sikerül.
(#) Pali79 válasza oregharcos hozzászólására (») Ápr 25, 2018 /
 
Nincs időm teljesen végignyálazni az egészet és kommentek nélkül elég nehéz is, de csiszoltam rajta. Nem mondom, hogy tuti tökéletes, de gondolatébresztőnek talán jó lesz.
  1. ;A megszakítás állítja be az irányt és a főprogram lépteti a fényt.
  2. LIST P=16F84
  3.  #INCLUDE "P16F84.INC"
  4.  __CONFIG _XT_OSC&_CP_OFF&_WDT_OFF
  5.  
  6.         CBLOCK  0X0C
  7.         WSAVE
  8.         IRANY
  9.         T1
  10.         T2
  11.         PB
  12.         ENDC
  13.         ORG     0
  14.         GOTO   START
  15.  
  16.         ORG     4
  17.         BCF     INTCON,RBIF
  18.         MOVWF   WSAVE
  19.         MOVFW   IRANY
  20.         BTFSS   PORTB,6
  21.         MOVLW   00
  22.         BTFSS   PORTB,7
  23.         MOVLW   01
  24.         MOVWF   IRANY
  25.         MOVFW   WSAVE
  26.         RETFIE
  27.  
  28. START:  BSF       STATUS,RP0     ;BANK1
  29.         MOVLW   B'00011111'
  30.         MOVWF   TRISA
  31.         MOVLW   B'11000000'
  32.         MOVWF   TRISB
  33.         MOVLW   B'10000111'
  34.         MOVWF   OPTION_REG
  35.         BCF         STATUS,RP0       ;BANK0
  36.         CLRF    IRANY
  37.         MOVLW   01
  38.         MOVWF   PORTB
  39.         BSF         INTCON,GIE
  40.         BSF         INTCON,RBIE
  41.  
  42. MERRE:  BTFSS   IRANY,0
  43.                 GOTO    JOBBRA
  44.                 GOTO    BALRA
  45.  
  46. JOBBRA: BTFSS   PORTB,0
  47.         GOTO    FORGJ
  48.         MOVLW   B'00100000'
  49.         MOVWF   PORTB
  50.         CALL    DELAY
  51.         GOTO    MERRE
  52.  
  53. FORGJ:  MOVLW   B'00111111'
  54.         ANDWF   PORTB,W
  55.         MOVWF   PB
  56.         CLRC
  57.         RRF     PB,W
  58.         MOVWF   PORTB
  59.         CALL    DELAY
  60.         GOTO    MERRE
  61.  
  62. BALRA:  BTFSS   PORTB,5
  63.         GOTO    FORGB
  64.         MOVLW   01
  65.         MOVWF   PORTB
  66.         CALL    DELAY
  67.         GOTO    MERRE
  68.  
  69. FORGB:  CLRC
  70.         RLF     PORTB,F
  71.         CALL    DELAY
  72.         GOTO    MERRE
  73.  
  74. DELAY:  MOVLW     d'150'
  75.         MOVWF       T1
  76. DEL:    MOVLW       d'255'
  77.             MOVWF       T2
  78. DEL1:   NOP
  79.             NOP
  80.             NOP
  81.             NOP
  82.             NOP
  83.             NOP
  84.             NOP
  85.             NOP
  86.        DECFSZ   T2,f
  87.       GOTO      DEL1
  88.       DECFSZ    T1,f
  89.       GOTO      DEL
  90.           RETURN
  91.           END
(#) gyoran válasza oregharcos hozzászólására (») Ápr 25, 2018 /
 
Biztos sikerül. Mindent tudsz hozzá.
(#) oregharcos válasza Pali79 hozzászólására (») Ápr 25, 2018 /
 
Szia Pali79! Nagyon-nagyon köszönöm, hogy kijavítottad, kipróbáltam és megy rendesen!!!
Természetesen nagyon köszönöm mindenkinek aki segített!
(#) oregharcos válasza oregharcos hozzászólására (») Ápr 25, 2018 /
 
Hallgatok rátok és minden programnál megcsinálom a kommentet.
(#) sonajkniz hozzászólása Ápr 26, 2018 /
 
Sziasztok!

Sokszor olvasom itt a fórumon, hogy többen küszködnek szintillesztéssel.
A neten találtam egy olcsó, gyári megoldást rá.
4 csatornás, kétirányú szintillesztő.
(#) pajti2 válasza sonajkniz hozzászólására (») Ápr 26, 2018 /
 
Az a cucc teljesen dokumentálatlan. Kapcsrajz nélkül én nem hiszek el semmit
(#) icserny válasza pajti2 hozzászólására (») Ápr 26, 2018 /
 
(#) usane válasza sonajkniz hozzászólására (») Ápr 26, 2018 /
 
Minek ehhez ilyen board? Én mindig ezt a BSS138-as kapcsolást ajánlottam ha valaki kédezi és személyesen is ezt használom. Rátervezem a nyákra.
(#) Pali79 válasza usane hozzászólására (») Ápr 26, 2018 /
 
Talán azért mert nem mindenki tud/szeret smd apróságokkak forrasztgatni.
Következő: »»   1030 / 1203
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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