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   859 / 1210
(#) Pali79 válasza sonajkniz hozzászólására (») Okt 7, 2016 /
 
Ja tényleg, akkor a 8 bites mód..
(#) Hp41C válasza Pali79 hozzászólására (») Okt 7, 2016 /
 
Ebben a leírásban máskép néz ki a 4 bites mód inicializálása...
(#) sonajkniz válasza Hp41C hozzászólására (») Okt 7, 2016 /
 
Semmi kedvem kötekedni.
Én mindig így csinálom az LCD inicializálását, és mindig működik is!
  1. DELAY   D'250'
  2.     DELAY   D'250'
  3.     DELAY   D'250'
  4.     DELAY   D'250'
  5.     DELAY   D'250'
  6.     DELAY   D'250'
  7.     DELAY   D'250'
  8.     DELAY   D'250'
  9.     UTASITAS             ;Beállítjuk a kijelz? R/S bemenetét utasítás fogadására
  10.     MOVLW       B'00110000'        ;Ez az utasítás 4x végrehajtva reseteli az LCD-t
  11.     CALL    KIIRAS0
  12.     CALL    KIIRAS0
  13.     CALL    KIIRAS0
  14.     CALL    KIIRAS0
  15.     DELAY   D'250'             ;Némi kivárás után be kell állítani a kijelz?t.
  16.     MOVLW       B'00100000'
  17.     CALL    KIIRAS0            ;Itt kapcsolunk át 4 bites üzemmódra
  18.     MOVLW       B'00101000'       ;Már 4 bites módban beállítjuk a
  19.     CALL    KIIRAS            ; kijelz?t kétsorsa
  20.     MOVLW       B'00001100'       ;Kijelz? engedélyezése
  21.     CALL    KIIRAS
(#) Pali79 válasza sonajkniz hozzászólására (») Okt 7, 2016 /
 
Ez majdnem az, mint a Hp41C által adott leírásba, csak ott 3× írja a 0011-et.
(#) pompidu válasza Tasznka hozzászólására (») Okt 7, 2016 /
 
Köszönöm meg nézem.
(#) kristof9511 válasza Beles hozzászólására (») Okt 7, 2016 /
 
PIC16F887-esem van azzal szeretnék négyszögjelű sweep generátort készíteni 300hz-3khz-ig például
(#) Hp41C válasza kristof9511 hozzászólására (») Okt 7, 2016 /
 
Keressd a DDS algoritmust.
(#) Hp41C válasza Pali79 hozzászólására (») Okt 7, 2016 /
 
Az a leírás a gyári adatlap...
(#) kristof9511 válasza kissi hozzászólására (») Okt 7, 2016 /
 
Köszönöm a válaszod! megpróbálom ezt az utat!
(#) csapeter válasza cross51 hozzászólására (») Okt 7, 2016 /
 
Üdv.
Valamit rosszul csinálhatok, mert nekem bármilyen beállításban (kompatibilitási futtatás) ezt a választ adja: delay time less than one clock cycle
beállítások: PIC16 család, 1 - 4 - 20 MHz, 100 - 500 ms ill. 1 s - nál is.
(#) Hp41C válasza csapeter hozzászólására (») Okt 7, 2016 / 1
 
Használd ezt.
(#) csapeter válasza Hp41C hozzászólására (») Okt 7, 2016 /
 
Kösz! Ez működik.
(#) cross51 válasza csapeter hozzászólására (») Okt 7, 2016 /
 
Bocsi, rossz verzió volt!
Javítva Bővebben: Link.
Azért légyszíves nézd meg ezt is, hogy nálad is működik-e .
(#) dudzsi hozzászólása Okt 7, 2016 /
 
Sziasztok! Hol található a pic adatlapján "16f628" hogy hány órjel alatt csinál egy utasítást? Mi ennek a neve? Köszi
(#) Pali79 válasza dudzsi hozzászólására (») Okt 7, 2016 /
 
Ez nem biztos, hogy benne van az adatlapban, de minden PIC 4 órajel alatt végez egy, egyciklusos utasítást.
(#) dudzsi válasza Pali79 hozzászólására (») Okt 7, 2016 /
 
oké köszi
(#) csapeter válasza cross51 hozzászólására (») Okt 7, 2016 /
 
Ez Ok! Működik
(#) csapeter válasza dudzsi hozzászólására (») Okt 7, 2016 /
 
Itt is találsz érdekességet, segítséget.
(#) siemenstaurus hozzászólása Okt 7, 2016 /
 
Sziasztok!
Ha nyomógombot szeretnék definiálni akkor az így néz ki ami működik.
#define NA (PORTBbits.RB7 == 0)
#define N1 (PORTBbits.RB6 ==0)

Ha pl a PORTC pl. alsó kettő bitjét szeretném elnevezni akkor azt miként tehetem meg?

#define v2k (LATC=0b0000011)
vagy
#define v2k (LATCbits.LATC1 =1)
??
Így nem vette be. Kicsit most összekeveredtem.
  1. .....
  2. if (NA && N1)
  3.                 {
  4.                             LATC= 0b00000011;
  5.                
  6.                 }
  7.  
  8. // tehát így szeretném hogy kinézzen
  9.  
  10. if (NA && N1)
  11.                 {
  12.                             v2k;
  13.                
  14.                 }


Köszönöm!
A hozzászólás módosítva: Okt 7, 2016
(#) csapeter hozzászólása Okt 7, 2016 /
 
Segítséget kérnék.
ASM-ben programozva, PIC16F877A
Analóg bemenetről kapok egy 10 bites értéket.
Két kérdésem van:
1, hogyan konvertálom LCD-n megjeleníthető 4 számjeggyé? (8 bit-ig megy)
2, hogyan tudok értékműveletet végrehajtani rajta? Pl.: ha a kapott érték nagyobb mint 768 akkor...
Kösz.
A hozzászólás módosítva: Okt 7, 2016
(#) Hp41C válasza csapeter hozzászólására (») Okt 7, 2016 /
 
Errefelé kutakodj.
(#) Pali79 válasza csapeter hozzászólására (») Okt 7, 2016 /
 
1. Bővebben: Link Itt van több is, lehet próbálkozni, válogatni.
2. Ilyen vizsgálathoz a SUBLW vagy SUBWF utasítás és a STATUS Z vagy C bitjének az állapotát szokás megvizsgálni. Mivel itt többről van szó mint 8 bit így egy picit macerásabb mert kétszer kell megcsinálni. Célszerűen először azt kell először megnézni, hogy a felső két biten van-e valami egyáltalán, ha nincs akkor könnyű a dolog, mert csak egy byte-tal kell dolgozni.
A te példádnál maradva a 768 egy nagyon jó szám, mert csak a felső byte-ot érinti, az alsó tök 0. Tehát a felső bájtból kivonsz 3-at, ha az eredményed nem negatív, akkor biztosan több az ADC értéke mint 768.

Remélem érthető.
(#) csapeter válasza Pali79 hozzászólására (») Okt 7, 2016 /
 
Az első úgy ahogy van az kínai nekem, még tanulnom kell hozzá.
A másodiknál én is arra jutottam hogy legalább két vizsgálatot kell végezni, de még mindíg nem tudom megjeleníteni. Amit Hp41C linkelt az valamivel érthetőbb, csak zagyvaságokat ír ki az LCD-re. Ránéznél, ha szépen megkérlek?
  1. ;======= Bin2Dec10G.asm ============= Sep 04 =========
  2.   ;       Test of 10b binary to 4 digit conversion as
  3.   ;       based on division by powers of 10.
  4.   ;
  5.   ;       E. A., Grens
  6.   ;
  7.   ;       For most PICs - here for 16F628 with 4 MHz
  8.   ;       internal oscillator.
  9.   ;
  10.   ;       Average processor cycles for execution of
  11.   ;       subroutine over the input range 0x000 to 0x3FF
  12.   ;       is 88.  No variables required except the
  13.   ;       input blh, blo and the out BCD digits.
  14.   ;       Subroutine length 38.
  15.   ;======================================================
  16.  
  17.         list p=16f628
  18.         radix   dec
  19.         #include
  20.         __config 0x3D30
  21.  
  22.  
  23.   ;-------Set Up RAM Variables---------------------------
  24.   blo   equ     0x20            ;lsbyte of 10b binary
  25.   bhi   equ     0x21            ;msb
  26.   d4    equ     0x23            ;msdigit
  27.   d3    equ     0x24
  28.   d2    equ     0x25
  29.   d1    equ     0x26            ;lsd
  30.   ;-------Program Code--------------------------------
  31.                                          
  32.         org     0x00            ;Effective Reset Vector
  33.   ;
  34.         nop
  35.         goto    Start           ;Jump by interrupt
  36.   ;
  37.   Start
  38.         movlw   0x07
  39.         movwf   CMCON           ;Digital I/O
  40.         movlw   0x03            ;Test input
  41.         movwf   bhi
  42.         movlw   0xFF
  43.         movwf   blo
  44.         movlw   0x04
  45.         call    Bin2decg
  46.   Hold
  47.         goto    Hold            ;Finished
  48.  
  49.   Bin2decg                      ;10b binaey to BCD
  50.         clrf    d1
  51.         clrf    d2
  52.         clrf    d3
  53.         clrf    d4
  54.         clrc
  55.         rrf     bhi,f           ;N = 4*Q + R
  56.         rrf     blo,f           ;blo = Q
  57.         rrf     d1,f            ;d1 = R as temp, R25
  58.         goto    B2d2            ;repeat
  59.   B2d3
  60.         addwf   blo,f           ;get remainder
  61.                                   ;    after /100, C = 0
  62.         rlf     d1,f            ;*4 and add R back in
  63.         rlf     blo,f
  64.         rlf     d1,f
  65.         rlf     blo,f           ;4*blo + R = N -
  66.                                   ;    1000*d4 - 100*d3
  67.                 movlw   10
  68.   B2d4
  69.         subwf   blo,f           ;blo = N - 1000*d4 -
  70.                                   ;     100*d3 - 10*d2
  71.         skpc
  72.         goto    B2d5            ;blo10
  73.         goto    B2d4
  74.   B2d5
  75.         addwf   blo,f           ;put last 10 back, C=0
  76.         movf    blo,w            
  77.         movwf   d1
  78.         return
  79.    
  80.         end
(#) Pali79 válasza csapeter hozzászólására (») Okt 7, 2016 /
 
Ez az egész program? Kicsit hiányos nekem.

Szerk: szerintem az a hiba, hogy ez BCD-be kódol, de az LCD-nek ASCII kell!

Innen válassz egy 16 bit to ASCII nevűt: Bővebben: Link
A hozzászólás módosítva: Okt 7, 2016
(#) csapeter válasza Pali79 hozzászólására (») Okt 7, 2016 /
 
Ez az amit a weblapon találtam, természetesen átírtam a saját projectembe, mivel abban lcd kezelés is van. Nekem már ott hibázott, hogy meghív egy "goto B2D2"-t ami sehol sincs.
(#) csapeter válasza Pali79 hozzászólására (») Okt 7, 2016 /
 
Igazad van ASCII-be alakítva már legalább számokat mutat. A többit már valahogy megfejtem, ha mégsem, majd kérdezek. Addig is köszi a segítséget.
(#) Pali79 válasza csapeter hozzászólására (») Okt 8, 2016 /
 
Nagyon dicséretes, hogy megpróbálod megérteni a rutint de nem feltétlen szükséges, legalábbis én nem szoktam. Írok egy egyszerű programot amivel le tudom tesztelni a működését, ha hozza a kívánt eredményt akkor használom, ha nem akkor keresek másikat.
(#) csapeter válasza Pali79 hozzászólására (») Okt 8, 2016 /
 
A vége nálam is hasonló lett most, az este már annyira nem fogott az agyam, hogy éjfélre már az A/D konverter sem mozdult meg. Azt hittem hazavágtam a procit. Reggel teljesen elölről kezdtem az egészet. A/D konverter 10 biten LED villogtatás. LCD beüzemelése, szöveg kiíratás. Majd végül az este letöltött konverter rész ASCII-ra konvertálóval kiegészítve. Mostanra jutottam el addig, hogy együtt fut az egész. Jöhet a mért értékek ellenőrzése, függőségek beállítása. De megyek éjszakázni, úgyhogy most pihi.
A hozzászólás módosítva: Okt 8, 2016
(#) Zsora válasza dudzsi hozzászólására (») Okt 8, 2016 /
 
Adatlap (DS40044F) 13. oldal.
A 8-biteseknek 8 órajelciklus kell egy (egyszavas) utasítás teljes végrehajtásához, de a részben párhuzamos feldolgozás miatt 4 órajelciklusonként megtörténik ez.
Tehát a válasz: 4 (8-biteseknél)
(Ja és a kétszavas, ill. elágazó utasításoknál meg 8 ciklus.)
A hozzászólás módosítva: Okt 8, 2016

Ciklus8.png
    
(#) Zsora válasza Pali79 hozzászólására (») Okt 8, 2016 /
 
Idézet:
„minden PIC 4 órajel alatt végez egy, egyciklusos utasítást.”

Ez így ebben a formában nem igaz. A 16- és 32-biteseknél nem így van.

Ciklus16.png
    
Következő: »»   859 / 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