Autor Tema: Proteus - error de pwm y tris  (Leído 2611 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Proteus - error de pwm y tris
« en: 26 de Marzo de 2006, 20:42:00 »
Hola

Estaba haciendo un programa en el 16f877a y usé el código siguiente...

--------------------------------

#include "16f877a.h"
#use delay(clock=4000000) //4MHz
#fuses hs, nowdt,noput,nobrownout,nolvp,noprotect

#use fast_io (b)
#use fast_io (c)

#BYTE trisc = 0x87 //para cambiar estado TRISC

int16 duty_time;


void main(void)
{

   duty_time=0x0034; //esto nunca cambia (13us)
   set_tris_c(0x00); //todo salida
   set_tris_b(0x00); //todo salida

   setup_timer_2(T2_DIV_BY_1,25,1);
      //PR2=25
   set_pwm1_duty(duty_time);
      //13us

   setup_ccp1(CCP_PWM); //activa PWM

   while(1)
   {
   delay_ms(1000); //espera 1s
   set_tris_c(trisc|0x04); //pone a 1 bit 3, apaga pwm
   delay_ms(1000); //espera otro 1s
   set_tris_c(trisc&0xfb); //pone a 0 bit 3, prende pwm
   }
}

-----------------------------------------

Este código funciona sobre el f877a físicamente bien. Es un PWM a 38kHz que está trabajando un segundo encendido y un segundo apagado. Esto lo logro habilitando o deshabilitando la salida RC2 desde el tris.

En proteus conecto un osciloscopio a CCP1 y lo pongo a trabajar. Es ahí donde surge el problema, no prende ni apaga cada segundo. Parece que proteus tiene una falla ya que no configura la terminal CCP1 como entrada y por lo tanto no deshabilita el PWM.

¿A alguien le sucede lo mismo? loco