| Autor | Mensagem |
|---|
winit_a
Joined: 16 nov 2003 Lugares: 17
| 15 fev 2004 5:42 Como Criar UART com Software (não utilizado SBUF) em 8051 | | | tags: UART 8051 c |
|
| Como Criar UART com software? Meu projeto Used 3 UART (normal tem 1 UART com hardware P3.0 e P3.1)
8051 MCU@11.0592MHz Como Criar UART usado P2 ou P1 para Interface RS-232 |
|
| Voltar ao topo | |
 |
pisoiu
Joined: 31 dez 2002 Lugares: 894 Ajudado: 24 Localização: Roménia
| 15 fev 2004 11:58 Re: Como Criar UART com Software (não utilizado SBUF) em 8051 | | | tags: UART execução para 8051 em c Xon xoff 8051 UART 8051 c |
|
| Oi, Minha opinião: é maldito duro. Você terá que fazê-lo utilizando interrupções, mas 8051 é um controlador relativamente lento, o seu desempenho em 1mips estadias inferiores 11,0592 mhz relógio para clássico versões 8051 (1instruction ciclo = 12 relógio ciclo). Mais do que uma porta serial implementados em software irá comer quase todos os processadores tempo, especialmente se você quiser ir até 115200bps com os portos, ou se você deseja executar todos os possíveis parâmetros (6/7/8 dados selecteble bits, 1 / 2 stop bits, paridade ímpar / sequer / marca / espaço / nenhum, controlo de fluxo xon-xoff/hard/none selecionável). Minha sugestão é usar uma arquitetura modificada a partir de 8051 cipreste, ou para usar um microcontrolador scenix (www.ubicom.com). Para scenix controlador posso fornecer código para 8 uarts simultaneamente. Isso se você quiser um software execução. Se deseja Yau hardware, você pode usar max3100 (máxima).
Melhor, |
|
| Voltar ao topo | |
 |
Ajay
Joined: 29 fev 2004 Lugares: 31
| 01 mar 2004 0:10 Re: Como Criar UART com Software (não utilizado SBUF) em 8051 | | |
|
| Você poderia criar uma UART (para além de utilizar o SBUF) usando um temporizador dedicado e escrever muito rápido código para rodar pouco. Sobre a próxima lado (RxD), você deve usar uma interrupção alfinete. Quando chega a interromper, iniciar o seu tempo e leia o pino estado em transportar, girar e criar sua próxima bytes. Funciona bem até 9600 Baud (eu tenho usado isso).
No entanto, a criação de mais duas ao mesmo tempo? Esqueça. Mesmo se você usar dois dedicados temporizadores, interromper as rotinas tornam-se tão grande que você vai perder bits.
If you are looking for slow UARTs (1200 Baud or slower), then this technique works for upto 2 UART's. Tenha em mente que você vai desistir de todos os três temporizadores (utilizado para uma taxa baud gen para SBUF, uma porta para a 1 e um calendário para a porta 2), bem como ambas as interrupções.
Portanto, melhor é usar um desenho ARM chip com dois UART's (tenho 2 criados adicionais UARTs em 19200 Baud com um braço) ou usar o Rabbit controlador ou alguns tal coisa.
Ajay |
|
| Voltar ao topo | |
 |
beuch
Joined: 06 jun 2001 Lugares: 65 Local: França
| 03 mar 2004 14:45 Re: Como Criar UART com Software (não utilizado SBUF) em 8051 | | |
|
| Oi,
ter um olhar para o ficheiro anexo da Philips web AN.
AN446
tchau
|
|
| Voltar ao topo | |
 |
crazytnt
Joined: 02 fev 2004 Posts: 8
| 03 mar 2004 17:43 Re: Como Criar UART com Software (não utilizado SBUF) em 8051 | | |
|
| É muito difícil. Sugerir utilizando hardware. |
|
| Voltar ao topo | |
 |
J_expoler2
Joined: 10 de Maio de 2003 Lugares: 179 Ajudado: 19
| 03 mar 2004 18:00 Re: Como Criar UART com Software (não utilizado SBUF) em 8051 | | |
|
| Oi Tenho uma ideia UART mas apenas enviar dados usando temporizador 0 bit T232 como TxD MOV TMOD, # 22h MOV TH0, # 70H MOV TL0, # 70H SETB EA SETB ET0 SETB TR1 ; ; ; ; função enviar dados: CLR T232; START BIT SETB TR0 MOV R7, # 8
TX_LOOP: Um RRC JNB TF0, $ MOVIMENTOS T232, C CLR TF0 DJNZ R7, TX_LOOP JNB TF0, $ SETB T232; STOP BIT CLR TF0 JNB TF0, $ RET que talvez ajude u BR. |
|
| Voltar ao topo | |
 |
fireplus
Joined: 31 out 2003 Lugares: 195 Ajudado: 5
| 04 mar 2004 3:29 Re: Como Criar UART com Software (não utilizado SBUF) em 8051 | | |
|
| tente isso
[hr: 5c6e3c7296] Fogo no Fios: SM2:
|
|
| Voltar ao topo | |
 |
Ajay
Joined: 29 fev 2004 Lugares: 31
| 08 mar 2004 12:28 Re: Como Criar UART com Software (não utilizado SBUF) em 8051 | | |
|
| | J_expoler2 escreveu: | Oi Tenho uma ideia UART mas apenas enviar dados usando temporizador 0 bit T232 como TxD MOV TMOD, # 22h MOV TH0, # 70H MOV TL0, # 70H SETB EA SETB ET0 SETB TR1 ; ; ; ; função enviar dados: CLR T232; START BIT SETB TR0 MOV R7, # 8
TX_LOOP: Um RRC JNB TF0, $ MOVIMENTOS T232, C CLR TF0 DJNZ R7, TX_LOOP JNB TF0, $ SETB T232; STOP BIT CLR TF0 JNB TF0, $ RET que talvez ajude u BR. |
Isso só é bom para a transmissão. Problema surge quando você tenta receber tão bem. Primeiro de tudo, este método nunca vai trabalhar para full duplex operação a menos que você use dois DIFERENTES Temporizadores.
Além disso, para receber, você precisará usar uma interrupção de hardware que precisa iniciar o temporizador, no momento certo e, em seguida, irá ajudar a transferir os dados. Mais uma vez, este método só é bom como uma meia duplex comunicação.
Outro complexidade vem do fato de que a interrupção rotinas se tornam longas e vai causar problemas por falta bits. Tenha em mente que o erro vai acumulando ao longo de um período de tempo!
A melhor maneira é usar um chip que tem mais portas seriais (ARM, uPSD de St etc)
Ajay |
|
| Voltar ao topo | |
 |