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   453 / 1211
(#) Hilo válasza icserny hozzászólására (») Okt 12, 2013 /
 
Kipróbálom köszönöm.
Elvileg minden digitálisra van állítva... :S
Szimulátor miért nem akad ki ilyenen?
(#) Hp41C válasza Hilo hozzászólására (») Okt 12, 2013 /
 
Ha nem az analóg módtól van, akkor TRISIO vagy a watchdog reset beállítás miatt világít folyamatosan. Ha elég nagy frekvenciával ( >25 Hz) villog, a szemed folyamatosnak látja.
(#) Hilo válasza Hp41C hozzászólására (») Okt 12, 2013 /
 
Watchdog ki van kacsolva. Freki nem lehet gond elvileg, a "Delay" rendesen működik.
PROGRAM5: bekapcs; vár (~ 1sec); kikapcs; vár (~ 1sec);
Kipróbáltam úgy is, hogy egy változót hoztam létre és abban tároltam, illetve használtam a "xorwf"-et. Így jó volt, de az eredeti változattal mi a gond? Szeretném jobban megérteni hogy tanuljak. Ki lehet hagyni valahogy a külön változót? Mit kellene még beállítanom?

Ez lenne a kódom ide vágó része:
  1. START
  2.         banksel GPIO              ;Bank 0
  3.         clrf GPIO
  4.  
  5.         movlw b'111'
  6.         movwf CMCON0                    ;Comparator OFF (Bank0)
  7.  
  8.         bsf INTCON, 7                   ;megszaktítás engedélyezése
  9.         bsf INTCON, 6                   ;megszaktítás engedélyezése
  10.  
  11.         banksel ANSEL               ;Bank 1
  12.         clrf ANSEL               ;minden port digitálisra
  13.  
  14.         movlw b'111001'       ;(4, 5-ős láb kimenetre)
  15.         movwf TRISIO              ;portok kimenetre;
  16.  
  17.         movlw b'01000000'     ;1 Mhz bitkódja
  18.         movwf OSCCON              ;Belső oszcillátor beállítása
  19.  
  20.         bsf PIE1, 0    
  21.  
  22.         banksel T1CON
  23.         movlw b'00110000'     ;Timer 1 1/8 előosztó
  24.         movwf T1CON
  25.  
  26. goto PROGRAM5
  27. PROGRAM5
  28.         banksel GPIO   
  29.         movlw b'110'
  30.         xorwf GPIO,f                    ;
  31.         call Delay
  32. goto PROGRAM5
  33. Delay
  34.                         ;249993 cycles
  35.         movlw   0x4E            ;4E
  36.         movwf   T1
  37.         movlw   0xC4            ;C4
  38.         movwf   T2             
  39. Delay_0
  40.         decfsz  T1, f
  41.         goto    $+2
  42.         decfsz  T2, f
  43.         goto    Delay_0
  44.  
  45.         return
A hozzászólás módosítva: Okt 12, 2013
(#) Beles hozzászólása Okt 14, 2013 /
 
Sziasztok!
Még nem nagyon ismerem a C nyelvet. Hogyan lehet egy váltózó adot bitjét letesztelni, hogy 1 vagy 0? Mert ahogy látom, úgy nem, hogy Variable.0, ha a nulladik bitet akarom vizsgálni. Kétféle módot találtam, de nemtudom melyik lenne a jobb. Egyik:
  1. if(Variable & 0b00000001)

Vagy Létrehozok egy bitekből álló strukturát, és akkor tudok a bitjeire hivatkozni? pl:
  1. typedef struct tagVariables{
  2.   unsigned VAR0:1;
  3.   unsigned VAR1:1;
  4.   unsigned VAR2:1;
  5.   unsigned VAR3:1;
  6.   unsigned VAR4:1;
  7.   unsigned VAR5:1;
  8.   unsigned VAR6:1;
  9.   unsigned VAR7:1;
  10. } Variables;

De ez esetben működik az hogy, Variables = 255?
Remélem érthető
(#) Hp41C válasza Beles hozzászólására (») Okt 14, 2013 / 1
 
  1. typedef union
  2.   unsigned char ALL;
  3.   struct tagVariables{
  4.       unsigned VAR0:1;
  5.       unsigned VAR1:1;
  6.       unsigned VAR2:1;
  7.       unsigned VAR3:1;
  8.       unsigned VAR4:1;
  9.       unsigned VAR5:1;
  10.       unsigned VAR6:1;
  11.       unsigned VAR7:1;
  12.     }
  13. } Variables;

Ekkor Variables.ALL = 255; és if (Variables.VAR7) ....
A hozzászólás módosítva: Okt 14, 2013
(#) Beles válasza Hp41C hozzászólására (») Okt 15, 2013 /
 
Köszi!
Kipróbálom akkor így!
(#) Hp41C válasza Beles hozzászólására (») Okt 15, 2013 /
 
  1. typedef union
  2. {
  3.       unsigned char ALL;
  4.       struct tagVariables{
  5.           unsigned VAR0:1;
  6.           unsigned VAR1:1;
  7.           unsigned VAR2:1;
  8.           unsigned VAR3:1;
  9.           unsigned VAR4:1;
  10.           unsigned VAR5:1;
  11.           unsigned VAR6:1;
  12.           unsigned VAR7:1;
  13.         }
  14.     } Variables;

Így jobb lesz...
(#) Balagemann2031 hozzászólása Okt 15, 2013 /
 
Sziasztok! Most ismerkedem a SPI-vel (I2C már megy). Azt szeretném megtudni, hogy miért van 4 órajel formátum mód, és honnan tudhatom mikor melyiket kell alkalmazni? Ez az adott slave-eszköz adatlapjában fel van tüntetve? Az segítséget előre is köszönöm!
(#) icserny válasza Balagemann2031 hozzászólására (») Okt 15, 2013 / 1
 
Idézet:
„Ez az adott slave-eszköz adatlapjában fel van tüntetve?”
Rendes helyen igen. De az "okos" slave is tudhat többféle módot...

Megjegyzés: A Microchip a CKE bitet (az órajel fázisát) más gyártókhoz képest fordított polaritással használja, így (pl. a PIC18 mikrovezérlőknél) a CKP=0, CKE=1 beállítás felel meg a legáltalánosabban használt Mode 0,0 üzemmódnak.
(#) Balagemann2031 válasza icserny hozzászólására (») Okt 15, 2013 /
 
Érdekes ez a SPI... Köszi!
(#) zenetom válasza Hilo hozzászólására (») Okt 15, 2013 /
 
Szia!
Ha bináris formában raksz be regiszterbe értéket, mindig írd ki mind a 8 bitet!
Tehát pl.
  1. movlw b'111001'       ;(4, 5-ős láb kimenetre)
  2.     movwf TRISIO


helyett:

  1. movlw b'00111001'       ;(4, 5-ős láb kimenetre)
  2.     movwf TRISIO


És így a többinél is!
A hozzászólás módosítva: Okt 15, 2013
(#) Beles válasza Hp41C hozzászólására (») Okt 15, 2013 /
 
Igen, rájöttem, hogy kimaradt egy kapcsos zárójel.
Na közben küszködök a következő problémámmal Egész nap agyaltam, de nem sikerült rájönnöm:
Rendeltem egy RGB LED szalagot, amin WS2802-es ledek vannak.
Bővebben: Link
800kbps adatátvitel kell a vezérléséhez. PC-vel szeretném majd elsősorban vezérelni, bluetooth-on keresztül, ami UART-al kapcsoldódik a dsPIC30f2011-hez. Ezt a mikrovezérlőt a sebessége miatt választottam, de lehet gyorsabbat kellett volna. Ugyanis az a problémám, hogy nincs elég processzor időm. Ugyanis egy bit 1,25uS, ami alatt kétszer kell állapotot váltani. Ezt most PWM modullal próbálom megoldani. De 36 utasításnyi időm marad arra, hogy beírjam a következő kitöltési időt, meg elvégezzem a szükséges dolgokat. És UART kezelésre még goldolni sem mertem.
Valami ötletet szeretnék, hogyan lehetne másképp megoldani. Vagy kénytlene leszek nagyobb sebességű procira véltani?
(#) Hp41C válasza Beles hozzászólására (») Okt 15, 2013 /
 
SPI modul: 156.25 ns/bit időzitéssel (8 minta egy bit a WS2812 -nek).
(#) Beles válasza Hp41C hozzászólására (») Okt 15, 2013 /
 
Hogy az SPI miért nem jutott eszembe? Kipróbálom.
A hozzászólás módosítva: Okt 15, 2013
(#) Beles válasza Beles hozzászólására (») Okt 15, 2013 /
 
De ha oda is bitenként kell beleraknom az adatot, akkor megint nem vagyok előrébb sajna.
(#) icserny válasza Beles hozzászólására (») Okt 15, 2013 /
 
Ötletet innen is lehet meríteni (nem PIC, de az elv szempontjából mindegy).
(#) Hp41C válasza Beles hozzászólására (») Okt 15, 2013 /
 
Oda egyszerre 8 vagy 16 bites mintát kell berakni, azaz (az adatbolyamot tekintve) bitenként vagy kétbitenként kell írni egyszer.
A hozzászólás módosítva: Okt 15, 2013
(#) Beles válasza Hp41C hozzászólására (») Okt 16, 2013 /
 
Viszont akkor 16 biten 4 bitet is el tudok küldeni. Ahol 1000 jelentené az 0-át, 1100 az egyet. Elvileg ha 7uS a bit második fele, az még benne van a 150ns-es határba. Az "Icserny" által adott linken is hasonló képpen van dekódolva a jel. Csak nem tudom mi az az SCT Timer az LPC810-ben.
(#) foxi63 válasza Beles hozzászólására (») Okt 17, 2013 /
 
Szia!
Nekem az jön le az adatlapból, hogy ugyan 1 bit írása 1,25uSec a 23.bit bevitele után lehet tovább folytatni a sorosan felfűzött led egységek írását, csak akkor reszetelődnek, ha a jelben 50uSec szünet keletkezik. Tehát 1 kimenő bittel több led egység írható és ha egy port 8 bites akkor egyszerre 8 ilyen egység programozható. Persze kell egy mátrix is mégtöbb led esetén
Szerintem az 50uSec resetjel hatására még megmarad a led színbeállítása, csak újra kezdi a belső címzést.
(#) Beles válasza foxi63 hozzászólására (») Okt 17, 2013 /
 
Szia!
5 méteres ledszalagokt rendeltem, amin 300db led van, szóval a ledek már fel vannak fűzve, multiplexelve nem fogom tudni vezérelni. Én is ebben reménykedek, hogy lehet kissebb szüneteket tartani írás közben, ha nem haladja meg az 50uS-t a kimaradás.
Annyira nem egyértelmű az a leírás. Vagy csak én nem tudok eléggé hozzá angolul, de számomra az sem derül ki, hogy a reset jel hatására előröl kell-e kezdenem a bitek beírását, vagy csak "tolódik" tovább az adat a következő ledekbe, (ami szerintem jó volna).

Élesben még nem tudtam kipróbálni, de a számításaim szerint jó lesz. 80Mhz-s kristállyal 20Mhz a belső órajel. Ezt 7-es előosztóval hajtja az SPI modult. Így 0,35uS egy bit az SPI modulban. Tehát az SPI 16 bites módban a lednek 4 bitet küld ki egyszerre. Ez idő alatt 112 órajelnyi időm marad feltölteni a következő 4 bitet az SPI bufferba, ami bőven elégnek tűnik. az SPI nél 1100 jelenti a LED-nek az 1-et, 1000 pedig a 0-át. Remélem érthető
(#) Hp41C válasza Beles hozzászólására (») Okt 17, 2013 /
 
Idézet:
„80Mhz-s kristállyal 20Mhz a belső órajel.”

Az órajel bemenetre maximum 40MHz adható, a 80MHz -es órajel 10MHz -es quartz cal és 8- szoros PLL mellett állítható be.
(#) Beles válasza Hp41C hozzászólására (») Okt 17, 2013 /
 
Jah, bocs elírtam. 20MHz kristállyal, 8x PLL-el. HS/2-tőt beállítva. A lényeg a 80Mhz lett volna
A hozzászólás módosítva: Okt 17, 2013
(#) Hp41C válasza Beles hozzászólására (») Okt 17, 2013 /
 
A 80 MHz -es quartz szúrt szemet...
A hozzászólás módosítva: Okt 17, 2013
(#) vladcepes hozzászólása Okt 17, 2013 /
 
Sziasztok! Segítséget szeretnék kérni! Megépítettem ezt:Bővebben: Link Innen Bővebben: Link letöltöttem a csomagolt filet majd kicsomagoltam és a hex filet be akartam tallózni a PICkit 2-be és kaptam egy ilyen üzenetet mint a képen látható. Mit kell tennem?
A válaszokat előre is köszönöm.

kép 1.jpg
    
(#) kissi válasza vladcepes hozzászólására (») Okt 18, 2013 /
 
Azt mondja, hogy a konfigurációs biteket nem tartalmazza a hex file és ellenőrizd, hogy megfelelőek-e a beállítások ( ez mondja meg, hogy milyen oszcillátort használsz, kell-e kódvédelem, stb. )! Ha nem az áramkörnek megfelelő, akkor nem fog működni! Ha értesz hozzá, akkor ellenőrizd le,ill. állítsd be, ha nem, akkor írj a szerzőnek, hogy rakjon fel egy konfig beállításokat is tartalmazó hex-et!
(#) vladcepes válasza kissi hozzászólására (») Okt 18, 2013 /
 
Szia! Köszi a választ! Hát nem értek hozzá sajna.
(#) kissi válasza vladcepes hozzászólására (») Okt 18, 2013 /
 
Várj egy picit !
(#) kissi válasza kissi hozzászólására (») Okt 18, 2013 /
 
Nézd meg ezt ( várom az eredményt! ) !

proba_1.hex
    
(#) vladcepes válasza kissi hozzászólására (») Okt 18, 2013 /
 
Ez föl ment rá. A kijelzőn viszont még semmi,de azt majd holnap(mármint ma) ellenőrzöm hogy hol nem kap érintkezést. Köszönöm még egyszer. Majd jelzem a fejleményeket. Üdv!
(#) kissi válasza vladcepes hozzászólására (») Okt 18, 2013 /
 
OK, ez az eredeti hex-ben lévő beállításokkal megy, nem tudom, a PK2 szoftvere miért nem ette meg, én az MPLAB-ba importáltam, majd exportáltam Neked ...!
A hozzászólás módosítva: Okt 18, 2013
Következő: »»   453 / 1211
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