Autor Tema: controlar voltage salida del pin_X del PIC (0 a 5 Volt )  (Leído 9559 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: controlar voltage salida del pin_X del PIC (0 a 5 Volt )
« Respuesta #15 en: 19 de Junio de 2009, 03:12:43 »
Las configuraciones deben ir fuera del while:

Código: C
  1. void main(void)
  2. {
  3. int16 a=312,b=312;// para duty cycle del 50%
  4. lcd_init(); //inicializa lcd
  5. setup_ccp1(CCP_PWM); //ccp1 modo PWM
  6. setup_ccp2(CCP_PWM); //ccp2 modo PWM
  7.  
  8. setup_timer_2(T2_DIV_BY_16, 155, 1);
  9.  
  10. while(TRUE){
  11. .
  12. .
  13. .
  14. }
No contesto mensajes privados, las consultas en el foro

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
Re: controlar voltage salida del pin_X del PIC (0 a 5 Volt )
« Respuesta #16 en: 19 de Junio de 2009, 16:24:25 »
hola suky te comento que ya me esta funcionando el PWM, pero ahora tengo el siguiente dilema. al presionar el boton de incremento (a++) varia al ancho de pulso pero solo un poco, osea lo varia pero llega a un punto que se queda estancado y regresa x veses mas atras y no me deja seguir avansando con mi PWM, bueno te dej oel codigo otra vez y te mando el proteus = saludos y muchisimas gracias por la gran ayuda de verdad gracias

Código: [Seleccionar]
#include <16F877a.h>
#device adc=10
#FUSES NOWDT, HS, NOPUT, NOPROTECT, BROWNOUT, NOLVP, NOCPD, NOWRT
#use delay (clock=20000000) //Fosc=20Mhz
#define use_portb_lcd TRUE //definir portb lcd
#include<lcd.c> //libreria manejo lcd


///PROGRAMA
void main(void)
{
int16 a=0,b=0;// para duty cycle del 50%

lcd_init(); //inicializa lcd
setup_ccp1(CCP_PWM); //ccp1 modo PWM
setup_ccp2(CCP_PWM); //ccp2 modo PWM
setup_timer_2(T2_DIV_BY_16, 155, 1);

while(TRUE){

if(!input(PIN_A1)){                  //¿se ha pulsado el boton?
do{                           //SI -> eliminar...           
}while(!input(PIN_A1));            //...rebotes del boton
         a--;
}

if(!input(PIN_A0)){                  //¿se ha pulsado el boton?
do{                           //SI -> eliminar...           
}while(!input(PIN_A0));            //...rebotes del boton
         a++; 
}

set_pwm1_duty(a);      // Ciclo de trabajo al 100% a=625
set_pwm2_duty(b);    // Ciclo de trabajo al 100% a=625

}
}

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: controlar voltage salida del pin_X del PIC (0 a 5 Volt )
« Respuesta #17 en: 19 de Junio de 2009, 16:57:18 »
Lo que pasa que al incrementa de a uno, estas modificando el CT en 0.16%, entonces si lo quieres hacer mas rápido debes sumarle 10 o más...
No contesto mensajes privados, las consultas en el foro

Desconectado japifer_22

  • PIC18
  • ****
  • Mensajes: 405
Re: controlar voltage salida del pin_X del PIC (0 a 5 Volt )
« Respuesta #18 en: 19 de Junio de 2009, 17:33:56 »
bucha maestro muchas gracias por todo me esta resultando asta el momento bn lo que estoy asiendo espero que pronto tener buenas notisiar y que te enurgullescas de tu disipulo por que eres mi maestro suky.

bueno ahora tengo la siguiente duda XD
para activar 2 entradas analogas como lo ago en la siguente linea
 setup_adc_ports(AN0); // solo una entrada analoga activada
?? saludos

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: controlar voltage salida del pin_X del PIC (0 a 5 Volt )
« Respuesta #19 en: 19 de Junio de 2009, 18:04:03 »
bucha maestro muchas gracias por todo me esta resultando asta el momento bn lo que estoy asiendo espero que pronto tener buenas notisiar y que te enurgullescas de tu disipulo por que eres mi maestro suky.
:D  :D  :D
bueno ahora tengo la siguiente duda XD
para activar 2 entradas analogas como lo ago en la siguente linea
 setup_adc_ports(AN0); // solo una entrada analoga activada
?? saludos

Para ver las distintas configuraciones, pégale una miradita al archivo 16f877a.h
Código: C
  1. // Constants used in SETUP_ADC_PORTS() are:
  2. #define NO_ANALOGS                           7    // None
  3. #define ALL_ANALOG                           0    // A0 A1 A2 A3 A5 E0 E1 E2
  4. #define AN0_AN1_AN2_AN4_AN5_AN6_AN7_VSS_VREF 1    // A0 A1 A2 A5 E0 E1 E2 VRefh=A3    
  5. #define AN0_AN1_AN2_AN3_AN4                  2    // A0 A1 A2 A3 A5          
  6. #define AN0_AN1_AN2_AN4_VSS_VREF             3    // A0 A1 A2 A4 VRefh=A3              
  7. #define AN0_AN1_AN3                          4    // A0 A1 A3
  8. #define AN0_AN1_VSS_VREF                     5    // A0 A1 VRefh=A3
  9. #define AN0_AN1_AN4_AN5_AN6_AN7_VREF_VREF 0x08    // A0 A1 A5 E0 E1 E2 VRefh=A3 VRefl=A2    
  10. #define AN0_AN1_AN2_AN3_AN4_AN5           0x09    // A0 A1 A2 A3 A5 E0        
  11. #define AN0_AN1_AN2_AN4_AN5_VSS_VREF      0x0A    // A0 A1 A2 A5 E0 VRefh=A3          
  12. #define AN0_AN1_AN4_AN5_VREF_VREF         0x0B    // A0 A1 A5 E0 VRefh=A3 VRefl=A2          
  13. #define AN0_AN1_AN4_VREF_VREF             0x0C    // A0 A1 A4 VRefh=A3 VRefl=A2              
  14. #define AN0_AN1_VREF_VREF                 0x0D    // A0 A1 VRefh=A3 VRefl=A2
  15. #define AN0                               0x0E    // A0
  16. #define AN0_VREF_VREF                     0x0F    // A0 VRefh=A3 VRefl=A2

Y si no entiendes porque es así, compruébalo con el datasheet del PIC.
No contesto mensajes privados, las consultas en el foro