Duvida???

Software e Hardware para linha x51

Moderadores: 51, guest2003, Renie, gpenga

Duvida???

Mensagempor lucflores » 19 Mar 2007 10:31

Ola Camaradas!!

Tenho feito programas p/ o 89s52, porem agora necessito fazer o seguinte, e tenho uma dúvida:

Gostaria de saber como o pessoal faz para adicionar algo na rotina do processador ja programado.

Pois aqui na empresa tenho uma placa pequena que contem somente um PIC, esta placa gera um codigo dtmf, junto com esta placa vem software do proprio fabricante, onde posso escolher o código que vai ser gerado e programo a plaquinha novamente, mas acho que não e compilado um programa com o novo codigo, como se fosse um .HEX.

Então como fazer isto com o 89s52, um software que será feito para inserir dados na rotina da mcu ja programada anteriormente ????

Valeu!!!
lucflores
Nibble
 
Mensagens: 90
Registrado em: 16 Nov 2006 15:39

Mensagempor Fábio Pereira » 19 Mar 2007 11:00

Bem confusa a sua questão hein ?

Existem várias formas de fazer o que você precisa:

1- Reprogramando toda a FLASH do chip com o novo programa. Isto poderia ser feito através de um bootloader;

2- Enviando novos parâmetros de operação (via cabo serial ou outro meio de comunicação). Neste caso o programa do chip armazenaria tais parâmetros em uma memória não-volátil (como a EEPROM interno do 8252) e utilizaria tais parâmetros para reconfigurar a sua operação;

Até +
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 lucflores » 19 Mar 2007 11:47

O que seria um bootloader????

E ja tinha até pensado em colocar uma memória flash externa so com os paramentros que quero modificar, dai a mcu faria a leitura da memoria externa. Sera que isto funciona? E eu teria que gravar a memoria sem tirar ela do circuito, tipo in-circuit, mas nunca gravei memoria, tem algum segredo? Tem que ter algum software especial?

Obrigado pela ajuda, Valeu...
lucflores
Nibble
 
Mensagens: 90
Registrado em: 16 Nov 2006 15:39

Mensagempor brasilma » 19 Mar 2007 12:10

Luc,

Vc poderia enviar os pinos do ISP a pinos livres de algum conector externo do sistema, ai, com um programador pode reprogramá-lo.

Nós já fizemos isto em uma aplicação.

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 lucflores » 19 Mar 2007 13:52

Ok, Mas eu queria fazer um software em linguagem alto nível, tipo C++, dai eu não teria como compilar para gerar um .HEX, e não teria um gravador, a linguagem o software poderia gravar uma memória (não sei se funciona?) mas eu fazer em C++ um software que compile e grave direto a flash do 89s52. dai eu acho dificil.
lucflores
Nibble
 
Mensagens: 90
Registrado em: 16 Nov 2006 15:39

Mensagempor brasilma » 19 Mar 2007 16:22

Olá Luc,

Gravar o chip via ISP não é dificil não (no manual do próprio chip tem as instruções), e vc não precisa compilar nada.

Basta deixar previsto no soft a leitura de uma área de dados no final do programa, o seu programa em C lê o .HEX, grava o uC acrescentando os dados no final do arquivo.

É uma ótima solução.

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 lucflores » 19 Mar 2007 16:42

brasilma

Você por acaso ja fez algo parecido?? Deixa eu ve se enterndi. crio o programa normal na mcu, mas este quando fosse pro final da memoria não iria ler lixo da memoria? ou acho que não entendi direito...
lucflores
Nibble
 
Mensagens: 90
Registrado em: 16 Nov 2006 15:39

Mensagempor brasilma » 19 Mar 2007 17:30

É simples, no seu programa, na área de definições você define as áreas que serão ocupadas pelos dados, no final da memória Flash, assim:

ASCII2HEXFAT EQU 17D9H ; Tabela de fatores para conversao - 18 bytes 12H
HEX2ASCIIFAT EQU 17EBH ; Tabela de fatores para conversao - 21 bytes 15h(7FF-6D9=295 bytes)

Quando estiver gravando o controlador, escreve nestas áreas os dados que deseja, no exemplo acima, na área que começa em 17D9H, você guarda 18 bytes, e na outra 21 bytes.

Se o compilador reclamar que estão faltando os dados, faça assim:

ORG ASCII2HEXFAT
DB 'XXXXXXXXXXXXXXXXX'
ORG HEX2ASCIIFAT
DB 'XXXXXXXXXXXXXXXXXXXXX'

Para acessar os dados dentro do programa, use as referências ASCII2HEXFAT e HEX2ASCIIFAT.

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 lucflores » 20 Mar 2007 08:59

oK, Muito obrigado pela ajuda vou dar uma tentada.

Alguem por acaso teria alguma referencia sobre este assunto ou explemplo. ficaria muito agradecido...

Valeu...
lucflores
Nibble
 
Mensagens: 90
Registrado em: 16 Nov 2006 15:39


Voltar para 8051

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x