Página 1 de 2
Poblema pra garvar o AT89S52

Enviado:
06 Jun 2007 14:20
por Fenix
Eu to usando o Aec_isp e o ispprog, mas sempre da erro, o ispprog não reconhece o uC e o Aec_isp sempre da erro qnado eu tento gravar, geralmente da erro e depois funciona, mas eu não to mais conseguindo de jeito nehum!!!!!
alguem sabe o q pode ta acontecendo?????

Enviado:
25 Jun 2007 22:43
por Renato_Rod
Estou com o mesmo problema.
Estou montando o circuito conforme o esquema do proprio AEC-ISP mas com um resistor de 1k5 no reset.
Estou alimentando com 5V no pino 40 com 0V no pino20, um cristal nos 18/19 e os capacitores de 22pf. mais nada.
Protoboard.

Enviado:
06 Jul 2007 17:52
por edusoppa
Olá senhores,
Eu tambem já tive muitos problemas com o esquema de gravação do aec_isp, o que me tomava muito tempo e me deichava furioso, então resolvi desenvolver uma placa para gravação e debug do atmel 89s52 bem como outros, agora não tenho mais este problema e fico ate mais animado para desenvolver projetos com o 8051.
Se alguem se interessar é soh entrar em contato por e-mail.
edusoppa@yahoo.com.br
Um abraço.
Eduardo.

Enviado:
23 Ago 2007 17:01
por Renato Nogueira
Eu também estou com o mesmo problema. Já montei o circuito do gravador na placa(2x) e na matriz de contato(já perdi a conta das vezer que tentei).
JÁ ESTOU P... DE TANTA RAIVA!!!
Já estou pensando em abandonar a família 8051 e entrar de cabeça no PIC.
Alguém conhece um outro gravador?
Abs

Enviado:
24 Ago 2007 12:19
por Tiago Silva
Olá Pessoal;
de vez em quando tenho este problemas tb,
tenho problema na hora de gravar as vezes da erro, nao reconhece uC ..., bit contra leitura \gravação habilitado .....etc , ai eu mando incializar o mesmo e depois mando gravar ai resolve.
as vezes desligo e ligo a fonte resolve.
não sei o pq do erro nos bits travados, sendo que durante o desenvolvimento eu não travos os mesmo.
Tiago

Enviado:
24 Ago 2007 15:32
por Tiago Silva
Olá Pessoal;
Usei cabo usado de impressora matricial para fazer o cabo do gravador, tive problema com solda fria no lado do conector que ja estava pronto ( veio da fabrica),
Isso hora funcionva hora não no WIN98 arumando solda acabou problema, deposi passei para o XP ai não funcionou mais nada ate descobrir que o XP não libera a porta e tinha que instalar o drive IOport pra resolver.
Tiago

Enviado:
24 Ago 2007 16:10
por brasilma
Gente, usem o software e o esquema do colega Rafael, uso ele há 5 anos sem problemas (apenas não usem a função para gravar a partir de arquivos .HEX da ultima versão que não está funcionando direito).
Link:
http://rafaelbf.tripod.com/grava.htm .
Abraços,
MArco(s).

Enviado:
27 Ago 2007 09:25
por Renato Nogueira
Brasilma, eu até já tentei montar esse gravador, mas o problema foi que não achei de forma alguma o CI 74HCT541 aqui em Fortaleza.
Acho que fizeram alguma macumba pra mim.


Enviado:
27 Ago 2007 09:47
por brasilma
Renato,
Nem precisa do CI, liga apenas com resistores em série de 33R ou 47R, para proteger a paralela, o meu é assim e nunca deu problema.
Abraços,
MArcos.

Enviado:
27 Ago 2007 09:58
por Renato Nogueira
Um colega me passou agora a pouco esse esquema
http://www.rfsantos.eng.br/micro.htm
Ele não utiliza o integrado, deve ser igual ao seu.
A diferença é que o programa que ele utiliza está em ingles, mas esse do rafael deve ser a versão em português do mesmo.
Irei montar esse esquema e depois postarei os resultados.
Obrigado cara.
Abraços.

Enviado:
28 Ago 2007 10:58
por Tiago Silva
Olá Renato;
Acabei de montar o gravador sugerido pelo Brasilma e funcionou 100%.
Porem usei resistor de 47r no lugar do integrado, eu tambem não consigo CI 74hct xxxx aqui na cidade.
o esquema do gravador que vc postou e completamente diferente (pinagem) do postado anterior pelo Brasilma.
Tiago

Enviado:
28 Ago 2007 12:07
por Fábio Pereira
Será que o autor do tópico poderia, por favor, corrigir os erros de português do subject do mesmo ?
"Poblema pra garvar o AT89S52"
Está realmente MUITO feio do jeito que está.
Um pouquinho mais de atenção na hora de escrever seria muito bom !
Pessoal: vamos nos esforçar para escrever um pouco melhor ?
T+

Enviado:
28 Ago 2007 12:51
por 51
Realmente o titulo deste tópico esta horrivel...

Enviado:
29 Ago 2007 07:37
por ze
este é um programa simples que fiz e que FUNCIONOU para gravar 89s52 há alguns anos. o hw tbém é mui simples. para os + experts fica até subentendido. já foi adaptado para 89s8253 com SUCESSO. se alguem quiser posto o hw quando o achar

) . usei borland turbo c++ para dos.
detalhe: para arquivo binário. se for hex, use hex2bin.exe
concordo + 1 vez: pelo menos no assunto não erre o português (deu até poesia!)
- Código: Selecionar todos
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <bios.h>
#define pport 0x378
#define iport 0x379
#define uchar unsigned char
void fim()
{
outportb(pport,0xff & ~8); //desliga vcc
_setcursortype(_NORMALCURSOR);
printf("\n");
exit(1);
}
void tempo(unsigned char t)
{
unsigned char j=0;
outportb(0x61,0); //desliga contador timer2
outportb(0x43,0xb0); //timer2, modo 0, lsb -> msb
outportb(0x42,t); //lsb
outportb(0x42,0); //msb
outportb(0x61,1); //liga contador
/*
nok:
asm {
mov al,0xc8
out 0x43,al
in al,0x42
and al,0x80
jz nok
}
*/
while(!j)
{
outportb(0x43,0xc8); //read back
j=inportb(0x42); //status da saida
j&=0x80;
}
}
unsigned char shift(unsigned char d)
{
unsigned char i,p,resultado=0;
for (i=0;i<8;i++)
{
if (d&0x80) p=~5; //bit3=vcc=1,bit2=reset=1,bit0=dado=1
else p=~4; // bit0=dado=0
outportb(pport,p); //bit0=dado
p&=~2; //bit1=clock em 1
outportb(pport,p); //bit0=dado
// tempo(5);
resultado<<=1;// shift the result to get it ready for the next bit
if (!(inportb(iport)&0x40)) resultado|=0x01;// if result is one, then set LS bit
p|=2; //bit1=clock em 0
outportb(pport,p);
// tempo(5);
d<<=1;
}
return resultado;
}
//escreve e le 1 byte
uchar rwbyte(uchar a1, uchar a2, uchar a3, uchar d)
{
shift(a1);shift(a2);shift(a3); //envia o endereço
return shift(d); //envia e le o dado
}
void
main(int argc,char *argv[])
{
FILE *fin;
char arq1[40];
unsigned char temp,dado[0x2000];
unsigned long chksum=0, i=0;
unsigned int k,j=0,y,ah,al;
printf("\nATS 1.1A - (c) LLR-2004 Programador de 89S52 ATMEL\n");
if (argc!=2) {printf("\nUse: ats [nome do arquivo (.bin)]\n");fim();}
strcpy(arq1,argv[1]);
if (!(fin=fopen(arq1,"rb"))) {printf("\nArquivo nao encontrado\n");fim();}
for (i=0;i<0x2000;i++) {
fread(&dado[i],1,1,fin);
temp=dado[i];chksum+=temp;
}
fclose(fin);
printf("%s%s%s","\nArquivo: ",arq1," -> CHECKSUM = ");
textcolor(14);cprintf("%X\n",chksum);
printf("\n");
printf("\n");
printf("\n256 primeiros caracteres do arquivo:\n");
for (j=0;j<0x256;j++)
{
printf("%c",dado[j]);
}
printf("\n");
printf("\n256 Ultimos caracteres do arquivo:\n");
for (j=0x2000-256;j<0x2000;j++)
{
printf("%c",dado[j]);
}
printf("\n");
outportb(pport,0xff); //vcc em 1 reset em 0
delay(500);
outportb(pport,8 | ~4); //vcc e reset em 1
delay(500);
_setcursortype(_NOCURSOR);
if (rwbyte(0xac,0x53,0,0)!=0x69) //program enable
{
textcolor(14);
cprintf("\n%s","NAO ACHEI O CI!!");fim();
}
rwbyte(0xac,0x53,0,0);
delay(100);
temp=rwbyte(0x28,0,0,0);
printf("%s%X\n"," Signature byte 1= ",temp);
delay(100);
rwbyte(0xac,0x53,0,0);
delay(100);
temp=rwbyte(0x28,1,0,0);
printf("%s%X\n"," Signature byte 2= ",temp);
delay(100);
rwbyte(0xac,0x53,0,0);
temp=rwbyte(0x28,2,0,0);
printf("%s%X\n"," Signature byte 3= ",temp);
delay(100);
rwbyte(0xac,0x53,0,0);
delay(100);
temp=rwbyte(0x24,0,0,0)&0x1c; //so interessam bits 4,3,2
printf("%s%X\n\n"," Lock Bits= ",temp);
y=wherey();
printf("Tecle <ENTER> para gravar ou <ESC> para sair");
if (getch()==27) fim();
rwbyte(0xac,0x53,0,0);
delay(100);
rwbyte(0xac,0x80,0,0); //chip erase
delay(100);
gotoxy(1,y);
printf("GRAVANDO E VERIFICANDO... (Para cancelar, pressione qualquer tecla)");
printf("\n");
y=wherey();
chksum=0;
rwbyte(0xac,0x53,0,0);
delay(200);
for (i=0;i<0x2000;i++)
{
ah=i/256;
al=i-ah*256;
if (kbhit()) fim(); //tecle algo p/ sair
rwbyte(0xac,0x53,0,0); //prog enable
rwbyte(0x40,ah,al,dado[i]); //grava o dado
rwbyte(0xac,0x53,0,0); //prog enable
temp=rwbyte(0x20,ah,al,0); //le o dado
if (temp!=dado[i])
{
printf("\n");
textcolor(14);cprintf("\n%s%X","ERRO endereco= ",i);
fim();
}
chksum+=temp;
k=(j+4)/4;
gotoxy(k,y);printf("Þ ");
j=((i+1)*100)/0x2000;
gotoxy(27,y);cprintf("%u%s",j,"%");
}
printf("\n");
printf("%s","\n\nCHECKSUM DO CI= ");
textcolor(14);cprintf("%X\n",chksum);
printf("\nTecle <ENTER> para gravar Lock Bits ou <ESC> para nao gravar\n");
if (getch()==27) {
printf("\n");
cprintf("LOCK BITS NAO GRAVADOS !!!");
printf("\n");
goto nglb;
}
rwbyte(0xac,0x53,0,0);
delay(100);
rwbyte(0xac,0xe1,0,0); //grava lock bit1
delay(100);
rwbyte(0xac,0x53,0,0);
delay(100);
rwbyte(0xac,0xe2,0,0); //grava lock bit2
delay(100);
rwbyte(0xac,0x53,0,0);
delay(100);
rwbyte(0xac,0xe3,0,0); //grava lock bit3
delay(100);
nglb:
rwbyte(0xac,0x53,0,0);
delay(100);
temp=rwbyte(0x28,0,0,0);
printf("%s%X\n"," Signature byte 1= ",temp);
delay(100);
rwbyte(0xac,0x53,0,0);
temp=rwbyte(0x28,1,0,0);
printf("%s%X\n"," Signature byte 2= ",temp);
delay(100);
rwbyte(0xac,0x53,0,0);
temp=rwbyte(0x28,2,0,0);
printf("%s%X\n"," Signature byte 2= ",temp);
delay(100);
rwbyte(0xac,0x53,0,0);
delay(100);
temp=rwbyte(0x24,0,0,0)&0x1c; //so interessam bits 4,3,2
if (temp) printf("%s%X\n"," Lock Bits= ",temp);
else cprintf("%s%X\n"," Lock Bits= ",temp);
outportb(pport,0xff&~8); //desliga vcc
printf("\n");
_setcursortype(_NORMALCURSOR);
}

Enviado:
30 Ago 2007 15:41
por Renato Nogueira
Brasilma, vou montar o gravador hoje e para não correr o risco de fazer alguma m**** e esquentar a cabeça mais ainda, eu gostaria de saber se a configuração com resistores que você utiliza é exatamente assim:
http://www.orkut.com/AlbumZoom.aspx?uid ... 8282&pid=1
Só utilizei o orkut porque não encontrei a opção para colocar foto.
Abs