Ir ao conteúdo
  • Cadastre-se
lagarios

Problema com uso de PWM para 16F877A Proteus em CCS

Recommended Posts

Fala galera, 

 

Eu estou tendo problemas na hora de usar o PWM de um pic 16f877a no Proteus.

 

Eu uso muito o Proteus, é um programa maravilhoso e que ja me ajudou muito, mas agora estou tendo problemas para usar o PWM do PIC e não sei se é problema do código ou algum problema no Proteus.

 

Eu já mexi varias vezes no código, já peguei código pronto na internet e nada funcionou.

 

Vou mandar algumas imagens do código e do circuito no proteus, se alguém puder me ajudar fico grato.

 

Pelo que eu vi sobre PWM, não era para ser tão complicado assim usar, é bem simples, mas...

 

#include "main.h"
#include "mod_lcd.c"
 
void main()
{
   setup_adc_ports(A_ANALOG);
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4);
   setup_timer_1(T1_DISABLED);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   setup_timer_2 (T2_DIV_BY_4,249,1);
   setup_ccp1(ccp_pwm);
   
   delay_us(10);
   lcd_ini(); // Inicializa o LCD
   lcd_escreve ('\f'); // limpa o display  
   
   int16 Val1;                      
   float Resis1;
   
   while (true)   
   {
      set_adc_channel(1);
      delay_us(50);
      Val1 = read_adc();
      Resis1 = Val1*1.0;
      lcd_pos_xy (1,1);
      printf(lcd_escreve,"%f", Resis1);
      
      delay_ms(1);
      
      set_pwm1_duty(Resis1);
   }
}
 
e o main.h é:
 
#include <16F877A.h>
#device adc=8
 
#FUSES NOWDT    
#FUSES HS      
#FUSES PUT     
#FUSES NOPROTECT 
#FUSES NODEBUG  
#FUSES BROWNOUT
#FUSES NOLVP     
#FUSES NOCPD     
#FUSES NOWRT     
 
#use delay(clock=12000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=5)
 
e vou mandar umas imagens do circuito.
Sem%20tiacutetulo_zps5th5lx7p.png

 

Sem%20tiacutetulo2_zpssegfrcar.png

 

Mexo no potenciometro mas não tem nada na saída ccp1

 

 

Minha versão do Proteus é a 7.6 SP0

 

Não estou vendo nenhum erro tanto no código como no circuito.

 

Agradeço desde já quem puder ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Coisas pra mim estranhas
float Resis1; // float definido depois de executar funções
Resis1 = Val1*1.0; //sem sentido

set_pwm1_duty(Resis1); //o argumento desta função pode ser float? Confira no help

Tente

-setar o pwm com valor constante tipo 1/4, 1/2 pra ver o resultado

-usar unsigned int em tudo

-verificar o TRIS do pino pwm

 

ccs&eu=FALSE;

Compartilhar este post


Link para o post
Compartilhar em outros sites

o float definido depois de executar função nao tem nada a ver

o resis1 = val1*1.0 é para aparecer no display, pois essa biblioteca que peguei do display tem alguns erros.

eu vi varios códigos com o argumento sendo float, mas já testei com int e nada

 

ja tentei setar o valor com um valor constante e nada.

 

 

não sei se essa versao do Proteus tem algum bug, vi alguma coisa sobre isso na net.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Organize seu problema.

Retire do seu código,tudo que estiver relacionado ao LCD e teste apenas o PWM.

Resolvido este problema,organize as rotinas do LCD.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui, o problema é realmente o Proteus versão 7.06. Essa versão não funciona o PWM, não sei se é para qualquer pic ou só para o 16f877a. Vi na internet uma outra pessoa falando sobre esse problema no proteus versão 7.06, e agora acabei de confirmar, instalei a 7.08 e esta funcionando perfeitamente agora. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×