Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   617 / 1319
(#) vicsys válasza Attila86 hozzászólására (») Dec 11, 2009 /
 
A hozzáadott CD-n pedig vannak... (Nekem legalábbis volt)
(#) trudnai válasza Attila86 hozzászólására (») Dec 11, 2009 /
 
Van egy valag segedlet:

Bővebben: Link

Illetve vegulis egy komplett USB szekcio foglalkozik -- informatiok, termek kivalasztas stb:

Bővebben: Link
(#) icserny válasza Attila86 hozzászólására (») Dec 11, 2009 /
 
Ezt a kártyát az USB használatának okítására találták ki, az USB keretrendszer meg C18-at kíván, ezért a mintapéldák is (legalábbis ami a honlapról letölhető) C-ben vannak.
(#) Attila86 válasza icserny hozzászólására (») Dec 11, 2009 /
 
De engem még jó darabig nem érdekel az USB. Én csak egyszerű LED-eket szeretnék villogtatni! Lehet hogy akkor nekem is inkább a PICkit2 starter kit-et kellett volna inkább megvennem mint Skori tette.

Ahogy nézem direktben rá van kötve pár dolog, mint kvarc, MAX323. Akkor nem is tudom a PIC ezen lábait használni akármire ezen a nyákon?
A rajzon és a nyákon nem PORTA, PORTB feliratok vannak, hanem:
RA0, RA1, RA3, RA4, RA5,
RB4, RB5, RB6, RB7,
RC0, RC1, RC2, RC3, RC4, RC5, RC6, RC7
Jól gondolom hogy ezek lennének a három port bitjei? És hova lett akkor az RA2, RB0, RB1, RB2, RB3?
(#) watt válasza Attila86 hozzászólására (») Dec 11, 2009 /
 
LED-eket is tudsz villogtatni, meg amit csak rá lehet kötni, gyakorlatilag ez is csak egy próbapanel.
Tegyél rá egy szabad portra 8 LED-et, és kezdődhet a villogtatás, futófény "nájtrájder", digitális számok megjelenítése stb.
(#) Ktulu válasza Attila86 hozzászólására (») Dec 11, 2009 /
 
Ne panikolj Attila! Jol dontottel.
A jovoben szukseged lesz meg a tobblet funkciokra, mint pl. az USB.
Mindenek elott a mikrovezerlod adatlapjat olvasd vegig teljesen.
A periferiakat (AD, soros port, CCP...) egyelore eleg ha csak feluletesen atfutod. Alaposabban raer, ha majd rajuk kerul a sor.
Egyelore ertsd meg a belso felepiteset a MCU-nak, memoria strukturat, mi mivel hogyan kapcsolodik, digitalis portok mukodeset.
A specialis funkcioju regiszterek (SFR) elso ranezesre nagyon ijesztoek lehetnek, a rengeteg regiszter, meg megtobb fura nevu bit amibol felepulnek. Ezeket ugy kell elkepzelni, mint egy nagy vezerlo pultot, tele kapcsolokkal es jelzo lampakkal, amik a kulonbozo reszek vezerlesere, es a mukodesuk visszajelzesere szolgalnak.
Alapbol itt is foleg a CPU -hoz tartozokat kell megerteni es megtanulni. A periferiake raer kesobb.


Talan azert is volt (szamomra) szerencses meg a 16F84-el kezdeni, mert nagyon egyszeru joszag, csupan egy idozitot es belso EEPROM-ot tartalmazott, igy nagyon egyszeru volt megerteni a mukodeset. Alig tartalmaz nehany specialis funkcioju regisztert, tehat nem kavarta ossze a kezdot az a rengeteg sok minden. A neten volt is egy magyarra forditott adatlap hozza, igaz en sosem hasznaltam, de talan segithet.


En is csak ajanlani tudom a Mikroelektronika konyveit, a gyonyoru abrak benne magukert beszelnek.
Bővebben: Link
(#) Attila86 hozzászólása Dec 11, 2009 /
 
Elvileg a PORTC minden lába szabad, csak az alsó négy bitje van gyárilag rákötve 1-1db LED-re. Gondoltam bekapcsolom az alsó kettőt. Elkezdtem bepötyögni valamit, és közben oda tett nekem egy B-betűt az egyik sorhoz: Bővebben: KÉP
Ez mit jelent?

Illetve; mielőtt belegyömöszölöm a programocskámat a PIC-be, nem lehet kiolvasni és elmenteni valahogy a gyárilag benne lévő programot? (A négy LED futófényként működik gyárilag.)
(#) potyo válasza Attila86 hozzászólására (») Dec 11, 2009 /
 
Valamire rányomtál, vagy kettőt kattintottál a soron. Ez a B a Breakpoint betűje, vagyis szimulációkor ha futtatod a programot, akkor ezen a soron megáll, és meg birod nézni a regiszterek tartalmát, módosítani birod, stb.

Van olyan opció, hogy Programmer->Read és utána File->Export-al el tudod menteni.
(#) szilva válasza Attila86 hozzászólására (») Dec 11, 2009 / 2
 
Az a LED-kigyújtó program működőképesnek tűnik, bár utána kellene nézzek, hogy a 18F14K50-nek milyen konfigbitjei vannak, mert lehet, hogy attól azért több, mint amit Te felsoroltál.

Még egy jótanács: az ilyen programok végrehajtása a PIC-ben nem fog attól befejeződni, hogy ott van az utolsó utasítás után az END. Attól még a memóriában lévő utasításokat (memóriaszemetet) szépen elő fogja venni a végrehajtó egység, és egyesével el is fogja végezni az azokban előírt műveleteket. Tehát ha azt akarod, hogy a program álljon meg és ne történhessen semmi "véletlen" az utolsó utasításod után, akkor tégy oda egy végtelen ciklust! Pl. egy iyet:


  1. L1:
  2.         GOTO L1
(#) szilva válasza szilva hozzászólására (») Dec 11, 2009 /
 
Még az jutott eszembe, ha az első kapavágásokon túlvagy, akkor esetleg megnézheted a PICkit2 starter kit-hez vagy debug expresshez adott ASM kódgyűjteményeket is. Azokon a paneleken is hasonló "perifériák" vannak, mint a tiéden: 4 vagy 8 LED, egy poti és egy nyomógomb, a gyári leckesor ezekkel operál. Igaz, hogy 16F-es PIC-re és esetleg más portbitekre kötött perifériákra lettek megírva a mintaprogik, de azt egy nagyon jó kis önképzésnek vélem, ha ezeket a progikat szépen átbütykölöd a saját hardveredre. Ehhez a megfelelő adatlapokat kell sűrűn forgatni és az alapján módosítani a kódot. Én így tanultam a 18F-eket anno.
(#) Attila86 válasza szilva hozzászólására (») Dec 11, 2009 /
 
És miért nem tudom lefordítani? Azt írja nagy piros betűkkel hogy: BUILD FAILED
(#) icserny válasza Attila86 hozzászólására (») Dec 11, 2009 / 1
 
Idézet:
„És hova lett akkor az RA2, RB0, RB1, RB2, RB3?”
RA2 áldozatul esett a VUSB oltárán...
B0, B1, B2, B3 technikai okokból nincsen: a 20 lábból nem telik rá. Ez így van a PIC16F690-nél is.
Így marad a C port, meg a fél B port.
(#) Attila86 válasza icserny hozzászólására (») Dec 11, 2009 /
 
Értem, köszönöm!
(#) icserny válasza Attila86 hozzászólására (») Dec 11, 2009 /
 
Azt a Build Failed előtti sorokban írja, hogy mi a baja...
Gondolom, még nincsenek beállítva az elérési útvonalak.

Ha nem akarsz feltétlenül debug-olni, akkor állítsd át Release-re az MPLAB menüjében fordítás előtt.
Ha egy mód van rá, akkor kerüld az ékezetes betűket és a szóközöket a fájlnevekben, valamint a hosszú elérési útvonalakat!
Az oszcillátormód inkább HS legyen, ne XT.

Konfigurációs bitek a bootloaderben így vannak beállítva (én így használom):

  1. config CPUDIV = NOCLKDIV
  2.         config USBDIV = OFF
  3.         config FOSC   = HS
  4.         config PLLEN  = ON
  5.         config FCMEN  = OFF
  6.         config IESO   = OFF
  7.         config PWRTEN = OFF
  8.         config BOREN  = OFF
  9.         config BORV   = 30
  10.         config WDTEN  = OFF
  11.         config WDTPS  = 32768
  12.         config MCLRE  = OFF      ;ez mos legyen inább ON!
  13.         config HFOFST = OFF
  14.         config STVREN = ON
  15.         config LVP    = OFF
  16.         config XINST  = OFF
  17.         config BBSIZ  = OFF
  18.         config CP0    = OFF
  19.         config CP1    = OFF
  20.         config CPB    = OFF
  21.         config WRT0   = OFF
  22.         config WRT1   = OFF
  23.         config WRTB   = OFF
  24.         config WRTC   = OFF
  25.         config EBTR0  = OFF
  26.         config EBTR1  = OFF
  27.         config EBTRB  = OFF
(#) Attila86 válasza icserny hozzászólására (») Dec 11, 2009 /
 
(#) icserny válasza Attila86 hozzászólására (») Dec 11, 2009 / 1
 
A forrásfájlod nincs felvéve a projektbe!
Project --> Add files to Project menüpontban add hozzá az asm állományt!
(#) Attila86 hozzászólása Dec 11, 2009 /
 
Csak egy pillanatra villannak fel a LED-ek. Miért?
(#) icserny válasza Attila86 hozzászólására (») Dec 11, 2009 /
 
odatetted a program végére a végtelen ciklust?
(#) Attila86 válasza icserny hozzászólására (») Dec 11, 2009 /
 
Igen! A korábban belinkelt képen látszik is: Bővebben: Link
(#) vizor válasza Attila86 hozzászólására (») Dec 11, 2009 /
 
Elírtad a címkenevet. CILKUS-t írtál címkének és CIKLUS-t a goto után.
(#) Attila86 válasza vizor hozzászólására (») Dec 11, 2009 /
 
Azóta átírtam, de akkor is csak egy pillanatra villannak fel a LED-ek.
(#) Attila86 hozzászólása Dec 11, 2009 /
 
Csak a két középső LED felvillan aztán kész.

  1. #define két_szélső    b'00001001'
  2. #define két_középső   b'00000110'
  3.        
  4.         org 0
  5. regiszter1
  6. regiszter2
  7. delay1
  8. delay2
  9. delay3
  10.  
  11.         banksel TRISC
  12.         movlw   B'00000000'             ;0-át írunk a W-be
  13.         movwf   TRISC                   ;PORTC minden lába kimenet lesz
  14.        
  15. START
  16.  
  17. k_led_be
  18.         movlw   két_középső
  19.         movwf   PORTC                   ;kigyújtjuk a két középső LED-et
  20.         call    delay1000ms
  21.  
  22. sz_led_be
  23.         movlw   két_szélső
  24.         movwf   PORTC
  25.         call    delay1000ms
  26.  
  27. goto START
  28.  
  29.  
  30. delay1000ms:
  31.      movlw  d'10'
  32.      goto       d3
  33. delay100ms:
  34.      movlw      1
  35.  d3: movwf      delay3    ;4MHz esetén 1usec/utasítás
  36.  d2: movlw      d'100'
  37.      movwf  delay2
  38.  d1: movlw      d'248'    ; belső ciklus hossza (2*konstans +3us)
  39.      movwf  delay1
  40.  d0: decfsz  delay1,f
  41.      goto   d0           ;ahányszor visszaugrik annyiszor 2us -> 512us
  42.      decfsz  delay2,f
  43.      goto       d1      ;cx-2 ször fut le a belső ciklus idő: konstans*(belső+2us)
  44.      decfsz  delay3,f
  45.      goto       d2      
  46.  
  47.      retlw  0
  48.  
  49.  
  50. CIKLUS  goto    CIKLUS
  51.        
  52. END
(#) potyo válasza Attila86 hozzászólására (») Dec 11, 2009 /
 
A regiszter1, regiszter2, delay1..3 nem változónak vannak definiálva, hanem címkéknek, amikre tudsz ugorni programkódból. Namost a fordító nem jelez hibát, mert a címke is csak egy szám a fordítónak, meg a változó is csak egy szám, tehát a movwf delay3 kódhoz bizony befordítja, hogy a munkaregiszter tartalmát arra a memóriacímre másolja, ami a delay3 értéke (jelen esetben 18F kontroller esetén azthiszem 8). De ez így nem jó. Most nem világos, hogy 16F vagy 18F tipussal próbálkozol, mert 18F-nél nincs banksel makró, legalábbis nem a TRISC-re kell használni. Ha viszont 16F, akkor ott meg a speciális célú regiszterek vannak a memóriaterület elején, és szépen belerondítasz azokba azzal, hogy a delay1..3 "változókba" írkálsz, illetve akkor a BANKSEL PORTC-t is használni kell, mielőtt a PORTC-be akarsz írni.

Mindig a teljes kódot tedd fel, hogy lássuk, hogy milyen kontrollerrel van dolgunk, hogy állnak a konfigurációs bitek, stb. Hosszabb kódot csatolásként rakd fel. A hosszabb meghatározásához mondjuk úgy, hogy az előző kódod határeset, ami attól hosszabb, azt inkább csatold.

Vannak az MPLAB mappájában template fájlok, azokból nézd ki, hogy kellene felépülnie egy forráskódnak, hova kerülnek a változók. Nálam ezek a c:\Program Files\Microchip\MPASM Suite\Template\Code\ mappában vannak.
(#) icserny válasza Attila86 hozzászólására (») Dec 11, 2009 /
 
Így próbáld:
  1. cblock
  2. regiszter1
  3. regiszter2
  4. delay1
  5. delay2
  6. delay3
  7.          endc
  8.  
  9.          org 0
  10. ....
(#) Attila86 válasza potyo hozzászólására (») Dec 11, 2009 /
 
Az első fájl amit feltöltök a HE-re.
(#) icserny válasza Attila86 hozzászólására (») Dec 11, 2009 /
 
Még egy megjegyzés: a direktívák (pl. cblock, endc) ne kezdődjenek a sor legelején. Az a címkéknek van fenntartva.
(#) Attila86 hozzászólása Dec 11, 2009 /
 
Ez jó elgondolás így?
(#) icserny válasza Attila86 hozzászólására (») Dec 11, 2009 /
 
Én is töltök fel néhányat.
(#) Attila86 válasza icserny hozzászólására (») Dec 11, 2009 /
 
Az utolsó programodat is hiába futtatom, csak egy pillanatra kapcsolja be a PORTC legalsó bitjét.
(#) Attila86 hozzászólása Dec 11, 2009 /
 
SIKERÜLT!
Azt gondoltam hogy a programozás után azonnal elkezd futni a program, de nem. Rányomtam a "Bring target MCLR to VDD gombra és most már villog szépen...
Következő: »»   617 / 1319
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