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   147 / 1210
(#) janikukac válasza kaqkk hozzászólására (») Okt 20, 2011 /
 
Okés, tanulmányozni fogom, köszike !!
(#) Junkie válasza vicsys hozzászólására (») Okt 20, 2011 /
 
akkor ezek szerint soros port felejtős ? esetleg valami használható LPT-re? semiképp sem szeretnék méregdrága gyári kütyüt venni
(#) kaqkk válasza Junkie hozzászólására (») Okt 20, 2011 /
 
Vegyél ,vagy építs pickit2 klónt ! Már itt az apróban is találsz 4-5000ft körül
(#) Hp41C válasza peze hozzászólására (») Okt 20, 2011 /
 
Itt a bankváltásokkal van baj. Az ANSEL törlése még rendben megy, de utána a TRISB, TRISD az 1. bankban van, de a 2. bank kiválasztásával próbálod írni, stb...
A banksel tényleg segít:
- ha még nem tudom melyik regiszter melyik bankban van,
- ha egy programot át szeretnénk írni más kontrollere: pl. 16F628 -ban az eeprom regiszterei más bankban van, mint a 16F88 -ban. Ha a programban banksel -lel állítják be az összes bankot, kisebb változtatásokkal megoldható az áttérés.
(#) peze válasza Hp41C hozzászólására (») Okt 20, 2011 /
 
Köszönöm a válaszodat!

Igen,láttam a táblázatot a 25.oldalon.
Akkor a 2-es Bank az:

BSF STATUS,RP1
BCF STATUS,RP0

,ugye?
(#) peze válasza peze hozzászólására (») Okt 20, 2011 /
 
Na,belezavarodtam..

Szóval.Az 1-es Bank az:

BCF STATUS,RP1
BSF STATUS,RP0

,ugye?
(#) tibike32 válasza nedudgi hozzászólására (») Okt 20, 2011 /
 
Még mindig küzdök vele, mást szépen lefordít hex-re, de ezt nem akarja.
(#) peze válasza peze hozzászólására (») Okt 20, 2011 /
 
Yes,yes!
Végre történik valami.Alap helyzetben a led világít,és egy megfelelően hosszú gomb nyomásra elalszik,majd egy idő múlva újra világít.És így tovább.Igaz nem ezt akartam,de legalább siker élmény!


  1. LIST P=16F887
  2.   #include <p16F887.inc>
  3. __CONFIG    _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
  4. __CONFIG    _CONFIG2, _WRT_OFF & _BOR21V
  5.  
  6.  
  7.         cblock 0x20
  8.         T1
  9.         T2
  10.         T3
  11.  
  12. ENDC
  13. ORG0
  14.  
  15. START
  16. BSF    STATUS,RP1  
  17. BSF    STATUS,RP0
  18.  
  19. CLRF    ANSELH            
  20.  
  21. BCF     STATUS,RP1
  22. BSF     STATUS,RP0  
  23.  
  24.  
  25. MOVLWB'00000001'        
  26. MOVWFTRISB
  27. MOVLW   B'00000000'
  28.     MOVWF   TRISD            
  29.  
  30. MAIN    
  31.     BCF     STATUS,RP0        
  32.     BCF     STATUS,RP1
  33.  
  34. MOVLW   B'00000000'
  35.     BTFSC   PORTB,0
  36. MOVLW   B'00000001'
  37. MOVWF   PORTD
  38. CALL    DELAY      
  39. GOTOMAIN
  40.  
  41. DELAY
  42. MOVLWd'100'
  43. MOVWFT1  
  44. DEL
  45. MOVLWd'255'
  46. MOVWFT2  
  47. DEL1
  48. MOVLWd'20'
  49. MOVWFT3  
  50. DEL2
  51. NOP
  52. DECFSZT3,f
  53. GOTODEL2
  54. DECFSZT2,f
  55. GOTODEL1
  56. DECFSZT1,f
  57. GOTODEL
  58. RETURN
  59.  
  60.  END [code=asm]
(#) Poostmaster válasza peze hozzászólására (») Okt 21, 2011 /
 
Remek!
Örülök, hogy megvan az első sikerélmény. Nem tudom, mi az amit el szerettél volna érni, de biztosan rájössz arra is.
Ahogy Hp41C mondta, egyszerűbb a banksel, de ha egyszer rájöttél a lapok közti váltásra, akkor így sem lesz gond.
Nem bonyolult, csak azt kell végiggondolnod, hogy a lapok 0-3 ig vannak számozva.
A sorszámukat kell beírnod binárisan a 2 regiszterbe RP1,RP0 sorrendben. Tehát
00-> bank0
01-> bank1
10-> bank2
11-> bank3
De ezt már láttad az adatlapban. Természetesen csak azt kell állítani, amelyik hatására történik is valami.
Alaphelyzetben a felállás 00.
A programodról:
Sorjában haladok.
A használt portokat célszerű mindjárt a legelején törölni, mert induláskor akármilyen értéket fölvehet.
Ez esetleg nem várt felvillanáshoz, vagy más működéshez vezethet. Még a beállítás előtt tedd meg.
A MAIN címke lehet két sorral lejjebb, mert a bank beállítását nem kell minden ciklusban elvégezni.
A beállításkor a TRIS-be célszerű egész bájtot írni, de a portot már nyugodtan kapcsolhatod bitenként.
Így a 2 utasítás helyett 1-el bekapcsolhatod a ledet.
Idézet:
„Alap helyzetben a led világít,és egy megfelelően hosszú gomb nyomásra elalszik,majd egy idő múlva újra világít.”


Ez azért van, mert a gombnyomás vizsgálata után teszed be a W-be a PORTD értékét. Nem tudom, hogy van-e a gomb prellmentesítve az áramkörben, de ha a program azt az időpillanatot kapja el, amikor az érintkezők nem zártak, akkor ezt az utasítást átugorja, és azt küldi ki a portra, ami épp a W-ben volt.
Ide tehát egy visszaugrást kell tenned.
(#) Poostmaster válasza Poostmaster hozzászólására (») Okt 21, 2011 /
 
Most még utólag vettem észre, hogy a 34. sorban van egy MOVLW B'00000000'. Ez teljesen fölösleges. Ha pedig törölni akarod a regisztert, használt a
CLRF 'regiszternév'-et.
Ez egy lépésben megteszi.
(#) Poostmaster hozzászólása Okt 21, 2011 /
 
Sziasztok.
Megírtam az óra programomat, de nem igazán értem, mit rontottam el. Lefuttattam a szimulációban, és az első perc végére tettem egy töréspontot. Odáig mértem vele az időt. A végeredmény az lett, hogy egy perc nekem 196,59 másodpercig tartott.
A PIC 20MHz-re van beállítva.
(#) Hp41C válasza Poostmaster hozzászólására (») Okt 21, 2011 /
 
Szia!
- A 45. sorban a TMR2IE bit nem a PIR1 -ban, hanem a PIE1 -ben van,
- A 46. sorban engedélyezed a megszakítást, de a 0x004 címen nem a megszakítás kiszolgáló program kezdődik.
- Hiába írod a GIE -t 1-re, ha a PEIE 0, a timer2 megszakítás kérést nem fogadja el a kontroller. Hiányzik a bsf INTCON,PEIE sor.
- BSF T2CON,2 helyett BSF T2CON,TMR2ON
- Ja engedélyezed a megszakítást, miért programozottan várod a timer2 kérést.

- Végülis az első, második és harmadik hibák kiütik egymást és a program valahogy működik...
(#) Poostmaster válasza Hp41C hozzászólására (») Okt 21, 2011 /
 
Köszi, de nem ez a gond.
Kivettem a 45, 46-os sort, és az eredmény változatlan.
Nem akarom megszakítással kezelni.
(#) Poostmaster válasza Poostmaster hozzászólására (») Okt 21, 2011 /
 
Valahol az osztónál lehet gond, mert ha csak 1 túlcsordulást mérek, az is 13,1 ms 4 helyett.
Elvileg nekem a 20 MHz negyedét kell leosztanom nem?
(#) pajti2 hozzászólása Okt 21, 2011 /
 
Srácok Profibus témában képben van valaki? VPC3+ stack-et keresnék pic-hez, és hát nem lelek. Értetlenül állok az eset előtt.
(#) doup hozzászólása Okt 21, 2011 /
 
Sziasztok, szeretnék egy 16f877a pic-et belőni egy egyszerű ledvillogtatós progival de sajna vagy össze vissza villog nem a késleltetésnek megfelelően vagy pedig csak világít egyfolytában.
  1. void main() {
  2.      TRISA = 0x00;
  3.      TRISB = 0x00;
  4.      TRISC = 0x00;
  5.      TRISD = 0x00;
  6.      TRISE = 0x00;
  7.      PORTA = 0;
  8.      PORTB = 0;
  9.      PORTC = 0;
  10.      PORTD = 0;
  11.      PORTE = 0;
  12.      while(1)
  13.      {
  14.              PORTE.B0 = ~PORTE.B0;
  15.              Delay_ms(100);
  16.      }
  17. }


Remélem valaki tud nekem segíteni.

16f877a.png
    
(#) Hp41C válasza doup hozzászólására (») Okt 21, 2011 /
 
Szia!

A két db 100nF kerámia kondenzátor lemaradt a pic két oldalán a táp és a föld lábak közül.

Lassan már óránként kell leírni.
(#) Hp41C válasza pajti2 hozzászólására (») Okt 21, 2011 /
 
Sajnos a Profibus zárt ipari szabvány, a leírásáért, felhasználásáért fizetni kell...
(#) doup válasza Hp41C hozzászólására (») Okt 21, 2011 /
 
1µF nem jó mert nincs otthon 100nf kondik?
(#) Hp41C válasza Poostmaster hozzászólására (») Okt 21, 2011 / 1
 
Azok a bankváltások, és a bitek a elcsúsztak a T2CON regiszterben... A mellékletben a megszakításos megoldásban a számítás már 4 ms -onként fut le...
(#) Hp41C válasza doup hozzászólására (») Okt 21, 2011 /
 
Kerámia az a kondenzátor?
(#) doup válasza Hp41C hozzászólására (») Okt 21, 2011 /
 
A kerámia az narancssárga színű? Mert nem ismerem így
(#) vicsys válasza doup hozzászólására (») Okt 21, 2011 /
 
(#) doup válasza doup hozzászólására (») Okt 21, 2011 /
 
Egyébként a led nem villog de ha megfogom kézzel a kvarcot akkor vibrál a led.
(#) doup válasza vicsys hozzászólására (») Okt 21, 2011 /
 
van ilyenem de 33pf az jó lesz? configurációs bits az 2f49 re állítottam lehet ezzel lesz baj? De hiába húztam a 33pf kondival a vss-t a földre vibrál a led nem egyfolytába világít és ráadásul össze vissza.
(#) doup válasza (Felhasználó 15355) hozzászólására (») Okt 21, 2011 /
 
Vagyis VDD bocsi
(#) kaqkk válasza doup hozzászólására (») Okt 21, 2011 /
 
Az mclr engedélyezve van és föl van húzva +ra ?
(#) doup hozzászólása Okt 21, 2011 /
 
Sajnos nem tudom neked megmondani mert a pickit2 progijából csak hex-ben lehet bitek megadásával így fogalmam sincs hogy az melyik azt tudom hogy az első kettő az osc beállítása a többit nem tudom valaki ebben tudna segíteni hogy mikroc pro-ban hogy lehet ezeket a config biteket megadni?
(#) Hp41C válasza doup hozzászólására (») Okt 21, 2011 /
 
A 33 pF nem jó, de 33nF .. 1µF kerámia már jó megoldás. Esetleg 1 .. 10µF tantál (olyan mint egy mázas cukorka csk két kivezetés van az alján - vigyázz polarizált, a + a Vdd -re menjen)., 6.3V -os vagy nagyobb feszültségű. Bővebben: Link..
(#) potyo válasza doup hozzászólására (») Okt 21, 2011 /
 
Idézet:
„valaki ebben tudna segíteni hogy mikroc pro-ban hogy lehet ezeket a config biteket megadni?”


Adatlap alapján kiszámolod a hex értéket, és beírod azt a pickit2-be. Illetve ugyanígy tudod ellenőrizni is.

De biztos vagyok benne, hogy a fordítónak van súgója, és abban is meg lehet nézni, hogy hogyan kell megadni...
Következő: »»   147 / 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