Ir ao conteúdo
  • Cadastre-se

lagarios

Membro Júnior
  • Posts

    19
  • Cadastrado em

  • Última visita

posts postados por lagarios

  1. 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.

  2. 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.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!