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   378 / 1203
(#) mps válasza hepi02 hozzászólására (») Márc 5, 2013 /
 
Elsőre: az rb6-ot állítsd bemenetnek.
(#) hepi02 válasza mps hozzászólására (») Márc 5, 2013 /
 
Sajnos semmi különbség. Az 555-tel ugyan úgy számol, de a szenzorral nem.

Viszont van olyan, hogy 1-1 bekapcsolást követően sikerül számolnia. De csak egyszer és onnantól kezdve nem. Ha az RB6 lábat elkezdem kapcsolgatni a +5 és gnd között, akkor van, hogy számol néhányat.

Nem lehet, hogy csak valami körülményt nem teremtek meg neki, ami beindítja a számlálóját? De akkor az 555-tel miért számol?
(#) mps válasza hepi02 hozzászólására (») Márc 5, 2013 /
 
Ja, hogy az 555-el itt is számol! Akkor a szenzor kimenő jelét kellene megnézni. Ha van pk2 akkor akaszd rá a lábra mint logikai analizátort.
(#) hepi02 válasza mps hozzászólására (») Márc 5, 2013 /
 
CH1 - szenzor
CH2 - üres
CH3 - 555

A freki nem egyezik. 555 stabil 38Hz, a szenzor meg ahogy sikerül.
(#) mps válasza hepi02 hozzászólására (») Márc 5, 2013 /
 
Úgy mérd a szenzort, hogy rá van kötve a picre.
(#) kissi válasza Johnny0004 hozzászólására (») Márc 5, 2013 /
 
Szerintem erről már volt szó...
Ha "pollingozol", akkor folyamatosan kell csinálnod, mert különben lehet, hogy lemaradsz egy-egy impulzusról, ha megszakítással csinálod, akkor nem kell folyamatosan figyelned, ha bejön egy impulzus, akkor az nem tud eltűnni, mert a hardver érzékeli és pl. növel egy számlálót, amiből a főprogram a számolásnál tudja, hogy mennyivel kell megváltoztatni a hozzátartozó jellemzőt !
Remélem érthetően írtam le és tudtam segíteni?!
Steve
(#) hepi02 válasza mps hozzászólására (») Márc 5, 2013 /
 
Úgy semmi. Ha rákötöm az RB6-ra a szenzor jelét és úgy mérem meg a jelet, akkor semmi nem történik. Mintha nem lenne csatlakoztatva a szenzor. Ha lehúzom a picről, akkor ismét méri a jelét a pk2
(#) Kovabe válasza hepi02 hozzászólására (») Márc 5, 2013 /
 
Szia
Nem akarok beleszolni mert nem is értek hozzá csak flow-ozok de biztos jol konfiguráltad a lábat?
(#) hepi02 válasza Kovabe hozzászólására (») Márc 5, 2013 /
 
Nem tudom, éppen ezért tettem közzé a kódot. A konfigurációt a doksija alapján végeztem el.
(#) mps válasza hepi02 hozzászólására (») Márc 5, 2013 /
 
Akkor induljunk ki abból, hogy a program jó, hiszen az 555-öt számolja. A szenzor is jó, mert mint láttuk a jelet magában kiadja.
Kellene egy rajz, értékekkel a bekötésről. Nem kell az egész, csak a pic lába és a szenzor környezete. Persze az egészet is felteheted
(#) tom75 hozzászólása Márc 5, 2013 /
 
Hp41c

Nagyon köszönöm a segítségedet tökéletesen működik a műszer.
(#) Johnny0004 válasza kissi hozzászólására (») Márc 5, 2013 /
 
Köszi.
(#) tom75 hozzászólása Márc 5, 2013 /
 
Olyan kérdésem lenne, hogy mplap-ba megírt programban lévő különleges karaktereket valahogy megtudom nézni beégetés nélkül? Mert hiába van jól definiálva mégse úgy jelenik meg a kijelzőn.
(#) hepi02 válasza mps hozzászólására (») Márc 5, 2013 /
 
Semmi extra nincs a kapcsoláson. Jelenleg így néz ki. A két bemenetem(RA4, RB6) azért nincs felhúzva sehova, mert a szenzornál van felhúzó ellenállás 1K2(sajna ez kisebb, mint a gyárilag javasolt)
(#) mps válasza hepi02 hozzászólására (») Márc 5, 2013 /
 
Foglaljuk csak össze: ha az rb6 ra az 555-öt teszed működik rendesen, ha a szenzort akkor nem (engem még mindig zavar, hogy az rb6 kimenetnek van állítva.). De a szenzor magában adja a jelet, viszont ha a picre teszed akkor folyamatosan testen van.
Van egy halovány tippem, de nagyon nem biztos, hogy megállja a helyét: Elsőre a láb kimenet volt ezért nem ment, mert mindig alacsonyan tartotta, majd így kipróbáltad az 555-el, ami azért tud neki adni áramot is hiszen felrántja magasba mint a huzat, ez megrendezett valamit a lábon, ami után az 555 fel tudja húzni, ám az 1,2K már nem. De kisebbet nem tehetsz a szenzorra, mert az nem bírja. Ezt egy pic cserével ki lehet zárni, már ha elképzelhető ilyen.
(#) hepi02 válasza mps hozzászólására (») Márc 5, 2013 /
 
A kimenetet már átállítottam bemenetnek, sajna nem segített. Szóval könnyen lehet, hogy megsérült az RB6 és amiatt szívok? Holnap ellátogatok a boltba, hátha volna 1 készleten.

Köszi, az eddigi segítséget. Még játszok egy kicsit az ellenállásokkal, hátha bejönne, meg olvasgatok tovább.
(#) cross51 hozzászólása Márc 6, 2013 /
 
Sziasztok!
Van egy érdekes problémám az mplab x-el kapcsolatban.
Mégpedig
  1. #include    <p18f23k20.inc>
  2. clrf    latb
  3. banksel latb
  4. end

ennyi a kis program, de ezt kapom rá:
Warning[203] Found opcode in column 1. (clrf)
Error[113] Symbol not previously defined (latb)
Error[152] Executable code and data must be defined in an appropriate section
Warning[205] Found directive in column 1. (banksel)
Error[113] Symbol not previously defined (latb)
Error[152] Executable code and data must be defined in an appropriate section
Warning[205] Found directive in column 1. (end)
ez mitől lehet vagy mit hagyok ki benne már nagyon sok mindennel próbálkoztam de mindig ez.
Kérlek segítsetek.
(#) proba válasza cross51 hozzászólására (») Márc 6, 2013 /
 
A LATB - t nagy betűvel írnám,vagy a fordítóban kikapcsolnám a kis és nagybetűk megkülönböztetését.
Esetleg a 2 és 3 sort felcserélném ,bár ez inkább csak programhiba, a fordítót nem érdekli.
A hozzászólás módosítva: Márc 6, 2013
(#) Hp41C válasza cross51 hozzászólására (») Márc 6, 2013 /
 
Szia!
  1. #include    <p18f23k20.inc>
  2. Label:
  3.     banksel LATB
  4.     clrf    LATB
  5.     end

Kiegészítésként: A sor legelején csak címke (label) kezdődhet, az utasításokat, direktívákat, makrokat bevezető szóközzel vagy TAB -bal kell írni. A #include sort is beljebb szerettem volna kezdeni, de a fórum motor nem engedi.
Be kell állítani, hogy relokálható vagy abszolut kódot szeretnél fordítani. Olvass utána az Mp Asm dokumentációjában és a mintaprogramokban.
A hozzászólás módosítva: Márc 6, 2013
(#) cross51 válasza proba hozzászólására (») Márc 6, 2013 /
 
ez assembler neki mindegy de ez már csak egy bórba progi hogy mivel tudnám életre kelteni az mplabot mer a movlw movwf meg minden ilyen parancsra baja van és nem értem mért mert c része működik a programnak
(#) cross51 válasza Hp41C hozzászólására (») Márc 6, 2013 /
 
Error[150] : Labels must be defined in a code or data section when making an object file
Error[152] : Executable code and data must be defined in an appropriate section
Error[152] D:\DOCUMENTS AND S : Executable code and data must be defined in
most ezt kaptam a programra nem tudom szerintem a fordítóba megőrült valami
(#) Hp41C válasza cross51 hozzászólására (») Márc 6, 2013 /
 
Szia!
Idézet:
„Error[150] : Labels must be defined in a code or data section when making an object file
Error[152] : Executable code and data must be defined in an appropriate section”

Relokálható kódot fordítasz. Nem a megfelelő szekcióban találja a fordító az adat definíciók ill a program egyes részeit. Olvasd el az MpLab súgójában a szekciókról szóló részt.
(#) cross51 válasza Hp41C hozzászólására (») Márc 6, 2013 /
 
Csak az a probléma hogy régen ez nem volt mitől lehet akkor ?
(#) Hp41C válasza cross51 hozzászólására (») Márc 6, 2013 /
 
Réges-régen, egy messzi-messzi galaxisban még absolute kódot fordítottak és org direktívákkal adták meg a program részletek kezdőcímét valamint cblock .. endc direktívákkal helyezték el az adatokat. Ha jól értelmezem a hozzászólásokat ez az assembly egy C program része lesz, így relokálható kódot kell fordítani... Utána kell nézni a következőknek:
extern, code_pack, global, idata, udata, udata_acs, udata_ovr, udata_shr ...
(#) cross51 válasza Hp41C hozzászólására (») Márc 6, 2013 /
 
nem csak van c fordítóm is az xc8 azzal meg semmi probléma nincs de ha azzal akarok assemblert fordítani az se jó
(#) Hp41C válasza cross51 hozzászólására (») Márc 6, 2013 /
 
Szia!
Ha ez egy különálló program, az absolute kód egyszerűbb leírással fordítható.
  1. cblock 0x70
  2.     WTEMP
  3.     temp1
  4.     tomb:8
  5.     word:2
  6.   endc
  7.  
  8.   org 0x000
  9.    goto  START
  10.   org 0x004
  11. IT: movwf WTEMP
  12. ;...
  13.     swapf WTEMP,f
  14.     swapf WTEMP,w
  15.     retfie
  16.  
  17. ;...
  18. START:
  19. ;...
  20.    end


A fenti formára hozod a programodat, akkor le fog fordulni absolute kódra.
A hozzászólás módosítva: Márc 6, 2013
(#) qbit hozzászólása Márc 6, 2013 /
 
Sziasztok! Napok óta küzdök az alábbi kóddal. Szimplán a 18F4550 AN0 lábán szeretnék egy potis feszültségosztást mérni és CDC-n kiküldeni a PC-re. A PIC jó (más projekttel leteszteltem), ez viszont folyton 0-kat ad vissza... Van ötletetek? MPLAB és C18 és piccolo_all.h amiket használok.
  1. #include "piccolo_all.h"
  2. #include "adc.h"
  3. #include <delays.h>
  4.  
  5.  
  6. #pragma udata
  7.  
  8.  
  9. char c;
  10. unsigned int v;
  11.  
  12. //***********************************************************
  13.  
  14. void Init_ADC(void)  {
  15.  
  16.         TRISAbits.TRISA0 = 1;                   //RA0/AN0 legyen bemenet
  17.        
  18.         ADCON0 = 0x00;//clear ADCON0 to select channel 0 (AN0)
  19.        
  20.         ADCON1 = 0b00001110;//VSS,VDD ref. AN0 analog only
  21.        
  22.         ADCON2 = 0b10110110;//ADCON2 setup: Right justified, Tacq=2Tad, Tad=2*Tosc (or Fosc/64)
  23.        
  24.                
  25.         ADCON0bits.ADON = 0x01;
  26.  
  27. }
  28.  
  29. unsigned int read_ADC(void) { // chan: ADC_CH0, ADC_CH1...stb.
  30.  
  31.         Delay100TCYx (2);
  32.         ADCON0bits.GO_DONE = 1;//Start A/D Conversion
  33.                
  34.         while(ADCON0bits.GO_DONE != 0);//Loop here until A/D conversion completes
  35.         v=(((unsigned int)ADRESH)<<8)|(ADRESL);
  36.         return v;
  37. }
  38.  
  39. //***********************************************************
  40.  
  41. void main(void) {
  42.         unsigned int a,b;
  43.        
  44.         InitializeSystem();
  45.         Init_ADC();
  46.    
  47.     //-- kivárjuk az első karakter beérkezését
  48.     while (!usb_cdc_kbhit()) {
  49.         ProcessIO();
  50.     }
  51.        
  52.     outString("Kezdődik!\n");
  53.    
  54.  
  55.         c=usb_cdc_getc();
  56.     while (1) {
  57.  
  58.  
  59.                 b=read_ADC();
  60.                 b=ADRESL;
  61.                 a=ADRESH;
  62.  
  63.                 printf("    H: %d L: %d \r\n",a,b);
  64.                
  65.                 Delay10KTCYx(240);
  66.     }
  67.        
  68. }


Köszi.
A hozzászólás módosítva: Márc 6, 2013
(#) cross51 válasza Hp41C hozzászólására (») Márc 6, 2013 /
 
köszi a segítséget de nem ez volt a probléma.
Kihagytam az ORG 0x0000-át az elején és ez valamiért problémát okozott neki, de azért köszi.
(#) hepi02 válasza mps hozzászólására (») Márc 6, 2013 /
 
Vettem egy új 16F628A-t. Rátöltöttem a már pin helyes programot, de semmi változás. Továbbra sem számolja a szenzor jelét, csak az 555-ös jelét.
(#) hepi02 válasza hepi02 hozzászólására (») Márc 6, 2013 /
 
51Ohm értékű felhúzó ellenállással már számol a TMR1, igaz bizonytalanul és a kijelző is hullámzik a szenzor jelére.
Következő: »»   378 / 1203
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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