como mapear enderços de I/O em C?

Software e Hardware para linha x51

Moderadores: 51, guest2003, Renie, gpenga

Re: como mapear enderços de I/O em C?

Mensagempor Red Neck Guy » 19 Mai 2013 20:30

Meu, assim, pra acesso a memória externa no 8051 é utilizada a instrução MOVX. Aí tem os modos de endereçamento onde utiliza-se o DPTR para jogar o endereço do barramento ou então o conjunto Ri + P2. XDATA é uma diretiva, então ela não está contida em um cabeçalho, ela faz parte das palavras reservadas do compilador e serve para informar na hora da compilação que a variável em questão deve ser acessada com MOVX e não com MOV (que movimenta dados da RAM externa para o acumulador e tal.) O I/O mapeado em memória, como já falaram aqui, nada mais é do que implementar um decodificador de endereços que faz com que os sinais WR/RD sejam utilizados para acionador os sinais de controle de chips de I/O. Para o mcu, ele está utilizando MOVX e gerando o endereço e os sinais WR e RD. Qualquer livro de 8051, mais fuleiro que seja, tem lá um capitulo demonstrando isso. Um mapeamento clássico é jogar uns 74hc245 para entradas e 74hc574 para saídas. Tinha gente que utilizava o 8255, outros implementavam em um CPLD ou FPGA. A ST chegou a fabricar chipsets para 8051 que incluiam memória e alguns I/Os em um único chip.
Já vi fabricantes de CLP que utilizam 2 8051 com barramentos compartilhados deixando um dedicado pela varredura da porta da serial e barramento dos cartões e o outro rodando a aplicação, era uma da CPUs da série AL da altus...
Eu sempre sonhei em fazer um computador de 8 bits com o 8051, e sabe quando farei isso? Nunca! Pq é muito tempo investido pra retorno nenhum. É melhor estudar algo novo, mesmo por hobbiy.

A coisa mais tosca que já vi mapeada em um 8051?
Um conversor ADC com LM331 que tinha o sinal de saída feito uma AND com o clock do sistema, a saída da AND era jogada num 74hc393 que era jogado num 74hc574. A saída do contador era jogada no T0 do 8051. Então assim, tinha-se 24 bits de resolução! Não fui eu que projetei, só dava manutenção...
ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Re: como mapear enderços de I/O em C?

Mensagempor KrafT » 19 Mai 2013 21:27

renan-papaco escreveu:
a questão nem é profissional também.já q minha area e mais instalações eletricas prediais e residenciais. pq é impossível conseguir emprego na area de eletrônica sem a famosa experiência profissional. isso sem falar q vc é mandado direto pro RH sem preparo e nunca te empregam...tu pode fazer um 8085 rodar o windows 8 a 4MHz q eles não te contratam.
gosto da eletronica como hobby...pratica livre e descompromissada onde vc não é obrigado a evoluir e usar componentes caros ultra-delicados e touchs screens da vida...a menos q vc goste disso.. se bem q com 8051 tbm dá pra controlar um display touch screen...


Beleza, mas usa um 8051 que vc grava (e quem sabe depura) pela USB. Deve existir e vai facilitar tua vida, por exemplo, a Mouser lista 1928 tipos de mcu com o nucleo 8051.

Não vai me dizer que gosta de apagar EPROM com lâmpada UV.
"..."Come to the edge," he said. And so they came. And he pushed them. And they flew."― Guillaume Apollinaire
Avatar do usuário
KrafT
Dword
 
Mensagens: 2228
Registrado em: 11 Out 2006 14:15
Localização: Blumenau -SC

Re: como mapear enderços de I/O em C?

Mensagempor renan-papaco » 20 Mai 2013 10:45

Aquino escreveu:Meu, assim, pra acesso a memória externa no 8051 é utilizada a instrução MOVX. Aí tem os modos de endereçamento onde utiliza-se o DPTR para jogar o endereço do barramento ou então o conjunto Ri + P2. XDATA é uma diretiva, então ela não está contida em um cabeçalho, ela faz parte das palavras reservadas do compilador e serve para informar na hora da compilação que a variável em questão deve ser acessada com MOVX e não com MOV (que movimenta dados da RAM externa para o acumulador e tal.) O I/O mapeado em memória, como já falaram aqui, nada mais é do que implementar um decodificador de endereços que faz com que os sinais WR/RD sejam utilizados para acionador os sinais de controle de chips de I/O. Para o mcu, ele está utilizando MOVX e gerando o endereço e os sinais WR e RD. Qualquer livro de 8051, mais fuleiro que seja, tem lá um capitulo demonstrando isso. Um mapeamento clássico é jogar uns 74hc245 para entradas e 74hc574 para saídas. Tinha gente que utilizava o 8255, outros implementavam em um CPLD ou FPGA. A ST chegou a fabricar chipsets para 8051 que incluiam memória e alguns I/Os em um único chip.
Já vi fabricantes de CLP que utilizam 2 8051 com barramentos compartilhados deixando um dedicado pela varredura da porta da serial e barramento dos cartões e o outro rodando a aplicação, era uma da CPUs da série AL da altus...
Eu sempre sonhei em fazer um computador de 8 bits com o 8051, e sabe quando farei isso? Nunca! Pq é muito tempo investido pra retorno nenhum. É melhor estudar algo novo, mesmo por hobbiy.

A coisa mais tosca que já vi mapeada em um 8051?
Um conversor ADC com LM331 que tinha o sinal de saída feito uma AND com o clock do sistema, a saída da AND era jogada num 74hc393 que era jogado num 74hc574. A saída do contador era jogada no T0 do 8051. Então assim, tinha-se 24 bits de resolução! Não fui eu que projetei, só dava manutenção...


é aí que está... pra que estudar algo novo pra que se ja tenho tudo aki comigo? acho melhor eu comprar algum livro q me esclareça melhor.
pois no meu caso poder de processamento e conectividade moderna não é necessario por enquanto...e mesmo q fosse, eu poderia implementar eles mais tarde mas isso é irrelevante agora
Sabe quem mais programa um 8051 com ROM externa? MINHA MÃE! HOOOOOOOOOOOOOOOOOO
Avatar do usuário
renan-papaco
Byte
 
Mensagens: 292
Registrado em: 17 Jun 2012 15:56

Re: como mapear enderços de I/O em C?

Mensagempor renan-papaco » 20 Mai 2013 10:46

KrafT escreveu:
renan-papaco escreveu:
a questão nem é profissional também.já q minha area e mais instalações eletricas prediais e residenciais. pq é impossível conseguir emprego na area de eletrônica sem a famosa experiência profissional. isso sem falar q vc é mandado direto pro RH sem preparo e nunca te empregam...tu pode fazer um 8085 rodar o windows 8 a 4MHz q eles não te contratam.
gosto da eletronica como hobby...pratica livre e descompromissada onde vc não é obrigado a evoluir e usar componentes caros ultra-delicados e touchs screens da vida...a menos q vc goste disso.. se bem q com 8051 tbm dá pra controlar um display touch screen...


Beleza, mas usa um 8051 que vc grava (e quem sabe depura) pela USB. Deve existir e vai facilitar tua vida, por exemplo, a Mouser lista 1928 tipos de mcu com o nucleo 8051.

Não vai me dizer que gosta de apagar EPROM com lâmpada UV.

pra mim tanto faz... ja q eu posso gravar ambas. eu não sei pq vocês insistem na modernidade e na obsolescência, as eproms por exemplo são baratas e abundantes pra mim pq compro elas de sucata...pra eu apagar uma eprom eu apago logo varias delas de uma vez. ja q uma flash 28FXXX custa mais caro q o proprio microcontrolador.
Sabe quem mais programa um 8051 com ROM externa? MINHA MÃE! HOOOOOOOOOOOOOOOOOO
Avatar do usuário
renan-papaco
Byte
 
Mensagens: 292
Registrado em: 17 Jun 2012 15:56

Re: como mapear enderços de I/O em C?

Mensagempor andre_luis » 20 Mai 2013 12:13

renan-papaco escreveu:... pois existem hardwares diferentes para finalidades diferentes. o 8051 é barato e fácil de programar... ai tá... eu tenho um projeto q exige uma memoria em grande quantidade mas q a função seja relativamente basica... o 8051 seria perfeito...ainda mais usando mem externa...


Meu antigo patrão mantinha um produto carro-chefe da marca com a mesma CPU baseada no 8051.
E ainda, relutou quando tentei incluir um componente em SMD na placa, pois ele dizia que em PTH original, poderia ser montado em qualquer esquina.


+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: como mapear enderços de I/O em C?

Mensagempor renan-papaco » 24 Mai 2013 23:03

por enquanto eu vou desistir do mapeamento...tive uma ideia alternativa mas "meio tosca" q seria usar um sistema minimo com 8052(8032 tbm serve mas não há port P3...P3 vira barramento de controle.

P1 pode ser uma porta de saida enquanto q RXD e TXD se comunicam com outro microcontrolador da familia 8051 ou outro qualquer q possa fazer as entradas e saidas, enquanto q expando o port P1 com lathcs .
vou usar isso pra fazer um jogo eletrônico...um tiro ao alvo com multiplos sensores nas quais cada um marca uma pontuação diferente. não é uma boa ideia?
Sabe quem mais programa um 8051 com ROM externa? MINHA MÃE! HOOOOOOOOOOOOOOOOOO
Avatar do usuário
renan-papaco
Byte
 
Mensagens: 292
Registrado em: 17 Jun 2012 15:56

Anterior

Voltar para 8051

Quem está online

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

x