Ir ao conteúdo
  • Cadastre-se

Assembly 8051 - Programação & Hardware sobre este MCU


xyko-2020

Posts recomendados

  • 2 semanas depois...

Senhores, venho com novidades. boas e ruins.

A boa é que consegui desenvolver um programador de microcontrolador em C++. Está ficando bacana. Estou utilizando as instruções do manual do AT89S52, mas em muito breve vou fazer para os outros mC's. Já peguei o manual do AT89S8252 e muda bastante coisa. As frases são em 3 bytes, diferente do AT89S52 que são em 4 bytes. Mas acho que vai dar certo também.

E eu cheguei a uma conclusão sobre a alimentação do circuito pelo cabo não funciona. A impressão que eu tenho é que a porta pararela não consegue fornecer corrente suficiente para alimentar o circuito. Para acender um led até que funciona, mas para alimentar um circuito com mC não rola.

A novidade ruim é que estou apanhando de uma porta paralela de um notebook antigo que comprei. Não sei porque mas no desktop funciona normalmente, mas no notebook não rola. Nem o ISP Progr v3.0 funciona. Não consegui descobrir ainda porque.

Um dos testes que fiz foi pegar uma dessas placas de gravação (que recebi ao me inscrever em um curso) e funcionou no notebook.

Estou achando que o problema é o cabo, ou então o MOSI que é o pino do mC que envia dados para o PC não está conseguindo enviar um sinal consistente para a porta paralela.

Parece então que quando utilizado um buffer funciona, mas sem o buffer não. Talvez eu precise fazer um pull-up. Alguém tem alguma ideia?

Quanto a configuração da porta paralela, eu tenho o seguinte:

No computador que funciona, a porta está configurada como:

LPT1 - 378h - Standard

No notebook está assim:

LPT1 - 378h - Bi-Direcional

Mas eu já testei todas as outras configurações ECP e não funcionou. A única diferença que percebi, é que no notebook não tem a configuração ECP+EPP, mas como a configuração standard já está funcionando no computador desktop como standard, não acredito ser necessário utilizar ECP+EPP.

Bom, se alguem puder me ajudar, agradeço.

Ah! a entrada de dados que estou usando na porta paralela é o pino de status ack, ou seja, o pino 10. Utilizei um programa para testar a porta paralela e está tudo ok.

Soschips, vou fazer para o micro que você não estava achando gravador. Aí a gente testa.

você está usando buffer no seu circuito, né? Vou ter que fazer acertos na programação, mas acho que vai funcionar.

[]s

Renato

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

beleza, Renato!

Eu queria estar trabalhando no programador também, mas tá difícil arrumar tempo. Quando penso que vou ter uns 3 dias de folga após terminar um projeto, já tem outros 2 na fila... (não pense que não estou gostando...hehehe)

Soschips, vou fazer para o micro que você não estava achando gravador.
A micro a que você se refere é o AT89S2051 ???

Ainda estou com eles parados aqui. Tomara que consiga e se quiser posso publicar ele com os créditos todos para você.

Abraço!

Link para o comentário
Compartilhar em outros sites

A micro a que você se refere é o AT89S2051 ???

Ainda estou com eles parados aqui. Tomara que consiga e se quiser posso publicar ele com os créditos todos para você.

Abraço!

Isso, já até baixei o datasheet desse micro. Interessante essa versão, tem serial embutida. Bacana!

Consegui gravar um byte no endereço 00H do AT89S52. Fiz a leitura e retornou o byte que eu gravei. Ou seja, agora preciso fazer o programa "aprender" a ler arquivos .HEX e utilizar essas rotinas acima várias vezes para gravar nos respectivos endereços da memória.

Isso até que está tranquilo. O meu problema é a bendita da porta paralela do notebook. A programação que fiz só funciona no meu computador desktop, não funciona no note. Estou com receio que funcione em alguns computadores e em outros não.

Mas eu sou insistente, vou acabar descobrindo o que é esse pau na porta pararela do notebook!

Depois volto com mais notícias.

PS: Ainda bem que você está cheio de projetos pra fazer! Isso é bom, sinal de que tem bastante mercado nessa área!

[]s

Renato

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Serial o C2051 também tem, mas o S2051 tem o dobro de RAM interna e pode dobrar o clock internamente. Veja as características dos 2. Em vermelho, recursos exclusivos do S2051.

• Compatible with MCS 51 Products

• 2K/4K Bytes of In-System Programmable (ISP) Flash Program

– Serial Interface for Program Downloading

– Endurance: 10,000 Write/Erase Cycles

• 2.7V to 5.5V Operating Range

• Fully Static Operation: 0 Hz to 24 MHz

• Two-level Program Memory Lock

• 256 x 8-bit Internal RAM

• 15 Programmable I/O Lines

• Two 16-bit Timer/Counters

• Six Interrupt Sources

• Programmable Serial UART Channel

• Direct LED Drive Outputs

On-chip Analog Comparator with Selectable Interrupt

• 8-bit PWM (Pulse-width Modulation)

• Low Power Idle and Power-down Modes

• Brownout Reset

• Enhanced UART Serial Port with Framing Error Detection an

Address Recognition

• Internal Power-on Reset

• Interrupt Recovery from Power-down Mode

• Programmable and Fuseable x2 Clock Option

• Four-level Enhanced Interrupt Controller

• Power-off Flag

Flexible Programming (Byte and Page Modes)

– Page Mode: 32 Bytes/Page

• User Serviceable Signature Page (32 Bytes)

E veja só o tamanho dele que tenho aqui:

89s2051.gif

Link para o comentário
Compartilhar em outros sites

• Programmable and Fuseable x2 Clock Option

Agora entendi porque existe os comandos de "write fuse" e "read fuse". Deve ser para ativar ou desativar essa opção de x2 do clock.

Gostei muito desse micro. Só pela questão do tamanho já vale a pena, ainda mais tendo serial! O PWM eu ainda não sei pra que serve. Sei que tbém tendo isso embutido já é outra grande vantagem, mas ainda não sei usar. Vi um exemplo em um kit didático, mas fiquei na mesma. Não entendi qual é a vantagem de fazer leds acenderem e apagarem devagar. Parece um oscilador LC.

Mas finalmente eu consegui descobrir o problema no notebook. Fiz um teste com o desktop e descobri que a porta pararela consegue acender um led com um resistor de 1k. No notebook, esse mesmo led com esse mesmo resistor de 1k, não acende. Minha impressão é que a porta paralela do notebook não tem a mesma capacidade de fornecer corrente que a do desktop. Talvez alguma limitação de consumo de energia por se tratar de um notebook.

Vou colocar um buffer (74HC126) para resolver esse problema de estabilização de corrente e tensão. Mas vou ter que alterar todo o esquema de gravação.

[]s

Renato

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...
  • Membro VIP

A minha ideia é fazer um kit que receba os arquivos BIN ou HEX diretamente do ponyprog ou ICprog, armazanar em RAM paralela e executar este arquivo a partir do endereço 8000h ou 0000.

Se for a partir do 0, terei que usar o reset em conjunto com um FF para ativar a entrada EA do micro, e se for de 8000h, bastaria dar um salto para esse endereço.

Mas a questão é... eu queria fazer algo bem simples, sem usar display LCD, teclado ou muitos LEDs, para que seja simples de montar.

Acham que precisaria haver display e teclado ou o usuário mesmo poderia adicionar e testar as rotinas que criará na RAM ?

Lembrando que se houvesse esses periféricos, suas rotinas de acesso e endereços de I/O teriam que ser fixos e o projeto não ficaria flexível e nem tão simples como eu gostaria que fosse.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...
  • Membro VIP

Bom, apesar da preferência pelo kit de desenvolvimento, apareceu um projeto pra eu desenvolver que terei que usar um AT89S2051 SMD.

Resolvi montar um gravador para estes dispositivos e as características são:

- Baixo custo. O material do protótipo custou em torno de R$20,00

- Usa o ponyprog com porta serial.

- grava AT89C2051 e C4051 em modo paralelo.

- grava AT89S2051 e S4051 em ISP.

- Usa uma memória I2C como interface com o ponyprog. Isto possibilita usar várias memórias se quiser 'arquivar' seus programas mais importantes e os mais usados. Com isso, uma vez transferido o arquivo para esta memória, pode-se usar o gravador desconectado do PC.

2008-09-13_104252.gif

2008-09-13_110337.gif

Já montei a placa e estou desenvolvendo o firmware. Logo estarão disponíveis aqui e no site.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Já uso este recurso há algum tempo e também é a ideia para o kit de desenvolvimento.

ponyprog --> EEPROM 24C256 -- > AT89S52 --> RAM 62256 ---> execução

Não é simples?

Estas memórias podem ser escritas/apagadas/alteradas até 1 milhão de vezes e tem retenção de dados de 40 a 200 anos.

Dá pra testar muitos programas até chegar no limite garantido pelo fabricante.

Fazendo as contas, se você conseguisse transferir do PC para esta memória 100 programas por dia, levaria 10.000 dias ou 27 anos para ter que substituir a eeprom.

O esquema:

2008-09-13_180346.gif

Link para o comentário
Compartilhar em outros sites

  • mês depois...
  • Membro VIP

Pessoal, terminei o gravador e funcionou, mas falta um tempinho pra organizar tudo e disponibilizar pra vocês.

Estou postando hoje pra indicar este excelente site para baixar apostilas e todo tipo de material sobre eletrônica e microcontroladores, linguagens de programação... etc

http://www.scribd.com/search?query=microcontroller&x=21&y=22

http://scrib.com

l

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois...

Fala soschip!

Estive sumido de novo por estar enrolado com outras coisas. Mas como eu nunca desisto, consegui terminar o gravador para o AT89S52. Organizei todo o projeto e vou publicar alguma coisa entre hoje e amanhã por aqui.

Só que esse programador que eu desenvolvi foi para gravar no micro controlador direto do PC. É uma aplicação em C++ que grava no micro via ISP. Ficou bacana o material, tirei umas fotos e coisa e tal.

Minha ideia é criar um programador modular em que as funções de gravação específicas do AT89S52 sejam uma biblioteca e as do AT89S2051 sejam outra e assim por diante. Assim poderemos ter um gravador e várias bibliotecas. Com a documentação certa, terceiros podem construir bibliotecas e anexá-las no programador.

Bom, o material que estou montando tem mais informações. Mais tarde posto tudo.

[]s

Renato

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Graaaande!

Coloca aqui porque ultimamente eu estou sem tempo pra nada. Estou com um monte de coisas pra colocar no site, mas por enquanto vão ficar paradas. Só a partir de dezembro ou janeiro as coisas vão ficar mais calmas.

Posta mesmo , OK. Estou aguardando.

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois...
Graaaande!

Coloca aqui porque ultimamente eu estou sem tempo pra nada. Estou com um monte de coisas pra colocar no site, mas por enquanto vão ficar paradas. Só a partir de dezembro ou janeiro as coisas vão ficar mais calmas.

Posta mesmo , OK. Estou aguardando.

Fala soschip!

Demorei de novo. hehehe, mas saiu. Montei um tutorial bem bacana de como funciona o processo de gravação. Não consegui colocar no tutorial todos os detalhes do processo de gravação, mas pelo menos dá pra fazer um teste de comunicação enviando um ProgEnable e recebendo a resposta.

http://www.4shared.com/file/75122469/3a1d5b7b/Tutorial_Gravador_de_AT89S52.html

Me mande comentarios para eu saber se atendeu as espectativas.

[]s

Renato

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Parabéns, Renato.

Demorou menos do que eu... e ficou muito bem detalhado...para quem quer iniciar um programa gravador.

Aproveitando que reabriu o tópico, eu consegui gravar o AT89S2051 com o programa do Ibrahim Kamal

http://www.ikalogic.com/isp.php

Resolvi os problemas com a substituição do 7408 pelo 74HCT244.

Já gravei com um cabo de mais de 3 metros.

Eis o esquema

grava_AT89S2051.gif

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...

Olá pessoal, alguem ja tentou fazer o gravador ISP descrito neste link? :

http://www.coolcircuit.com/project/atmel_isp/

Estou tentando e não estou acertando. O circuito é um dos mais simples. Mas falta algumas especificações de capacitores.

Ele usa um 74HC541, li em outros foruns que a linha HC é problema e teria que usar LS, ja em outros sites diz do LS não é compativel com a velocidade dos PC´S de hoje...

Cada um fala uma coisa e o pior é que nenhum circuito tenha alguem que diga: "Realmente funciona".

Se alguem tiver algo simples como desse link, por favor, poste aqui.

Estou tentando fazer modificações no circuito para ver se funciona.

Link para o comentário
Compartilhar em outros sites

Olá pessoal, alguem ja tentou fazer o gravador ISP descrito neste link? :

http://www.coolcircuit.com/project/atmel_isp/

Estou tentando e não estou acertando. O circuito é um dos mais simples. Mas falta algumas especificações de capacitores.

Ele usa um 74HC541, li em outros foruns que a linha HC é problema e teria que usar LS, ja em outros sites diz do LS não é compativel com a velocidade dos PC´S de hoje...

Cada um fala uma coisa e o pior é que nenhum circuito tenha alguem que diga: "Realmente funciona".

Se alguem tiver algo simples como desse link, por favor, poste aqui.

Estou tentando fazer modificações no circuito para ver se funciona.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!