Haz una pregunta
  Foros de Electrónica > Principiantes > Cuestiones Elementales de Electrónica

Discusiones similares

04-feb-2012 #1
jxanderar


Ubicación: colombia
Mensajes: 11
PWM PIC 16f877a
buenas tardes. soy nuevo en el tema de los microcontroladores. como tarea tengo hacer un PWM con un PIC 16f877a con el protonIDE. he tratado modificando los registros ccp1con, t2con, ccpr1l y pr2. pero no me funciona y ya no entiendo bienn que hacer con el CCPR1L y el PR2 que tienen que ver con el ciclo de dureza. podrían darme un ejemplo simple de un PWM en el PROTON para basarme y hacer mi trabajo? me creo capaz de manejar el conversor A/D del micro para variar el ciclo de dureza una vez tenga un PWM que funcione

agradezco su respuesta
Citar
04-feb-2012 #2
Darkbytes

<phrase 1=

Ubicación: Dentro del Código
Mensajes: 529
jxanderar dijo: Ver Mensaje
buenas tardes. soy nuevo en el tema de los microcontroladores. como tarea tengo hacer un PWM con un PIC 16f877a con el protonIDE. he tratado modificando los registros ccp1con, t2con, ccpr1l y pr2. pero no me funciona y ya no entiendo bienn que hacer con el CCPR1L y el PR2 que tienen que ver con el ciclo de dureza. podrían darme un ejemplo simple de un PWM en el PROTON para basarme y hacer mi trabajo? me creo capaz de manejar el conversor A/D del micro para variar el ciclo de dureza una vez tenga un PWM que funcione

agradezco su respuesta
Saludos.
Este ejemplo es del mismo programa Proton Compiler.
Código:
' Demonstrate Hardware PWM
' Output a 1KHz signal with duty cycle sweeping from 20% to 80% once per second

    Device 16F877A
    Declare Xtal 4

    Dim Duty As Word        ' Duty cycle value (CCPR1L:CCP1CON<5:4>)

    TRISC.2 = 0             ' Set PORTC.2 (CCP1) to output
    CCP1CON = %00001100     ' Set CCP1 to PWM
    T2CON = %00000101       ' Turn on Timer2, Prescale=4
    PR2 = 249               ' Set PR2 to get 1KHz out
    Duty = 200              ' Set duty cycle to 20%
Loop:
    CCP1CON.4 = Duty.0      ' Store duty to registers as
    CCP1CON.5 = Duty.1      ' a 10-bit word
    CCPR1L = Duty >> 2
    Duty = Duty + 10        ' Increase duty cycle
    DelayMS 17              ' Delayms 1/60 of second
    If Duty < 800 Then Loop ' Do it again unless 80% duty cycle
    Duty = 200              ' Reset to 20% duty cycle
    GoTo Loop               ' Do it forever
Analizalo y pruebalo. Si requieres de mas información usa el buscador del foro.
Hay un post en donde lograron tener hasta 8 salidas PWM independientes
con un PIC16F628A y esta escrito con Proton.
Citar
05-feb-2012 #3
jxanderar


Ubicación: colombia
Mensajes: 11
Muchas graciassssss!!! lo estaba necesitando. buscare el otro tema de las 8 salidas PWM. nuevamente gracias y buen dìa Darkbytes
Citar
05-feb-2012 #4
jxanderar


Ubicación: colombia
Mensajes: 11
lo simulo en Proteus y no funciona no da la señal cuadrada. solo tengo el pic configurado a la misma frecuencia de reloj del programa (4MHZ) , el osciloscopio y el PIN MCLR del PIC a power con la patita CCP1 al oscilocopio. ¿necesita algo mas para simular?
Citar
05-feb-2012 #5
Darkbytes

<phrase 1=

Ubicación: Dentro del Código
Mensajes: 529
jxanderar dijo: Ver Mensaje
lo simulo en Proteus y no funciona no da la señal cuadrada. solo tengo el pic configurado a la misma frecuencia de reloj del programa (4MHZ) , el osciloscopio y el PIN MCLR del PIC a power con la patita CCP1 al oscilocopio. ¿necesita algo mas para simular?
Saludos.
Agregue la configuración de fuses y otros parametros más.
Adjunto el programa compilado funcionando y su simulación.

Suerte y hasta luego.
Archivos Adjuntos
Tipo de Archivo: rar HPWM.rar (26,5 KB (Kilobytes), 61 visitas)

Última edición por Darkbytes; 05-feb-2012 a las 12:22
Citar
05-feb-2012 #6
jxanderar


Ubicación: colombia
Mensajes: 11
muchas graciassss. ya entendii como es el asunto. saludosss
Citar
06-feb-2012 #7
jxanderar


Ubicación: colombia
Mensajes: 11
descargue los archivos y simule. sigue sin dar la onda cuadrada. igual gracias por su ayuda. cuando encuentre el error te escribo diciendo cual fue. saludos
Citar
06-feb-2012 #8
jxanderar


Ubicación: colombia
Mensajes: 11
ok. ya funciona. es mucho mas facil con la funcion HPWM.

HPWM (pin de salida, dureza(entre 0-254), frecuencia.

saludoss
Citar
06-feb-2012 #9
Darkbytes

<phrase 1=

Ubicación: Dentro del Código
Mensajes: 529
jxanderar dijo: Ver Mensaje
ok. ya funciona. es mucho mas facil con la funcion HPWM.

HPWM (pin de salida, dureza(entre 0-254), frecuencia.

saludoss
Ok. Pues como tu querias un ejemplo usando esos registros, eso fue lo que mande.
HPWM sirve para generar PWM solo en los PIC que tienen puertos para esa función. (Hardware)
La Instrucción PWM lo genera por software y se puede usar cualquier PIC y cualquier pin.
Suerte y hasta luego.
Citar
Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.0 ©2011, Crawlability, Inc.