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   674 / 1210
(#) kissi válasza maya711 hozzászólására (») Máj 31, 2015 /
 
Szia!

Szerintem simán előfordulhat, hogy a korábban használt USB aljzatod ( ill. a bent hozzácsatlakozó elektronika ! ) döglött be !
Próbálj ki más aljzatot is!
szerk: Nem sokáig vártál a válaszra !
A hozzászólás módosítva: Máj 31, 2015
(#) ktamas66 válasza Pali79 hozzászólására (») Máj 31, 2015 /
 
Én csak smd alkatrészeket használok kiépített ICSP porttal, ezért a táp nem okoz problémát. A PK3-mal közvetlenül az Mplab-ból programozom az áramkört, a PK2-nél a nem támogatott pic-eknél ezt csak külön programból tehetem meg (lehet csak +2 kattintás). Mivel az újabb pic-ek sokkal olcsóbbak és többet tudnak, a PK3 nem váltogatja olyan sűrűn az FW verziókat. A PK2 nagy előnye az egyéb szolgáltatásokban van ( + Hp41C fejlesztései), de ha csak programozásról van szó, szerintem PK3.
(#) ktamas66 válasza maya711 hozzászólására (») Máj 31, 2015 /
 
A PK3-ban nincs 47µF tápszűrés, az a Vpp-t előállító step-up kondija. Az 5Vusb pedig elég sok mindenen keresztül megy, hogy bármit lehessen mondani. Nem tudom az Mpab-X tesztje ír-e valami hibát. A leírás szerint a PK3 max. 30mA-ig terhelhető.
(#) maya711 válasza ktamas66 hozzászólására (») Máj 31, 2015 /
 
A 47µF-os(és az egyéb emlitett) kondik az én kisérleti panelomon van. A PicKit-be nem nyúltam bele. MPLAB 8.92-t használok, Windows XP alatt. Üzenet csak ennyi: Programming/Verifying/Reading failed. A panelom 5mA-nél nem vesz fel többet.
De persze gyanús hogy mégis valami áramkorlát oka lehet, talán éppen a PicKit meghibásodása miatt. Éppen ezért kérnék valakit hogy egy sima digit műszerrel mérjen rá az 5V-os tápra valamilyen áramkörben(de a tápot a PicKit adja!) programozás alatt. Mert ez nálam veszettül mozog (0)-5V között ilyenkor.
(#) ktamas66 válasza maya711 hozzászólására (») Máj 31, 2015 /
 
Megnéztem. Az hogy veszettül mozog az túlzás, egy ki-be kapcsolás van benne szerintem.
(#) Pali79 hozzászólása Máj 31, 2015 /
 
Meg tudná valaki mondani, hogy a PIC18F családnál a J és K mit jelent?
(#) zenetom válasza Pali79 hozzászólására (») Máj 31, 2015 /
 
Főleg a tápfeszültségben vannak különbségek, illetve a K verzió gyorsabb.
(#) Pali79 válasza zenetom hozzászólására (») Máj 31, 2015 /
 
Köszönöm szépen!
(#) Pali79 hozzászólása Máj 31, 2015 /
 
Van egy program ami a megszakításokat számolja olyan módon, hogy növel egy változót, az éppen aktuális értéket a portokra csatlakoztatott ledek jelzik binárisan és ha a változó értéke elér egy előre definiált értéket, a program egy "goto $" utasításra megy, hogy lássam, megállt. A kérdés az, szerintetek miért van az, hogy a "goto $"-re ugrás mindig eltérő darabszámú megszakítás után jön létre, holott semmi sem változik.
(#) zenetom válasza Pali79 hozzászólására (») Máj 31, 2015 /
 
Ez így nem egészen tiszta. Le tudnád írni az idevonatkozó kódot? Egyébként a "goto $" használata állítólag nem teljesen előnyös, jobb inkább a "goto label" helyette.
(#) zenetom válasza (Felhasználó 15355) hozzászólására (») Jún 1, 2015 /
 
Esetleg a bootloader okozhatott még valami galibát, gondolom írás előtt próbáltad törölni is.
Csatolok képet a törlés és a programozás utáni állapotról, de Nálad is ugyanennek kéne lennie.
A "CNCUSB_Bootloader-20100111_full_fixed"-et raktam bele.
(#) nedudgi válasza zenetom hozzászólására (») Jún 1, 2015 /
 
Ezt hol olvastad? A "goto $" teljesen rendben van.
A "goto $+/- x" forma az, ami okozhat problémát.
(#) Pali79 válasza zenetom hozzászólására (») Jún 1, 2015 /
 
kicsit össze-vissza, nézzétek el ezt most.
  1. LIST    p=16F628A
  2.         include "P16F628A.inc"         
  3.         __config 0x3D18                
  4.  
  5.         cblock  0x20                    ;start of general purpose registers
  6.                 count
  7.                 count1                          ;used in delay routine
  8.                 counta                          ;used in delay routine
  9.                 countb                          ;used in delay routine
  10.                 STATUS_SAVE
  11.                 W_SAVE
  12.                 szamlalo
  13.         endc
  14.  
  15.                
  16.         org     0x0000                          ;org sets the origin, 0x0000 for the 16F628,
  17.         goto    Start
  18.        
  19.         org     0x0004
  20.  
  21.         MOVWF   W_SAVE   ;ElĹ‘ször a Work regisztert
  22.         MOVFW   STATUS   ;STATUS-t bele a már lementett Workbe
  23.         MOVWF   STATUS_SAVE  ;Status_save-be beletölti a Worköt
  24.  
  25.  
  26.         BCF     INTCON,INTF  ;TöröljĂĽk az INTF flag bitet (JelezzĂĽk, kezeltĂĽk a megszakĂ­tást RB0)
  27.         incf    szamlalo
  28.  
  29.  
  30.  ; VisszatöltjĂĽk a Work Ă©s Status regisztereket
  31.         MOVFW   STATUS_SAVE
  32.         MOVWF   STATUS
  33.         MOVFW   W_SAVE
  34.  
  35.  
  36.         RETFIE     ;VisszajövĂĽnk az interruptbĂłl
  37.        
  38. Start                                                   ;this is where the program starts running      
  39.         movlw   0x07
  40.         movwf   CMCON                   ;turn comparators off (make it like a 16F84)
  41.         movlw   0x0A
  42.         movwf   count
  43.         bsf             STATUS,RP0                                      ;Unit az m_bank.asm-ben
  44.         MOVLW   B'00000000'             ;Betöltjük az akksiba a TRISD-be valót
  45.         MOVWF   TRISA                   ;Beletöltjük (mind kimenet a nulla miatt)
  46.         MOVLW   B'00000001'             ;Betöltjük az akksiba a TRISB-be valót
  47.         MOVWF   TRISB                   ;Beletöltjük az 0. PORTB bemenet lesz
  48.  
  49.         BCF             OPTION_REG,INTEDG       ;Lefutó élre interruptol (1 = felfutó, 0 = lefutó él)
  50.         bcf             STATUS,RP0                                      ;BANK0-ba visszalépünk
  51.  
  52.  
  53.         ;Beállítjuk az RB0 interruptot
  54.         BSF             INTCON,INTE                     ;Engedélyezzük az interruptot az INT0-ra
  55.         BSF             INTCON,GIE
  56.         clrf    szamlalo
  57.         call    Delay
  58.         decfsz  count
  59.         goto    $-2
  60.  
  61. Loop   
  62.         movlw   0xff
  63.         movwf   PORTA
  64.         call    Delay                   ;this waits for a while!
  65.         clrf    PORTA
  66.         call    Delay
  67.         movlw   0x02
  68.         subwf   szamlalo,w
  69.         btfss   STATUS,Z
  70.         goto    Loop                    ;go back and do it again
  71.         clrf    INTCON
  72.         goto    $
  73.        
  74.        
  75. Delay  
  76.         movlw   d'100'                  ;delay 250 ms (4 MHz clock)
  77.         movwf   count1
  78. d1      movlw   0xC7                    ;delay 1mS
  79.         movwf   counta
  80.         movlw   0x01
  81.         movwf   countb
  82. Delay_0
  83.         decfsz  counta, f
  84.         goto    $+2
  85.         decfsz  countb, f
  86.         goto    Delay_0
  87.  
  88.         decfsz  count1  ,f
  89.         goto    d1
  90.         retlw   0x00
  91.  
  92.         end
(#) sonajkniz válasza Pali79 hozzászólására (») Jún 1, 2015 /
 
A delay-t retlw 0X00-val zárod. Azaz W-be 0-át töltessz. A visszatéréskor ennek csak akkor van értelme, ha fel is használod. Viszont a 62. sorban 255-re írod át, a 67.-ben pedig 2-re.
Ha jól tudom, a 16-os széria még egyesével lépteti a programsorszámot. Így az 57-59 egy elég hosszú várakozás van. Ez szándékos?
A 72. sorban csak annyi áll, hogy goto $. De hogy hová ugorjon, azt nem adod meg.
Ha ez a megállító sor, akkor nem $-0 nak kellene lennie?
Még egy apró észrevétel!
Számodra nem zavaró, hogy a változókat hol decimálisan, hol kódban adod meg:
A hozzászólás módosítva: Jún 1, 2015
(#) ktamas66 válasza Pali79 hozzászólására (») Jún 1, 2015 /
 
Nem tudom hogy jön az IT, de:
1., az IT rutinban a MOVF-es visszamentés elpiszkálhatja a Z bitet, az adatlapban sem így van megoldva,
2., lehet túl korán engedélyezed a megszakítást, mert az utána következő várakozás alatt ki tudja hány impulzus jön be,
3., mi van, ha a port kapcsolgató várakozások alatt a számláló pont túllép a 2-n, ilyenkor megvárja míg újra körbeér.
(#) Baxi hozzászólása Jún 1, 2015 /
 
Hi Mesterek!
Bevásároltam 18F25K50-ből 2db-ot, de nem látja a pk2-ő. Most néztem meg hogy nincs is a támogatott eszközök között fellehet valahogy varázsolni a pk2-re hogy lekezelje?
(#) kissi válasza Baxi hozzászólására (») Jún 1, 2015 /
 
Szia!

Ez a Te topic-od : Bővebben: Link !
(#) Pali79 válasza sonajkniz hozzászólására (») Jún 1, 2015 /
 
Ezért mondtam, hogy kicsit össze-vissza. Ezt gyorsan összeollóztam, kiegészítettem.
A goto $ teljesen jó, ott megáll és nem megy tovább.
Nem feltétlenül zavar, hogy hol így, hol úgy van megadva az érték, mert pl. egy vezérlőregiszter állításakor jobban látom egy bináris számban, hogy mit állítottam 0-ra és 1-re. De utálok olyan sokat gépelni és a hexa számok rövidek.
A hosszú várakozás szándékos, így látom a ledeket rendesen.
(#) Pali79 válasza ktamas66 hozzászólására (») Jún 1, 2015 /
 
1. igen tudom, de itt nem számít (azt hiszem)
2. elméletileg egy sem, mert a lényege, hogy ez adja az impulzusokat annak a 12F675-nek amivel kapcsolatban korábban már kérdeztem itt. Tehát ez adja az impulzusokat, a 12F675 számolja, megfelelő számú után kiad egy jelet. Ezt a jelet veszem ezzel a 16F628-al az RB0-on. Pont az lenne a lényeg, hogy lássam, hány impulzus után válaszol a 12F675.
3. ebben lehet valami. Mi lenne erre a megoldás? Főleg így, hogy a megszakítás kiváltó egy független forrásból jön.
(#) Pali79 válasza ktamas66 hozzászólására (») Jún 1, 2015 /
 
Rájöttem, mégsem lehet a 3. a probléma, mert a megszakítások között megszámlált impulzusok sokszor csak néhány százban, esetleg ezerben térnek el egymástól. Ha újra körbe kellene mennie, akkor több tízezer és jó néhány óra lenne a különbség.
(#) kissi válasza Pali79 hozzászólására (») Jún 1, 2015 /
 
Nem tudom milyen hiba van még benne, de érdemes lenne a pdf-ben a megszakításnál a regiszterek elmentésének és visszatöltésének rutinját megfogadni, mert az a jó !
(#) Pali79 válasza kissi hozzászólására (») Jún 1, 2015 /
 
De csak a Te kedvedért!

  1. org     0x0004
  2.  
  3.         movwf   W_SAVE
  4.         movf    STATUS,w
  5.         movwf   STATUS_SAVE
  6.  
  7.  
  8.         BCF     INTCON,INTF  
  9.         incf    szamlalo
  10.  
  11.  
  12.  
  13.         movf    STATUS_SAVE,w
  14.         movwf   STATUS
  15.         swapf   W_SAVE,f
  16.         swapf   W_SAVE,w
  17.  
  18.         RETFIE
(#) kissi válasza Pali79 hozzászólására (») Jún 1, 2015 /
 
Ez még nem igazi, nemhogy a kedvemre való lenne !
A hozzászólás módosítva: Jún 1, 2015
(#) Pali79 válasza kissi hozzászólására (») Jún 1, 2015 /
 
Problémás egy pasas vagy te hallod!
Így jó?
  1. org     0x0004
  2.  
  3.         movwf   W_SAVE
  4.         swapf   STATUS,w
  5.         movwf   STATUS_SAVE
  6.  
  7.         BCF     INTCON,INTF  
  8.         incf    szamlalo
  9.  
  10.         swapf   STATUS_SAVE,W;
  11.         movwf   STATUS
  12.         swapf   W_SAVE,F
  13.         swapf   W_SAVE,W
  14.  
  15.         RETFIE
(#) kissi válasza Pali79 hozzászólására (») Jún 1, 2015 /
 
Igen, így már ez biztos nem okoz hibát !
(#) kissi válasza Pali79 hozzászólására (») Jún 1, 2015 /
 
Idézet:
  1. clrf    szamlalo
  2.         call    Delay
  3.         decfsz  count
  4.         goto    $-2


Amíg az elején ez várakozik, vajon hova áll be a számlálód ? A count-ot sem látom beállítani, ki tudja mennyiről indul és ezért mennyit késleltet: szereted az orosz rulettet ?!
A hozzászólás módosítva: Jún 1, 2015
(#) Pali79 válasza kissi hozzászólására (») Jún 1, 2015 /
 
Na ezt most nem értem! Hova áll be a számláló? Elméletileg sehova, nulla. Épp ez lenne a lényeg, hogy nullázom, majd várok. Ez így nem lesz nulla a várakozás végére?
A count az eredetibe a 41, 42. sorban kap értéket.
(#) kissi válasza Pali79 hozzászólására (») Jún 1, 2015 /
 
Benéztem , nem tekertem eléggé fel a programodat és nem láttam a 41-42.sort. Mindenesetre ha jól látom, akkor vagy 10-szer meghívod a késleltetést, miközben már működhet az INT, ez nem okozhat gondot ( közben átléphet a 2-es értéken, mint ezt már jelezték ) és akkor majd valamikor ér megint oda ?!
A hozzászólás módosítva: Jún 1, 2015
(#) Pali79 válasza kissi hozzászólására (») Jún 1, 2015 /
 
Mint mondottam volt, elméletileg nem jöhet IT, mert azt ez a program által szolgáltatott impulzusok váltják ki. Amíg az impulzusok nem mennek addig nincs ami létrehozza az IT-ot. (elméletileg)
(#) kissi válasza Pali79 hozzászólására (») Jún 1, 2015 /
 
Ezt nem értem... Mi az, hogy elméletileg ? Kösd le a 12F675-öt, tegyél rá egy pergésmentes gombot a 628 bemenetére ( a múltkor irkáltál valami hall celláról ) és próbáld ki, hány nyomásnál jelez! Van két rendszered, amelyiknél egyikben sem vagy biztos és keresteted a hibát ! Határold be jobban !
Következő: »»   674 / 1210
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