Sari la conținut
ELFORUM - Forumul electronistilor

Probleme pickit3 si mplab


M.Adrian

Postări Recomandate

       Salut, am incercat recent sa programez un microcontroller pic16f1937, folosesc un pickit3 si ultima versiune de mplab. Am incarcat un program, a functionat, dupa care am modificat cateva randuri in cod iar apoi primeam o eroare care imi spunea sa alimentez uc extern, nu de la pickit3, am facut asta si primesc aceeasi eroare.

       Mai nou am incercat alt program si primesc eroarea asta la incarcare

 

make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory 'F:/CONCURS'
make  -f nbproject/Makefile-default.mk dist/default/production/CONCURS.production.hex
make[2]: Entering directory 'F:/CONCURS'
"C:\Program Files\Microchip\xc8\v2.05\bin\xc8-cc.exe"  -mcpu=16F1937 -c  -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -Wa,-a -DXPRJ_default=default  -msummary=-psect,-class,+mem,-hex,-file  -ginhx032 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall   -std=c99 -gdwarf-3 -mstack=compiled:auto:auto     -o build/default/production/newfile.p1 newfile.c 
newfile.c:8:6: error: variable has incomplete type 'void'
void interrupt etti(void); // functie de intreruperi globala ptr. TOATE intreruperile de pe un
     ^
newfile.c:8:15: error: expected ';' after top level declarator
void interrupt etti(void); // functie de intreruperi globala ptr. TOATE intreruperile de pe un
              ^
              ;
newfile.c:32:6: error: variable has incomplete type 'void'
void interrupt etti(void) // ajung aici la fiecare 250*4us=1ms
     ^
newfile.c:32:15: error: expected ';' after top level declarator
void interrupt etti(void) // ajung aici la fiecare 250*4us=1ms
              ^
              ;
4 errors generated.
(908) exit status = 1
nbproject/Makefile-default.mk:106: recipe for target 'build/default/production/newfile.p1' failed
make[2]: Leaving directory 'F:/CONCURS'
nbproject/Makefile-default.mk:90: recipe for target '.build-conf' failed
make[1]: Leaving directory 'F:/CONCURS'
make[2]: *** [build/default/production/newfile.p1] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed

BUILD FAILED (exit value 2, total time: 5s)

 

 

       Stiti cumva care ar putea fi problema?

Editat de M.Adrian
Link spre comentariu
  • Răspunsuri 16
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • M.Adrian

    8

  • mars01

    4

  • Mircea

    3

  • informer

    1

... retractez... m-am uitat putin la mplab :)  ... eventual posteaza codu` ala din juru` rutinei de intrerupere...

 

Editat de informer
Link spre comentariu

Mplab IDE e vechi. Instaleaza Mplab X IDE si vine si cu IPE. Merge foarte fiabil cu PICKIT3, cel putin cu ala original. 

Link spre comentariu

       Revin cu detalii, pentru compilerul xc8 functia de intrerupere trebuie scrisa altfel. Am rezolvat erorile la program, dar inca am aceasta eroare:

The target circuit may require more power than the debug tool can provide. An external power supply might be necessary.
Connection Failed.

       Am incercat si cu alimentare externa si tot asa este.

Editat de M.Adrian
Link spre comentariu

Daca aplici alimentare externa trebuie sa setezi in MplabX IPE sa foloseasca alimentarea externa. In meniul Advanced. Daca folosesti MplabX IDE, cauta setarea in proprietatile proiectului, sectiunea PicKit3.

 

LE: si pt altii care patesc ceva similar in ceea ce priveste eroarea din primul post, in XC8 functia de intrerupere se declara:

void __interrupt(high_priority) ISR_name(void) {
	// code
}

(sau low_priority, dupa caz).

Editat de mars01
Link spre comentariu

Atunci cand se foloseste alimentare externa si PICKit3 este setat corespunzator, acea eroare mentionata numai are cum sa apara.

Prin urmare, programatorul nu a fost setat desi setarea este efectuata in soft-ul de control.

Poti incerca sa fortezi programarea unui alt controller ca sa se incarce firmware-ul corespunzator in PICKit si apoi sa revii la uC_ul initial, reprogramand astfel PICKit-ul.

 

Daca nu te descurci in IDE incearca sa folosesti IPE. Eu nu am avut nici-un esec folosind acest software.

 

Asigura-te ca ai conexiunile facute corect pe placa de test.

 

Link spre comentariu

Exact, un update de FW ar fi bun si el, caci uneori ADC-ul intern detecteaza o tensiune USB mai mica decat e in realitate.

 

Insa, se poate ca si portul USB sa dea o tensiune mai mica iar PICKIT3 o vede ca un consum extern. Poate schimbati portul USB doar de dragul testului.

Link spre comentariu

La Voltage Level pune 4.6 - 4.7V, am avut probleme similare cu seria  PIC16F18326. Dupa ce am setat 4.7V a luat-o fara probleme. 

Link spre comentariu

Am incercat si cu Mplab x ipe si primesc eroarea asa:

 

Connecting to MPLAB PICkit 3...

Currently loaded firmware on PICkit 3
Firmware Suite Version.....01.55.01
Firmware type..............Enhanced Midrange
MPLAB X has detected that the device’s low voltage configuration bit is set to OFF but the tool is set to low voltage programming and cannot program the device. To correct this:
1. Change the tool’s programming option to use High Voltage programming.
2. Change the device’s configuration bit to use low voltage (LVP=ON). Program the device using high voltage to reprogram the device’s configuration bit.
3. Change the tool’s programming option back to Low Voltage programming for subsequent programming of the device.

 

Macar acum am mai  multe detalii, dar situatia inca ma depaseste.

 

 

Acesta este programul pe care incerc sa il incarc acum

 

#include <xc.h>
#define _XTAL_FREQ 16000000;
__PROG_CONFIG(1,0x3FE4);
__PROG_CONFIG(2,0x1EFF);
int a=100;
unsigned long y=0;
void init (void);
void main(void)
{
   init();
   while (1) 
   {
      if(RA0==1)
      {
     a=a+4;
     if(a==1000)
        a=100;
     for(y=0;y<2000;y++);
      }
      TMR0IF=0;
      RB4=1;
      TMR0=255-(a/4);
      while(!TMR0IF);
      TMR0IF=0;
      RB4=0;
      TMR0=255-((1000-a)/4);
      while(!TMR0IF);
 }
  }
void init (void)
{
OSCCON=0x7B; 
TRISB = 0x00;
ANSELB=0x00;
PORTB = 0x00; 
RB4=0;

TRISA=0x01;
ANSELA=0x00;
PORTA=0x00;   
OPTION_REG = 0b00000011;
}
 

Editat de M.Adrian
Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări