Autor Tema: donde esta el fallo?  (Leído 2971 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado dewasha

  • PIC10
  • *
  • Mensajes: 19
donde esta el fallo?
« en: 09 de Julio de 2011, 11:39:29 »
Hola buenas, Necesito saber que esta mal en este codigo ya que me da un error al compilarlo y no soi capaz de encontrarlo este es el error que me da el IDE pinguino:

C:\Users\Alex\Downloads\pinguino_beta9-05_windows\pinguino_beta9-05_windows\source\/user.c:1: syntax error: token -> 'source' ; column 11
Error mientras compila archivoC:\Users\Alex\Downloads\pinguino_beta9-05_windows\pinguino_beta9-05_windows\pinguino como replicador


Código: [Seleccionar]
view source
print?
001 // This is a tool to program the pinguino bootloader in a new chip
002 // with your Pinguino, the self replicating machine !!
003 // Jean-Pierre MANDON 2010
004 // Fixed bug 02/07/2011 PGM pin is no longer used
005
006 #define PGC 1       // connected to the PGC pin of the blank chip
007 #define PGD 2       // connected to the PGD pin of the blank chip
008 #define VPP 3       // connected to the VPP pin of the blank chip
009 #define VCC 6       // connected to the power on transistor
010 #define redled 5
011
012 uchar bulkerase[48] ={0x00,0x3C,0x0E,0x00,0xF8,0x6E,0x00,0x00,0x0E,0x00,0xF7,0x6E,0x00,0x05,0x0E,0x00,
013                       0xF6,0x6E,0x0C,0x3F,0x3F,0x00,0x3C,0x0E,0x00,0xF8,0x6E,0x00,0x00,0x0E,0x00,0xF7,
014                       0x6E,0x00,0x04,0x0E,0x00,0xF6,0x6E,0x0C,0x8F,0x8F,0x00,0x00,0x00,0x00,0x00,0x00};
015
016 uchar startwrite[24]={0x00,0xA6,0x8E,0x00,0xA6,0x9C,0x00,0x00,0x0E,0x00,0xF8,0x6E,0x00,0x00,0x0E,0x00,
017                       0xF7,0x6E,0x00,0x00,0x0E,0x00,0xF6,0x6E};
018
019 uchar startwrid[24] ={0x00,0xA6,0x8E,0x00,0xA6,0x8C,0x00,0x30,0x0E,0x00,0xF8,0x6E,0x00,0x00,0x0E,0x00,
020                       0xF7,0x6E,0x00,0x00,0x0E,0x00,0xF6,0x6E};
021 uchar checkmem[32];
022 uint address=0;
023
024 #define pic_on()  digitalWrite(VCC,LOW)
025 #define pic_off() digitalWrite(VCC,HIGH)
026
027 // begin programming mode
028 // power is on ( VCC and Programing voltage )
029
030 void start_pgm()
031 {
032     digitalWrite(VPP,HIGH);
033     delayMicroseconds(4);
034 }
035
036 // end programming mode
037 // power is on ( VCC and Programing voltage )
038
039 void stop_pgm()
040 {
041     digitalWrite(PGD,LOW);
042     digitalWrite(PGC,LOW);
043     digitalWrite(VPP,LOW);
044 }
045
046 // send a command to the chip
047 // SPI soft
048
049 void send_command(uchar command,uchar lowbyte,uchar highbyte)
050 {
051     unsigned char i;
052     for (i=0;i<4;i++)
053         {
054         digitalWrite(PGC,HIGH);
055         if ((command&1)==1) digitalWrite(PGD,HIGH);
056         else digitalWrite(PGD,LOW);
057         digitalWrite(PGC,LOW);
058         command=command>>1;
059         }
060     for (i=0;i<8;i++)
061         {
062         digitalWrite(PGC,HIGH);
063         if ((lowbyte&1)==1) digitalWrite(PGD,HIGH);
064         else digitalWrite(PGD,LOW);
065         digitalWrite(PGC,LOW);
066         lowbyte=lowbyte>>1;
067         }
068     for (i=0;i<8;i++)
069         {
070         digitalWrite(PGC,HIGH);
071         if ((highbyte&1)==1) digitalWrite(PGD,HIGH);
072         else digitalWrite(PGD,LOW);
073         digitalWrite(PGC,LOW);
074         highbyte=highbyte>>1;
075         }
076 digitalWrite(PGC,LOW);
077 digitalWrite(PGD,LOW);
078 }
079
080 // special end of command write
081 // DS39622K Page 20 figure 3.5 (Flash Microcontroller Programming Specification)
082
083 void end_writecmd()
084 {
085 unsigned char i;
086 digitalWrite(PGD,LOW);
087 for (i=0;i<3;i++)
088     {
089     digitalWrite(PGC,HIGH);
090     digitalWrite(PGC,LOW);
091     }
092 digitalWrite(PGC,HIGH);
093 delay(6);
094 digitalWrite(PGC,LOW);
095 delayMicroseconds(500);
096 for (i=0;i<8;i++)
097     {
098     digitalWrite(PGC,HIGH);
099     digitalWrite(PGC,LOW);
100     }
101 for (i=0;i<8;i++)
102     {
103     digitalWrite(PGC,HIGH);
104     digitalWrite(PGC,LOW);
105     }
106
107
108 // Read Flash memory
109 // Pinguino examples Flash folder
110
111 uint ReadFlash(uint address)
112 {
113 uchar high8,low8;
114 TBLPTRU=0;
115 TBLPTRH=address>>8;
116 TBLPTRL=address;
117 __asm tblrd*+ __endasm;
118 low8=TABLAT;
119 __asm tblrd*+ __endasm;
120 high8=TABLAT;
121 return((high8<<8)+low8);
122 }
123
124 //-----------------------------------------------------------
125 // begining of the main loop
126 //-----------------------------------------------------------
127
128 void setup()
129 {
130 pinMode(PGC,OUTPUT);
131 digitalWrite(PGC,LOW);
132 pinMode(PGD,OUTPUT);
133 digitalWrite(PGD,LOW);
134 pinMode(VPP,OUTPUT);
135 digitalWrite(VPP,LOW);
136 pinMode(redled,OUTPUT);
137 digitalWrite(redled,LOW);
138 pinMode(VCC,OUTPUT);
139 digitalWrite(VCC,HIGH);
140 }
141
142 void loop()
143 {
144 int i;
145
146 // erase chip
147
148 pic_on();
149 delay(20);
150 start_pgm();
151 digitalWrite(redled,HIGH);
152 delay(10);
153 for (i=0;i<48;i+=3) send_command(bulkerase[i],bulkerase[i+1],bulkerase[i+2]);
154 delay(100);
155 stop_pgm();
156 delay(20);
157 pic_off();
158 delay(1000);
159
160 // read bootloader and write it
161
162 pic_on();
163 delay(1000);
164 start_pgm();
165 delay(10);
166 for (i=0;i<24;i+=3) send_command(startwrite[i],startwrite[i+1],startwrite[i+2]);
167 while (address<0x1FDF)
168     {
169     for (i=0;i<32;i++) checkmem[i]=ReadFlash(address+i);
170     for (i=0;i<30;i+=2) send_command(0b00001101,checkmem[i],checkmem[i+1]);
171     send_command(0b00001110,checkmem[30],checkmem[31]);
172     end_writecmd();
173     address+=32;
174     digitalWrite(redled,digitalRead(redled)^1);
175     delay(4);
176     }
177 digitalWrite(redled,HIGH);
178 for (i=0;i<32;i++) checkmem[i]=ReadFlash(address+i);
179 for (i=0;i<48;i+=3) send_command(startwrite[i],startwrite[i+1],startwrite[i+2]);
180 for (i=0;i<30;i+=2) send_command(0b00001101,checkmem[i],checkmem[i+1]);
181 send_command(0b00001111,checkmem[30],checkmem[31]);
182 end_writecmd();
183
184 // ---------- end copying bootloader
185
186 // programing configuration bits
187
188 for (i=0;i<24;i+=3) send_command(startwrid[i],startwrid[i+1],startwrid[i+2]);
189 send_command(0b00001111,0x24,0x24);
190 end_writecmd();
191 send_command(0,0x01,0x0E);
192 send_command(0,0xF6,0x6E);
193 send_command(0b00001111,0x0E,0x0E);
194 end_writecmd();
195 send_command(0,0x02,0x0E);
196 send_command(0,0xF6,0x6E);
197 send_command(0b00001111,0x3F,0x3F);
198 end_writecmd();
199 send_command(0,0x03,0x0E);
200 send_command(0,0xF6,0x6E);
201 send_command(0b00001111,0x1E,0x1E);
202 end_writecmd();
203 send_command(0,0x05,0x0E);
204 send_command(0,0xF6,0x6E);
205 send_command(0b00001111,0x81,0x81);
206 end_writecmd();
207 send_command(0,0x06,0x0E);
208 send_command(0,0xF6,0x6E);
209 send_command(0b00001111,0x81,0x81);
210 end_writecmd();
211 send_command(0,0x08,0x0E);
212 send_command(0,0xF6,0x6E);
213 send_command(0b00001111,0x0F,0x0F);
214 end_writecmd();
215 send_command(0,0x09,0x0E);
216 send_command(0,0xF6,0x6E);
217 send_command(0b00001111,0xC0,0xC0);
218 end_writecmd();
219 send_command(0,0x0A,0x0E);
220 send_command(0,0xF6,0x6E);
221 send_command(0b00001111,0x0F,0x0F);
222 end_writecmd();
223 send_command(0,0x0B,0x0E);
224 send_command(0,0xF6,0x6E);
225 send_command(0b00001111,0xA0,0xA0);
226 end_writecmd();
227 send_command(0,0x0C,0x0E);
228 send_command(0,0xF6,0x6E);
229 send_command(0b00001111,0x0F,0x0F);
230 end_writecmd();
231 send_command(0,0x0D,0x0E);
232 send_command(0,0xF6,0x6E);
233 send_command(0b00001111,0x40,0x40);
234 end_writecmd();
235
236 // ---------- end configuration bits
237
238 stop_pgm();
239 pic_off();
240
241 digitalWrite(redled,LOW);
242
243 while(1);
244 }

gracias por adelantado

Desconectado dewasha

  • PIC10
  • *
  • Mensajes: 19
Re: donde esta el fallo?
« Respuesta #1 en: 09 de Julio de 2011, 12:04:16 »
he borrado el compilador y lo he vuelto a descomprimir del archivo zip en el que viene y ahora da un error diferente:


C:\Users\Alex\Downloads\pinguino_beta9-05_windows\pinguino_beta9-05_windows\source\/user.c:3: syntax error: token -> '002' ; column 3
Error mientras compila archivoC:\Users\Alex\Downloads\pinguino_beta9-05_windows\pinguino_beta9-05_windows/NoName0

el error parece estar en el archivo user.c3 pero ni lo he modificado yo ni creado ni nada no se por que esta mal

Desconectado dewasha

  • PIC10
  • *
  • Mensajes: 19
Re: donde esta el fallo?
« Respuesta #2 en: 09 de Julio de 2011, 12:06:19 »
Si uso otro sketch funciona perfectamente solo da fallo cuando uso este codigo en concreto.

Desconectado dewasha

  • PIC10
  • *
  • Mensajes: 19
Re: donde esta el fallo?
« Respuesta #3 en: 09 de Julio de 2011, 12:11:29 »
tan bien dispongo de la version original sin corregir el fallo(supuestamente por que sige sin funcionar en la version nueva):

Código: [Seleccionar]
// This is a tool to program the pinguino bootloader in a new chip
// with your Pinguino, the self replicating machine !!
// Jean-Pierre MANDON 2010

#define PGC 1 // connected to the PGC pin of the blank chip
#define PGD 2 // connected to the PGD pin of the blank chip
#define VPP 3 // connected to the VPP pin of the blank chip
#define VCC 6 // connected to the power on transistor
#define redled 5


uchar bulkerase[48] ={0x00,0x3C,0x0E,0x00,0xF8,0x6E,0x00,0x00,0x0E,0x00,0xF7,0x6E,0x00,0x05,0x0E,0x00,
                      0xF6,0x6E,0x0C,0x3F,0x3F,0x00,0x3C,0x0E,0x00,0xF8,0x6E,0x00,0x00,0x0E,0x00,0xF7,
              0x6E,0x00,0x04,0x0E,0x00,0xF6,0x6E,0x0C,0x8F,0x8F,0x00,0x00,0x00,0x00,0x00,0x00};
     
uchar startwrite[24]={0x00,0xA6,0x8E,0x00,0xA6,0x9C,0x00,0x00,0x0E,0x00,0xF8,0x6E,0x00,0x00,0x0E,0x00,
  0xF7,0x6E,0x00,0x00,0x0E,0x00,0xF6,0x6E};
 
uchar startwrid[24] ={0x00,0xA6,0x8E,0x00,0xA6,0x8C,0x00,0x30,0x0E,0x00,0xF8,0x6E,0x00,0x00,0x0E,0x00,
  0xF7,0x6E,0x00,0x00,0x0E,0x00,0xF6,0x6E};
uchar checkmem[32];
uint address=0;

#define pic_on()  digitalWrite(VCC,LOW)
#define pic_off() digitalWrite(VCC,HIGH)
 
// begin programming mode
// power is on ( VCC and Programing voltage )

void start_pgm()
{
digitalWrite(VPP,HIGH);
delayMicroseconds(4);
}

// end programming mode
// power is on ( VCC and Programing voltage )

void stop_pgm()
{
digitalWrite(PGD,LOW);
digitalWrite(PGC,LOW);
digitalWrite(PGM,LOW);
digitalWrite(VPP,LOW);
}

// send a command to the chip
// SPI soft

void send_command(uchar command,uchar lowbyte,uchar highbyte)
{
unsigned char i;
for (i=0;i<4;i++)
{
digitalWrite(PGC,HIGH);
if ((command&1)==1) digitalWrite(PGD,HIGH);
else digitalWrite(PGD,LOW);
digitalWrite(PGC,LOW);
command=command>>1;
}
for (i=0;i<8;i++)
{
digitalWrite(PGC,HIGH);
if ((lowbyte&1)==1) digitalWrite(PGD,HIGH);
else digitalWrite(PGD,LOW);
digitalWrite(PGC,LOW);
lowbyte=lowbyte>>1;
}
for (i=0;i<8;i++)
{
digitalWrite(PGC,HIGH);
if ((highbyte&1)==1) digitalWrite(PGD,HIGH);
else digitalWrite(PGD,LOW);
digitalWrite(PGC,LOW);
highbyte=highbyte>>1;
}
digitalWrite(PGC,LOW);
digitalWrite(PGD,LOW);
}

// special end of command write
// DS39622K Page 20 figure 3.5 (Flash Microcontroller Programming Specification)

void end_writecmd()
{
unsigned char i;
digitalWrite(PGD,LOW);
for (i=0;i<3;i++)
{
digitalWrite(PGC,HIGH);
digitalWrite(PGC,LOW);
}
digitalWrite(PGC,HIGH);
delay(6);
digitalWrite(PGC,LOW);
delayMicroseconds(500);
for (i=0;i<8;i++)
{
digitalWrite(PGC,HIGH);
digitalWrite(PGC,LOW);
}
for (i=0;i<8;i++)
{
digitalWrite(PGC,HIGH);
digitalWrite(PGC,LOW);
}
}

// Read Flash memory
// Pinguino examples Flash folder

uint ReadFlash(uint address)
{
uchar high8,low8;
TBLPTRU=0;
TBLPTRH=address>>8;
TBLPTRL=address;
__asm tblrd*+ __endasm;
low8=TABLAT;
__asm tblrd*+ __endasm;
high8=TABLAT;
return((high8<<8)+low8);
}

//-----------------------------------------------------------
// begining of the main loop
//-----------------------------------------------------------

void setup()
{
pinMode(PGM,OUTPUT);
digitalWrite(PGM,LOW);
pinMode(PGD,OUTPUT);
digitalWrite(PGD,LOW);
pinMode(VPP,OUTPUT);
digitalWrite(VPP,LOW);
pinMode(redled,OUTPUT);
digitalWrite(redled,LOW);
pinMode(VCC,OUTPUT);
digitalWrite(VCC,HIGH);
}

void loop()
{
int i;

// erase chip

pic_on();
delay(20);
start_pgm();
digitalWrite(redled,HIGH);
delay(10);
for (i=0;i<48;i+=3) send_command(bulkerase[i],bulkerase[i+1],bulkerase[i+2]);
delay(100);
stop_pgm();
delay(20);
pic_off();
delay(1000);

// read bootloader and write it

pic_on();
delay(1000);
start_pgm();
delay(10);
for (i=0;i<24;i+=3) send_command(startwrite[i],startwrite[i+1],startwrite[i+2]);
while (address<0x1FDF)
{
for (i=0;i<32;i++) checkmem[i]=ReadFlash(address+i);
for (i=0;i<30;i+=2) send_command(0b00001101,checkmem[i],checkmem[i+1]);
send_command(0b00001110,checkmem[30],checkmem[31]);
end_writecmd();
address+=32;
digitalWrite(redled,digitalRead(redled)^1);
delay(4);
}
digitalWrite(redled,HIGH);
for (i=0;i<32;i++) checkmem[i]=ReadFlash(address+i);
for (i=0;i<48;i+=3) send_command(startwrite[i],startwrite[i+1],startwrite[i+2]);
for (i=0;i<30;i+=2) send_command(0b00001101,checkmem[i],checkmem[i+1]);
send_command(0b00001111,checkmem[30],checkmem[31]);
end_writecmd();

// ---------- end copying bootloader

// programing configuration bits

for (i=0;i<24;i+=3) send_command(startwrid[i],startwrid[i+1],startwrid[i+2]);
send_command(0b00001111,0x24,0x24);
end_writecmd();
send_command(0,0x01,0x0E);
send_command(0,0xF6,0x6E);
send_command(0b00001111,0x0E,0x0E);
end_writecmd();
send_command(0,0x02,0x0E);
send_command(0,0xF6,0x6E);
send_command(0b00001111,0x3F,0x3F);
end_writecmd();
send_command(0,0x03,0x0E);
send_command(0,0xF6,0x6E);
send_command(0b00001111,0x1E,0x1E);
end_writecmd();
send_command(0,0x05,0x0E);
send_command(0,0xF6,0x6E);
send_command(0b00001111,0x81,0x81);
end_writecmd();
send_command(0,0x06,0x0E);
send_command(0,0xF6,0x6E);
send_command(0b00001111,0x81,0x81);
end_writecmd();
send_command(0,0x08,0x0E);
send_command(0,0xF6,0x6E);
send_command(0b00001111,0x0F,0x0F);
end_writecmd();
send_command(0,0x09,0x0E);
send_command(0,0xF6,0x6E);
send_command(0b00001111,0xC0,0xC0);
end_writecmd();
send_command(0,0x0A,0x0E);
send_command(0,0xF6,0x6E);
send_command(0b00001111,0x0F,0x0F);
end_writecmd();
send_command(0,0x0B,0x0E);
send_command(0,0xF6,0x6E);
send_command(0b00001111,0xA0,0xA0);
end_writecmd();
send_command(0,0x0C,0x0E);
send_command(0,0xF6,0x6E);
send_command(0b00001111,0x0F,0x0F);
end_writecmd();
send_command(0,0x0D,0x0E);
send_command(0,0xF6,0x6E);
send_command(0b00001111,0x40,0x40);
end_writecmd();

// ---------- end configuration bits

stop_pgm();
pic_off();

digitalWrite(redled,LOW);

while(1);
}


si ejecuto este sketch en vez del supuesto corregido el fallo de la variable PGM este es el error que me daba:

C:\Users\Alex\Downloads\pinguino_beta9-05_windows\pinguino_beta9-05_windows\source\/user.c:50: error 20: Undefined identifier 'PGM'
C:\Users\Alex\Downloads\pinguino_beta9-05_windows\pinguino_beta9-05_windows\source\/user.c:147: error 20: Undefined identifier 'PGM'
C:\Users\Alex\Downloads\pinguino_beta9-05_windows\pinguino_beta9-05_windows\source\/user.c:148: error 20: Undefined identifier 'PGM'
C:\Users\Alex\Downloads\pinguino_beta9-05_windows\pinguino_beta9-05_windows\source\main.c:96: warning 197: keyword 'interrupt' is deprecated, use '__interrupt' instead
C:\Users\Alex\Downloads\pinguino_beta9-05_windows\pinguino_beta9-05_windows\source\main.c:140: warning 197: keyword 'interrupt' is deprecated, use '__interrupt' instead
Error mientras compila archivoC:\Users\Alex\Downloads\pinguino_beta9-05_windows\pinguino_beta9-05_windows/NoName0

la variable PGM supuestamente ya no se usa pero si no se declara pues da estos errores entoces nose como sustituirla sin fastidiar el codigo

Desconectado dewasha

  • PIC10
  • *
  • Mensajes: 19
Re: donde esta el fallo?
« Respuesta #4 en: 09 de Julio de 2011, 12:14:45 »
este es el esquema del harware que se usa para clonar el bootloader del pic aver si os sirve para guiarse, creo que la variable PGM ya no se usa por que ahora el voltaje de programacion (+12v) lo proporciona externamente y ya no se necesita esa variable. pero mejor que lo digáis vosotros.

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4919
Re: donde esta el fallo?
« Respuesta #5 en: 09 de Julio de 2011, 15:01:29 »
Hola dewasha, por favor no repita los mismo problema en el foro, y no espere nunca que nadie te conteste tan rapido, aparte que ese programador por lo que veo poca gente lo conoce, sino sabe las reglas del foro mejor que vaya leyendo http://www.todopic.com.ar/foros/index.php?action=globalAnnouncements;id=1

Saludos ;-)

Desconectado dewasha

  • PIC10
  • *
  • Mensajes: 19
Re: donde esta el fallo?
« Respuesta #6 en: 10 de Julio de 2011, 09:22:15 »
han sido 2 preguntas diferentes...si te fijas una trata de un error en codigo y otro sobre como modificar un bootloader que creo que no tiene nada que ver...