Página 1 de 1
Problemas no portE do 16F877A

Enviado:
27 Dez 2006 14:29
por lpagano
Pessoal,
Estou fazendo um programa em C (via CCS) para usar o portE como saída digital do 16F877A, mas não há meio de fazer sair os 5 volts no RE0 e RE1. Quando fiz o teste no RA0 e RA1 funcionou sem problemas.
Já declarei no programa que todas os pinos dos ports A e E são digitais, mas mesmo assim não funcionou. Veja abaixo como fiz as declarações:
setup_adc(adc_off);
setup_adc_ports(no_analogs);
set_tris_b(0b11110000);
set_tris_c(0b11111000);
set_tris_d(0b11110000);
set_tris_e(0b00000000);
Nota: também testei o trisE como sendo declarado: set_tris_e(0b000) pois o portE tem somente 3 portas nesse PIC.
Alguém saberia me dizer se precisa fazer mais alguma coisa?
Valeu!
Re: Problemas no portE do 16F877A

Enviado:
27 Dez 2006 15:06
por andre_luis
confere no datasheet se o port E pode ser open colector

Enviado:
27 Dez 2006 17:57
por lpagano
Cara, procurei no datasheet mas não encontrei informação referente à open collector no PORTE.
Valeu!

Enviado:
28 Dez 2006 09:01
por Hermecildes
Tente configurar os registros ADCON1 e 0 diretamente, talves um pequeno programa em assembly para testar as portas, se funcionar, o arquivo .INC do compilador pode estar alterado.

Enviado:
28 Dez 2006 09:40
por microeletronica
Obrserve que os REs acumulam algumas funcoes...:
RE0/RD/AN5
RE1/WR/AN6
RE2/CS/AN7
Observe que o registrador "REGISTER 4-1: TRISE REGISTER (ADDRESS 89h)"
bit 4 PSPMODE: Parallel Slave Port Mode Select bit
1 = PORTD functions in Parallel Slave Port mode
0 = PORTD functions in general purpose I/O mode
Vc tem obrigatoriamente colocar o TRISE bit 4 em 0!
bit 0, 1 e 2 em 0 -> para Output.
------
Coloque "REGISTER 11-2: ADCON1 REGISTER (ADDRESS 9Fh)"
bit 3-0 PCFG3:PCFG0: A/D Port Configuration Control bits
em 0110
--------
Em "REGISTER 11-1: ADCON0 REGISTER (ADDRESS 1Fh)"
coloque 0 em bit 0 - ADON: A/D On bit
Boa sorte, e tomeara que funcione.
Re: Problemas no portE do 16F877A

Enviado:
28 Dez 2006 09:45
por andre_luis
Só tem uma explicacao:
Ou voce está fazendo include errado, ou o resto do programa está acessando essa porta .
+++

Enviado:
28 Dez 2006 10:12
por microeletronica
é verdade...
Tenta colocar os Regiostradores na mao.
[]/s/;

Enviado:
28 Dez 2006 12:02
por lpagano
Valeu a força pessoal!!!
Vou tentar botar essas declaarações no assembler para ver se dá certo. Mas o resto do programa não acessa a porta. Inclusive eu medi os pinos do portE com voltímetro e está tudo em LOW.
Depois eu coloco os resultados aqui.
Valeu!

Enviado:
28 Dez 2006 12:27
por andre_luis
Uma dica besta....coloca 0xFF no port E.
Voce tentou em outro microcontrolador ? Pode ser que ESSE aí esteja queimado.
+++

Enviado:
29 Dez 2006 16:30
por lpagano
Seguinte, consegui fazer funcionar da seguinte maneira: botei 2 leds nos pinos E0 e E1. Eles acenderam com o comando output(pin_e0) e output(pin_e1).
Depois eu implementei no meu código o comando acima ao invés de output_e( ) e funcionou. Acho que é porque o output_E( ) lança uma palavra de 8 bits e no portE só tem e pinos (bits).
É isso!!!
Valeu!

Enviado:
29 Dez 2006 19:49
por microeletronica
Que bom!!!
