Página 1 de 1

problema pra escrever no portD do pic 16F877A

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 02 Abr 2014 10:40
por tcpipchip
:shock:!!!!!!!!!!!!!!!!

Re: problema pra escrever no portD do pic 16F877A

MensagemEnviado: 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

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