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   554 / 1210
(#) Szamy válasza nedudgi hozzászólására (») Aug 9, 2014 /
 
No, lemaradtak a fájlok. Most pótolom. Sajnos csatolni csak jpg -t lehet, tehát az eredeti kép ugyanez, csak egy 565-ös BMP. Így ti is össze tudjátok vetni a csatolt hex-képpel (a kép valós mérete nálam 17x17 pixel!)
Az a baj , hogy nem a hexeditor számol rosszul, egész egyszerűen nem stimmel az adat.
A hozzászólás módosítva: Aug 9, 2014
(#) Szamy válasza nedudgi hozzászólására (») Aug 9, 2014 /
 
A hexában bejelöltem két fehér (FF) kocka közötti adatsort. Ez 32 (32x00) bájt, tehát 16 fekete kocka. A képen viszont 17 van, és ahhoz, hogy ezt bájtról bájtra kiküldhessem a pickel az sd-ről, a hexának is 17pixel adatát, tehát 34 Bájtot kellene két FFFF között tartalmazia.. Ezt nem értem...
A hozzászólás módosítva: Aug 9, 2014
(#) moltam hozzászólása Aug 9, 2014 /
 
Helosztok.
Nem tudom életrekelteni 12f683 ban az ADC t. Egy programozható gyújtás lenne. Régóta szenvedek vele, nem akar jó lenni. (tudom hogy sok hülyeség van benne dehát kezdő vagyok na Még majd gyomlálva, finomítva lesz. ) Amúgy megy szépen ha a terhelésjelet nem AD ről akarom beolvasni. A furcsa az, hogy ha nem is használom az AD által beolvasott értéket és 5V ot kötök GP4/AN3 ra, megzavarodik az egész. Strobi ledje elkezd erősen világítani, sokkal több jel érkezik mint kéne.
  1. unsigned short     rto,lto,lrto,a=0,eesv;
  2. unsigned int       times=0, time=0;
  3. unsigned long      rpmp, rpmpt, loadp, loadpu, loadpt;
  4. unsigned int       rpms, engine_rpm = 0;
  5. unsigned short     rpmsize,rpmsizefix,loadsize,loadsizefix;
  6. unsigned int       io,it;
  7. unsigned short     loada, engine_load = 0, engine_loada = 0;
  8. unsigned int       dell = 0;
  9. unsigned short     i=0;
  10.  
  11.  
  12. void main() {
  13. CMCON0=0x07;
  14. TRISIO     = 0b00010100;
  15. ANSEL=0b01011000;
  16. ADCON0     = 0b10001101;
  17. GPIObits.GP0  = 0;
  18. INTCONbits.GPIF = 0;
  19. OPTION_REG = 0b11000000; //LtoH GPPU off;
  20. TMR1H = 0;
  21. TMR1L = 0;
  22. PIR1bits.TMR1IF = 0;
  23. PIE1       = 0b00000001;
  24. INTCON     = 0b11010000;  //GEIE,PEIE,GPIE=1;
  25. T1CON      = 0b00100001;    //B0 TMR1ON=1 | B4/B5 T1CKPS12 1:4 - 2uS per tick;
  26.  
  27. PIR1bits.ADIF=0;
  28. PIE1bits.ADIE=1;
  29.  
  30.          EEADR = 0;
  31.          EECON1bits.RD = 1;
  32.          rpmsizefix = EEDAT;
  33.          EEADR = 1;
  34.          EECON1bits.RD = 1;
  35.          loadsizefix = EEDAT;
  36.          
  37.                  
  38. while (1==1) {
  39.  
  40.  
  41. rpms = engine_rpm;
  42. loada = engine_load;   //=(unsigned short)engine_load;
  43.  
  44.  
  45.     loadsize = loadsizefix;
  46.     rpmsize = rpmsizefix;
  47.  
  48.  
  49.  
  50.          while (rpmsize > 1) {
  51.  
  52.              rpmsize--;
  53.  
  54.              EEADR = (rpmsize + 1);
  55.              EECON1bits.RD = 1;
  56.              io = (EEDAT * 50);
  57.  
  58.              if (rpms >= io) {
  59.                  
  60.                  EEADR++;
  61.                  EECON1bits.RD = 1;
  62.                  it = ((unsigned int)EEDAT) * 50;
  63.  
  64.                  rpmp = ((((long)rpms * 100) - ((long)io * 100)) / (((long)it - (long)io)));
  65.                
  66.                 break ; //exit while
  67.              }
  68.              //endif
  69.  
  70.          }
  71.      //endwhile
  72.  
  73.  
  74.  /////////////////ENDRPMLOOP/////////////////////////////////////////////////////////////
  75.  
  76.  
  77.          while (loadsize > 1) {
  78.            //%/%/%/
  79.              loadsize--;
  80.  
  81.              EEADR = rpmsizefix + loadsize + 1;
  82.              EECON1bits.RD = 1;
  83.              io = EEDAT;
  84.              ////////
  85.              if (loada >= io)  {
  86.  
  87.                  EEADR++;
  88.                  EECON1bits.RD = 1;
  89.                  //it=EEDAT;
  90.                  loadp = ((((long)loada * 10000) - ((long)io * 10000)) / ((long)EEDAT - (long)io));
  91.                  ///                                   lsf,               rsf+lsf        +1
  92.                  EEADR = ((loadsize + ((rpmsize - 1) * loadsizefix)) + rpmsizefix + loadsizefix + 1);
  93.  
  94.  
  95.                                                //¤-----O
  96.                  EECON1bits.RD = 1;            //I-----I  LRTO   OK!
  97.                  lrto = EEDAT;                 //O-----O
  98.                  
  99.                  
  100.                
  101.                  
  102.                  EEADR = EEADR + loadsizefix;  //O-----O
  103.                  EECON1bits.RD = 1;            //I-----I  LTO    OK!
  104.                  lto = EEDAT;                  //¤-----O
  105.  
  106.                
  107.                  EEADR++;                      //O-----O
  108.                  EECON1bits.RD = 1;            //I-----I  EESV   OK!
  109.                  eesv = EEDAT;                 //O-----¤
  110.  
  111.                  
  112.                  EEADR = EEADR - loadsizefix;  //O-----¤
  113.                  EECON1bits.RD = 1;            //I-----I  RTO    OK!
  114.                  rto = EEDAT;                  //O-----O
  115.                
  116. ////////////////////////////////////////////////////////////////////////////////////////////////////
  117.  
  118.                  if (lrto > rto) {
  119.                  //loadpmax=10000 --> 100%                     //O-¤---O
  120.                  loadpt = loadp * ((long)lrto - (long)rto) ;   //I-----I     ¤: loadpt
  121.                  loadpt = loadpt + ((long)rto * 10000);        //O-----O
  122.                  }
  123.                  
  124.                  else {
  125.                  loadpt = loadp * ((long)rto - (long)lrto) ;
  126.                  loadpt = loadpt + ((long)lrto * 10000);
  127.                  }
  128.  
  129. ////////////////////////////////////////////////////////////////////////////////////////////////////
  130.  
  131.                  if (lto > eesv) {                                //O-----O
  132.                  loadpu = loadp * ((long)lto - (long)eesv);       //I-----I     ¤: loadpu
  133.                  loadpu = loadpu + ((long)eesv * 10000);          //O---¤-O
  134.                  }
  135.  
  136.                  else {
  137.                  loadpu = loadp * ((long)eesv - (long)lto);
  138.                  loadpu = loadpu + ((long)lto * 10000);
  139.                  }
  140. ////////////////////////////////////////////////////////////////////////////////////////////////////
  141.                  /// rpmpmax=100 --> 100%
  142.                  //                                             L O A D
  143.                  if (loadpu > loadpt) {                       //O-----O R.   #: final rpmpt
  144.                  rpmpt = rpmp * (loadpu - loadpt);            //I--#--I P.
  145.                  rpmpt = rpmpt + (loadpt * 100);              //O-----O M.
  146.                  }
  147.  
  148.                  else {
  149.                  rpmpt = rpmp * (loadpt - loadpu);
  150.                  rpmpt = rpmpt + (loadpu * 100);
  151.                  }
  152.  
  153. /////////////////////////////////////////////////////////////////////////////////////////////////////
  154.              
  155.              
  156.                                                     //125000 2:1
  157.                  dell = (unsigned int)(((long)rpmpt * 25) / ((long)engine_rpm * 300));
  158.                
  159.  
  160.  
  161.  
  162.                  break;
  163.              }
  164.  
  165.  
  166.          
  167.  
  168.  
  169. ///////////////////////ENDLOADLOOP///////////////////////////////////
  170.  
  171.      
  172.  
  173. if (a > 20){
  174.     ADCON0bits.GO_nDONE=1;
  175. }
  176. else a++;
  177.      
  178.  
  179.   }
  180. ///////////END^2LESSLOOP/////////////////////////////////////////////////////////////////
  181. }
  182. ///////////ENDMAIN////////////////////////////////////////////////////////////////////////
  183. }
  184.  
  185. static void interrupt ISR (void) {
  186.     //////////////////////////GP2INT///////////////////////////////////////
  187.     if (INTCONbits.INTF == 1) {
  188.     //ENGINE ALREADY RUNNING
  189.     if (T1CONbits.TMR1ON==1)  {
  190.     T1CONbits.TMR1ON = 0; //STOP timer
  191.     time = TMR1H;
  192.     time = time << 8;
  193.     time = time + TMR1L ;
  194.     T1CONbits.TMR1ON=1;
  195.     TMR1L=0;
  196.     TMR1H=0;
  197.  
  198.    do  {
  199.    times = TMR1H;
  200.    times = times << 8;
  201.    times = times + TMR1L;
  202.     }
  203.     while (times < dell);
  204.  
  205.     GPIObits.GP0 = 0;
  206.     GPIObits.GP0 = 0;
  207.     GPIObits.GP0 = 1;
  208.     GPIObits.GP0 = 0;
  209.    
  210.  
  211.  
  212.     engine_rpm = ((unsigned int)(15000000 / (unsigned long)time));
  213.    
  214.  
  215.    
  216.             //engine_load++;
  217.             //if (engine_load > 100) engine_load = 0;
  218.    
  219.  
  220.  INTCONbits.INTF = 0;
  221.     //ALREADY R.
  222.     }
  223.  
  224.     //not run at b.
  225.     else {
  226.     GPIObits.GP0 = 1;
  227.     T1CONbits.TMR1ON = 1;
  228.     //engine_run=1;
  229.  
  230.     INTCONbits.INTF = 0; ///RETFIE
  231.     }
  232.     //NOT RUN AT B.
  233.  
  234.     INTCONbits.INTF = 0;  ///RETFIE
  235.     }
  236. /////////////////////////////////////GP2INT//////////////////////
  237.  
  238. //////////////////TMR1INT/////////////////////
  239.  
  240.  
  241.     else if (PIR1bits.TMR1IF == 1) {
  242.     ///TMR1 OVERFLOw
  243.  
  244.     i++;
  245.         if (i > 25) {
  246.         engine_rpm = 1;
  247.         T1CONbits.TMR1ON = 0;
  248.         GPIObits.GP0 = 0;
  249.         i=0;
  250.     }
  251.  
  252.     TMR1H = 0;
  253.     TMR1L = 0;
  254. PIR1bits.TMR1IF = 0;  ///RETFIE
  255. }
  256. /////////////////TMR1INT/////////////////////
  257.  
  258. if  (PIR1bits.ADIF == 1) {
  259.     ADCON0bits.ADFM = 1;
  260.     engine_loada = ADRESH;
  261.     engine_loada = engine_loada << 8;
  262.     engine_loada = engine_loada + ADRESL;
  263.     engine_load = ((engine_loada + engine_load) / 2);
  264.     if (engine_load < 1000){
  265.     engine_load = engine_load / 10;
  266.     }
  267.     else engine_load = 100;
  268.     a=0;
  269.     PIR1bits.ADIF = 0;
  270. }
  271.  ////////////////ADINT///////////////////////
  272.  
  273. }
A hozzászólás módosítva: Aug 9, 2014
(#) moltam válasza moltam hozzászólására (») Aug 10, 2014 /
 
A go_ndone bit pollingjával szépen működik az adc. Megszakítással lesz valami gond.
(#) soos csaba hozzászólása Aug 10, 2014 /
 
Sziasztok!
Meg építettem az LCM3 kis műszert, és az a problémám hogy a PIC16F690-es be ami volt program sikerült ki törölnöm. A cikkekben az LCM3 hex fájljait amiket le lehet tölteni,valahogyan át kellene alakítani bin formátumba, hogy tudom ezt meg csinálni?, mondjuk nekem csak a lcm3_v1.2.hex //alap verzió kellene persze bin formátumban. Előre is köszönöm a segítséget!
A hozzászólás módosítva: Aug 10, 2014
(#) moltam válasza moltam hozzászólására (») Aug 10, 2014 /
 
Tévedtem. Egyszer sikerült összehozni, hogy nagyjából jó legyen, mostmár pollinggal se jó. ADFM bitre egyáltalán nem realgál. GP4 tápra és megint kétszáz lapátja van a motor szimulálására használt ventillátornak a strobifény alatt. Úgyérzem hogy félreteszem a projektet egy időre. Esetleg megpróbálok írni egy adc tesztprogramot, és kikísérletezni a dolgokat.
(#) kistee válasza soos csaba hozzászólására (») Aug 10, 2014 /
 
Szia,

Nem tudom, mit értesz "bin formátum" alatt, de ha a lefordított programot, akkor szerintem nincs semmi más dolgod a hex fájlokkal, mint egy alkalmas eszközzel (PICkit2 és társai) beírni a PIC-be. Vagy valamit félreértettem...
(#) jonatani01 hozzászólása Aug 11, 2014 /
 
Sziasztok!
Hitachi LCD kijelzőre szeretnék macrot írni, amivel kiírathatok egy szöveget.
Pl.: LCD_TEXT "szevasz!"
Ezt lehet simán így, :
  1. LCD_TEXT macro text
  2.         local TABLE
  3.         .
  4.         .
  5.         .
  6. TABLE
  7.         ADDWF   PCL,F
  8.         DT      text
  9.         DT      0X00
  10.         ENDM

, vagy valahogy máshogy kell implementálni?
(#) jonatani01 válasza jonatani01 hozzászólására (») Aug 12, 2014 /
 
Nem tudja valaki? :/
(#) Hp41C válasza jonatani01 hozzászólására (») Aug 12, 2014 / 1
 
Csak a PCLATH regiszter feltöltésére és a 256 byte -os határokra kell még vigyázni.
A hozzászólás módosítva: Aug 12, 2014
(#) jonatani01 válasza Hp41C hozzászólására (») Aug 12, 2014 /
 
Most még csak simán 8 ledet próbálok így meghajtani a C portról, de valamiért nem működik.
Az összes led világít, nem történik semmi más ezzel a macroval.
  1. LED_FLASH macro table
  2.         LOCAL   FLASH
  3.         LOCAL   TABLE
  4.  
  5.         BANKSEL PORTC
  6.         CLRF            STATE      ;kívül deklarált változó
  7.  
  8. FLASH:
  9.         CALL    TABLE
  10.         XORLW   0X00
  11.         BTFSC   STATUS,Z
  12.         EXITM
  13.         MOVWF   PORTC
  14.         DECFSZ  DELAY1
  15.         GOTO    $-1
  16.         DECFSZ  DELAY2
  17.         GOTO    $-3
  18.         INCF    STATE,F
  19.         GOTO    FLASH
  20.  
  21. TABLE:
  22.         MOVFW   STATE
  23.         ADDWF   PCL,F
  24.         DT              table,0x00
  25.         ENDM


Viszont ha a macro helyett a kódot írom a főprogramba, akkor meg működik:
  1. BANKSEL PORTC
  2.         CLRF           STATE
  3.  
  4. FLASH:
  5.         CALL    TABLE
  6.         XORLW   0X00
  7.         BTFSC   STATUS,Z
  8.         GOTO       $+13        ;makro utáni sor
  9.         MOVWF   PORTC
  10.         DECFSZ  DELAY1
  11.         GOTO    $-1
  12.         DECFSZ  DELAY2
  13.         GOTO    $-3
  14.         INCF    STATE,F
  15.         GOTO    FLASH
  16.  
  17. TABLE:
  18.         MOVFW   STATE
  19.         ADDWF   PCL,F
  20.         DT              "ASD",0x00
A hozzászólás módosítva: Aug 12, 2014
(#) pajti2 hozzászólása Aug 12, 2014 /
 
Pic konfigurációs bit absztrakt értékeknek próbálok utána nézni. Telepítve van egy mplab c for pic32 v 2.02-es, és keresném a pic32mx795f512l config bitjeinek előre definiált értékeit.

Amit a config bit nevekhez eddig találtam, az "C:\Program Files (x86)\Microchip\mplabc32\v2.02\pic32-libs\include\proc\p32mx795f512l.h" file-ból került elő. A config regiszter bitek nevei ott vannak a 14133-tól 14210-ig sorokban.

Beleakadtam egy olyan projectbe, ami valami nagyon varázslatosan használja a config opciókat a hozzá mellékelt kommentekhez és az elektronikához képest, és a mélyére ásnék, mi is van ott igazából.
(#) Hp41C válasza jonatani01 hozzászólására (») Aug 12, 2014 /
 
Így csináld:
  1. table   macro  text
  2.             MOVFW   STATE
  3.                 ADDWF   PCL,F
  4.                 DT      text,0x00
  5.                 ENDM

  1. LED_FLASH table "hello"
  2.      
  3.             BANKSEL PORTC
  4.             CLRF    STATE      ;kívül deklarált változó
  5.      
  6. FLASH:
  7.             CALL    LED_FLASH
  8.             XORLW   0X00
  9.             BTFSC   STATUS,Z
  10.             goto        EXIT
  11.             MOVWF   PORTC
  12.             DECFSZ  DELAY1,f
  13.             GOTO    $-1
  14.             DECFSZ  DELAY2,f
  15.             GOTO    $-3
  16.             INCF    STATE,F
  17.             GOTO    FLASH
  18.  
  19. EXIT:           goto    $
(#) jonatani01 válasza Hp41C hozzászólására (») Aug 12, 2014 /
 
De azt szeretném hogy a főprogramban csak ennyi legyen:
  1. LED_FLASH "hello"

Vagy a próbálkozás idejére gondoltad hogy így csináljam? Mert arra tényleg jó.
A hozzászólás módosítva: Aug 12, 2014
(#) Hp41C válasza jonatani01 hozzászólására (») Aug 12, 2014 /
 
  1. LEDFLASH        macro  text
  2.                 local   table
  3.                 local   FLASH
  4.                 local   LEDFLASHEXIT
  5.         BANKSEL PORTC
  6.         CLRF    STATE      ;kívül deklarált változó
  7.  
  8. FLASH:
  9.             CALL    table
  10.             XORLW   0X00
  11.             BTFSC   STATUS,Z
  12.             goto        LEDFLASHEXIT
  13.             MOVWF   PORTC
  14.             DECFSZ  DELAY1,f
  15.             GOTO    $-1
  16.             DECFSZ  DELAY2,f
  17.             GOTO    $-3
  18.             INCF    STATE,F
  19.             GOTO    FLASH
  20.  
  21. table:
  22.             MOVFW   STATE
  23.                 ADDWF   PCL,F
  24.                 DT      text,0x00
  25. LEDFLASHEXIT:
  26.                 ENDM

  1. LEDFLASH        "hello"
  2.         LEDFLASH        "word"

De miért is jó, hogy a kijelzés vezérlés annyiszor fog szerepelni a kódban, ahányszor a macro -t leírod?
(#) jonatani01 válasza Hp41C hozzászólására (») Aug 12, 2014 /
 
Először örülök, ha működik. Miután sikerül, majd akkor szedem csak szét két részre. Külön egy lookup table készítésre és külön a vezérlésre.
És köszönöm a segítséget!
A hozzászólás módosítva: Aug 12, 2014
(#) Birs Alma hozzászólása Aug 12, 2014 /
 
Sziasztok,

Egy LED-et szeretnék bekapcsolni PIC16F877A-val. A LED egyik lábát GND-re, másikat 330ohmos ellenálláson keresztül a PIC 2-es lábára (RA0) kötöttem. (Jó polaritással!)

Az alábbi programmal próbálom a LED-et bekapcsolni, de semmi nem történik.

  1. #include <..\inc\p16f877a.inc>
  2.  
  3.             __config ( _WDT_OFF & _PWRTE_OFF & _CP_OFF &  _WRT_OFF & _DEBUG_OFF)
  4.  
  5.  ORG 0x0000
  6.            
  7.     bsf     STATUS, RP0    
  8.     bcf     STATUS, RP1     ; Bank1
  9.     movlw   0x06            
  10.     movwf   ADCON1                      
  11.     clrf    TRISA          
  12.     bcf     STATUS, RP0     ;
  13.     bcf     STATUS, RP1     ; Bank0
  14.     movlw   0xFF
  15.     movwf   PORTA
  16.     goto    $
  17.  
  18.   end


MPLAB IDE 8.90-et használok.

A fordítás, letöltés alatt minden rendben lévőnek látszik. Nincs hibaüzenet.

Bár, ha a 'Verify the contents the target device' ikonra kattintok, akkor az alábbi üzenetet kapom:

Verifying Target
PIC16F877A found (Rev 0x8)
Verifying Program Memory (0x0 - 0x1FFF)
PK2Error0027: Failed verify (Address = 0x0 - Expected Value 0x1683 - Value Read 0x0)
PICkit 2 Ready

Ennek mi lehet az oka?

Fura az is, hogy ha 'Read target device memories' ikonra nyomok, majd a menüből a View/Program memory pontot választom, akkor a megjelenő ablakban csupa nullát látok, Itt nem az általam imént betöltött kódot kéne ekkor látnom?

Kösz a segítséget.

L.
(#) ktamas66 válasza Birs Alma hozzászólására (») Aug 13, 2014 /
 
A config-ból hiányzik az órajel beállítása, lehet egy port inicializálás sem ártana (ahogy az adatlap írja).
(#) Hp41C válasza Birs Alma hozzászólására (») Aug 13, 2014 /
 
Programozónak válaszd ki a PICkit2 -t, ne debugger -nek.
A hozzászólás módosítva: Aug 13, 2014
(#) Birs Alma válasza ktamas66 hozzászólására (») Aug 13, 2014 /
 
Kösz. A port inicializálását beírtam most így néz ki a kód. Sajnos a LED most sem világít

  1. #include <..\inc\p16f877a.inc>
  2.  
  3.             __config ( _WDT_OFF & _PWRTE_OFF & _CP_OFF &  _WRT_OFF & _DEBUG_OFF)
  4.  
  5.  ORG 0x0000
  6.     ORG 0x0000
  7.            
  8.     bsf     STATUS, RP0    
  9.     bcf     STATUS, RP1     ; Bank1
  10.     clrf    PORTA          
  11.    
  12.     bsf     STATUS, RP0    
  13.     bcf     STATUS, RP1     ; Bank1
  14.     movlw   0x06          
  15.     movwf   ADCON1                    
  16.     clrf    TRISA          
  17.    
  18.     bcf     STATUS, RP0     ;
  19.     bcf     STATUS, RP1     ; Bank0
  20.     movlw   0xFF
  21.     movwf   PORTA
  22.     goto    $
  23.  
  24.   end


Az órajel beállítását nem tudom, hogyan kell csinálni. Korábban 16F690-et, 12f675-öt programoztam teljesen sikeresen, azokon nem kellett az órajelet beállítani. Ezen kellene?
(#) Birs Alma válasza Hp41C hozzászólására (») Aug 13, 2014 /
 
Kösz, de természetesen programmernek van a PICKIT2 kiválasztva a menüben, különben nem is tudom a programot áttölteni, hibaüzenetet kapok.
(#) Pali79 válasza Birs Alma hozzászólására (») Aug 13, 2014 /
 
Már hogyne kellett volna! Milyen kaviccsal hajtod?
(#) ktamas66 válasza Birs Alma hozzászólására (») Aug 13, 2014 /
 
Az .inc állományban megnézheted milyen opciók vannak. Látszik, hogy többféleképpen is lehet beírni, de ugyan azt az eredményt adja ( _FOSC_HS vagy _HS_OSC is 3FFE-t ad).
  1. ;----- CONFIG Options --------------------------------------------------
  2. _FOSC_LP             EQU  H'3FFC'    ; LP oscillator
  3. _LP_OSC              EQU  H'3FFC'    ; LP oscillator
  4. _FOSC_XT             EQU  H'3FFD'    ; XT oscillator
  5. _XT_OSC              EQU  H'3FFD'    ; XT oscillator
  6. _FOSC_HS             EQU  H'3FFE'    ; HS oscillator
  7. _HS_OSC              EQU  H'3FFE'    ; HS oscillator
  8. _FOSC_EXTRC          EQU  H'3FFF'    ; RC oscillator
  9. _RC_OSC              EQU  H'3FFF'    ; RC oscillator


A PORTA a 0 bankban van, a bcf,bsf helyett használd a banksel PORTA parancsot, sokkal áttekinthetőbb.
(#) Hp41C válasza Birs Alma hozzászólására (») Aug 13, 2014 /
 
Idézet:
„__config ( _WDT_OFF & _PWRTE_OFF & _CP_OFF & _WRT_OFF & _DEBUG_OFF)”

A DEBUG konfigurációs bitet az MpLab kezeli. Vedd ki a sorból. Az oszcillátor beállítást tedd hozzá a sorhoz. 4MHz alatt _XT_OSC, felette _HS_OSC kell.
  1. __config (  _HS_OSC & _LVP_OFF & _WDT_OFF & _PWRTE_OFF & _CP_OFF &  _WRT_OFF)

A programot Release módban fordítsd. Az ablakban felül közepen a Debug -ot állítsd át release -re.
(#) Birs Alma válasza Hp41C hozzászólására (») Aug 13, 2014 /
 
Módosítottam a __config beállítást. Alaphelyzetben gondolom _HS_OSC kell.
Annyit változott a helyzet, hogy a 'Verify the contents the target device' már nem ad hibaüzenetet.
Sajnos a LED továbbra sem világít

A Release mód megint csak nem tudom mi. Én nem látok Az ablakon felül (máshol sem) olyat ahol Debug-ot Release-re tudnám állítani. De gondolom abban lehet, mert fordításkor ezt írja ki:

Release build of project `C:\PIC\asm_\test_1.disposable_mcp' succeeded.
Language tool versions: MPASMWIN.exe v5.49, mplink.exe v4.47, mplib.exe v4.47
Wed Aug 13 22:10:23 2014
----------------------------------------------------------------------
BUILD SUCCEEDED
(#) Hp41C válasza Birs Alma hozzászólására (») Aug 13, 2014 /
 
Tápszűrő kondenzátorok (min. 2 db 100nF kerámia), quartz + 2 db 22pF és a MCLR láb és a Vdd közötti 10k ellenállás be van kötve? A két - két Vdd és Vss láb páronként össze van kötve?
(#) Birs Alma válasza Hp41C hozzászólására (») Aug 13, 2014 /
 
Nekem az a Combo box szűrke és nincsen semmi benne ?!?! Az meg hogy lehet, hogy Neked igen??
(#) ktamas66 válasza Birs Alma hozzászólására (») Aug 13, 2014 /
 
Létre van hozva egy project, és hozzá van adva ez az asm file?
(#) Birs Alma válasza Hp41C hozzászólására (») Aug 13, 2014 /
 
Hát azt hiszem igen. Ezek megvannak. És még azt is kipróbáltam, ha a kék vezetéket a PIC 2-es lábáról átdugom a +5 voltba, akkor kigyúl a led, szóval jó a led és nem kötöttem be fordítva.
Hát most már tényleg nem tudom, hogyan tovább....
(#) Birs Alma válasza ktamas66 hozzászólására (») Aug 13, 2014 /
 
Nem, nincsen project.
A Project menüben a Quick build parancsra nyomok. Ennyi. Korrábban is mindent így fordítottam. Még egyszer sem csináltam projectet.
Következő: »»   554 / 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