Página 1 de 1
problema pra escrever no portD do pic 16F877A

Enviado:
01 Abr 2014 11:45
por Rickmascar
estou tentando mover um motor de passo, mas não estou nem conseguindo dar sinal no portD do pic, abaixo esta o codigo que eu usei.
- Código: Selecionar todos
#define SAIDA1 RD0_BIT
#define SAIDA2 RD1_BIT
#define SAIDA3 RD2_BIT
#define SAIDA4 RD3_BIT
void main()
{
ADCON0 = 0;
//ADCON1 = 0x07; //desativa a porta analogica
CMCON = 0x07;
// PCON = 0x13;
TRISD = 0x00; //PORTD configurado como saida
//TRISE = 0x00;
TRISB = 0x00;
PORTD = 0;
PORTB = 1;
while (1){
SAIDA1 = 1;
SAIDA2 = 1;
SAIDA3 = 1;
SAIDA4 = 0;
delay_ms(500);
SAIDA1 = 0;
SAIDA2 = 1;
SAIDA3 = 0;
SAIDA4 = 0;
delay_ms(500);
SAIDA1 = 0;
SAIDA2 = 0;
SAIDA3 = 1;
SAIDA4 = 0;
delay_ms(500);
SAIDA1 = 0;
SAIDA2 = 0;
SAIDA3 = 0;
SAIDA4 = 1;
delay_ms(500);
}
}
preciso de ajuda urgente, agradecido
Re: problema pra escrever no portD do pic 16F877A

Enviado:
01 Abr 2014 14:08
por ze2
ainda bem que vc falou que é urgente senão nem ia responder...
a sequencia está esquisita. além dela: confira as ligações, se o portd trabalha e está habilitado como i/o, não é coletor aberto, se voce não o está sobrecarregando e o tradicional etc.
Re: problema pra escrever no portD do pic 16F877A

Enviado:
01 Abr 2014 14:21
por Rickmascar
Já troquei de PIC e também de port, mas mesmo assim a bagaça não quer funcionar... como assim a sequencia esta esquisita ?
Re: problema pra escrever no portD do pic 16F877A

Enviado:
01 Abr 2014 14:30
por xultz
Qual compilador você está usando?
Sabe dizer se RD0_BIT aponta para o latch de saída? Isto é muito importante.
Re: problema pra escrever no portD do pic 16F877A

Enviado:
01 Abr 2014 15:05
por Rickmascar
estou usando o mikro C Pro. Pelo datasheet da microchip ele tem duas funções PORD e TRISD Registradores... que esta na pag 48 desse link
Re: problema pra escrever no portD do pic 16F877A

Enviado:
01 Abr 2014 15:14
por ze2
alguns etc...
voce gravou o mc antes de ligar? (rs) voce alimentou ele direitinho? e o pisca led? queimou esta etapa? e na simulação funciona? e qual programador? vc está carregando com o tipo certo de arquivo? bin ou hex? e o pino reset esta correto? por acaso não esqueceu dele né? R pro + e C pro gnd. o clock está operante? fusíveis coerentes com o circuito de clock?
a sequencia de acionamento de motor de passo sua parece não estar correta. mas se nem aciona nada depois vc vai notar isso. volte ao pisca led temporariamente
Re: problema pra escrever no portD do pic 16F877A

Enviado:
01 Abr 2014 15:42
por tcpipchip
Faz o seguinte, usar PORTD.Fx = y
Onde x é o bit de 0 a 7.
Abraços
TCPIPCHIP
Re: problema pra escrever no portD do pic 16F877A

Enviado:
01 Abr 2014 19:45
por tcpipchip
Simulei no PROTEUS e o programa esta "outputing" os dados no PORTD
Re: problema pra escrever no portD do pic 16F877A

Enviado:
02 Abr 2014 10:07
por Rickmascar
Consegui resolver o problema, era que eu estava chamando errado a saída do port. era para utilizar PORTD.B0 e eu estava utilizando RD0_BIT.
esta a baixo o código usado funcionado.
- Código: Selecionar todos
void main()
{
ADCON0 = 0;
CMCON = 0x07;
TRISD = 0x00; //PORTD configurado como saida
PORTD = 0;
while (1){
PORTD.B0 = 1;
PORTD.B1 = 0;
PORTD.B2 = 0;
PORTD.B3 = 0;
delay_us(6500);
PORTD.B0 = 1;
PORTD.B1 = 1;
PORTD.B2 = 0;
PORTD.B3 = 0;
delay_us(6500);
PORTD.B0 = 0;
PORTD.B1 = 0;
PORTD.B2 = 0;
PORTD.B3 = 1;
delay_us(6500);
PORTD.B0 = 1;
PORTD.B1 = 0;
PORTD.B2 = 0;
PORTD.B3 = 1;
delay_us(6500);
PORTD.B0 = 0;
PORTD.B1 = 0;
PORTD.B2 = 1;
PORTD.B3 = 0;
delay_us(6500);
PORTD.B0 = 0;
PORTD.B1 = 0;
PORTD.B2 = 1;
PORTD.B3 = 1;
delay_us(6500);
PORTD.B0 = 0;
PORTD.B1 = 1;
PORTD.B2 = 0;
PORTD.B3 = 0;
delay_us(6500);
PORTD.B0 = 0;
PORTD.B1 = 1;
PORTD.B2 = 1;
PORTD.B3 = 0;
delay_us(6500);
}
}
Re: problema pra escrever no portD do pic 16F877A

Enviado:
02 Abr 2014 10:40
por tcpipchip

!!!!!!!!!!!!!!!!
Re: problema pra escrever no portD do pic 16F877A

Enviado:
02 Abr 2014 12:13
por ze2
tcpipchip escreveu::shock:!!!!!!!!!!!!!!!!
2!!
(de nada...)
ok. funcionou... mas nativamente, apenas pro mikroc
abç
Re: problema pra escrever no portD do pic 16F877A

Enviado:
03 Abr 2014 08:57
por Rickmascar
obrigado a todos por terem ajudado
