Poblema pra garvar o AT89S52

Software e Hardware para linha x51

Moderadores: 51, guest2003, Renie, gpenga

Poblema pra garvar o AT89S52

Mensagempor Fenix » 06 Jun 2007 14:20

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?????
Avatar do usuário
Fenix
Bit
 
Mensagens: 7
Registrado em: 26 Nov 2006 09:00

Mensagempor Renato_Rod » 25 Jun 2007 22:43

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.
Renato_Rod
 
Mensagens: 3
Registrado em: 31 Mar 2007 02:41

Mensagempor edusoppa » 06 Jul 2007 17:52

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.
edusoppa
Nibble
 
Mensagens: 55
Registrado em: 23 Out 2006 15:55

Mensagempor Renato Nogueira » 23 Ago 2007 17:01

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!!! :evil: :evil: :evil:

Já estou pensando em abandonar a família 8051 e entrar de cabeça no PIC.

Alguém conhece um outro gravador?

Abs
Renato Nogueira
Bit
 
Mensagens: 36
Registrado em: 13 Dez 2006 15:39

Mensagempor Tiago Silva » 24 Ago 2007 12:19

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
Tiago Silva
Bit
 
Mensagens: 33
Registrado em: 03 Nov 2006 15:27

Mensagempor Tiago Silva » 24 Ago 2007 15:32

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
Tiago Silva
Bit
 
Mensagens: 33
Registrado em: 03 Nov 2006 15:27

Mensagempor brasilma » 24 Ago 2007 16:10

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).
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Mensagempor Renato Nogueira » 27 Ago 2007 09:25

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.

:twisted:
Renato Nogueira
Bit
 
Mensagens: 36
Registrado em: 13 Dez 2006 15:39

Mensagempor brasilma » 27 Ago 2007 09:47

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.
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Mensagempor Renato Nogueira » 27 Ago 2007 09:58

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.
Renato Nogueira
Bit
 
Mensagens: 36
Registrado em: 13 Dez 2006 15:39

Mensagempor Tiago Silva » 28 Ago 2007 10:58

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
Tiago Silva
Bit
 
Mensagens: 33
Registrado em: 03 Nov 2006 15:27

Mensagempor Fábio Pereira » 28 Ago 2007 12:07

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 !

:wink:

Pessoal: vamos nos esforçar para escrever um pouco melhor ?

T+
Fábio Pereira
embeddedsystems.io
Avatar do usuário
Fábio Pereira
Word
 
Mensagens: 674
Registrado em: 16 Out 2006 09:07
Localização: Kitchener, ON

Mensagempor 51 » 28 Ago 2007 12:51

Realmente o titulo deste tópico esta horrivel...
51
Administrador
 
Mensagens: 325
Registrado em: 12 Out 2006 12:37
Localização: Americana - SP

Mensagempor ze » 29 Ago 2007 07:37

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 :o) . 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);
}
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor Renato Nogueira » 30 Ago 2007 15:41

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
Renato Nogueira
Bit
 
Mensagens: 36
Registrado em: 13 Dez 2006 15:39

Próximo

Voltar para 8051

Quem está online

Usuários navegando neste fórum: Bing [Bot] e 1 visitante

x