Haz una pregunta
  Foros de Electrónica » Principiantes » Cuestiones Elementales de Electrónica
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

04/02/2012 #1


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
05/02/2012 #2
Moderador

Avatar de D@rkbytes

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.
05/02/2012 #3


Muchas graciassssss!!! lo estaba necesitando. buscare el otro tema de las 8 salidas PWM. nuevamente gracias y buen dìa Darkbytes
05/02/2012 #4


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?
05/02/2012 #5
Moderador

Avatar de D@rkbytes

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), 505 visitas)
05/02/2012 #6


muchas graciassss. ya entendii como es el asunto. saludosss
06/02/2012 #7


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
06/02/2012 #8


ok. ya funciona. es mucho mas facil con la funcion HPWM.

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

saludoss
06/02/2012 #9
Moderador

Avatar de D@rkbytes

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.
04/09/2012 #10


TengoProblemas
HOla Darkbytes disculpa la molestia pero baje el comprimido que publicaste y encontre un programa en asm por casualidad no tendras alguno en ccs que explique como usar el PWM si no es mucha molestia.
muchas gracias
05/09/2012 #11
Moderador

Avatar de D@rkbytes

tudiosrafael dijo: Ver Mensaje
HOla Darkbytes disculpa la molestia pero baje el comprimido que publicaste y encontre un programa en asm por casualidad no tendras alguno en ccs que explique como usar el PWM si no es mucha molestia.
muchas gracias
El archivo en ensamblador que viene dentro del archivo, es el que se genera cuando se manda compilar el programa original que está escrito en PICBasic del Proton IDE con extensión *.bas.

En cuanto a programas sobre PWM escritos en C para PIC hay varios en el foro. Usa el Buscador


Suerte.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Cuestiones Elementales de Electrónica

Deseas aprender electrónica y necesitas ayuda para comenzar? Resuelve tus dudas en esta sección.

Cerrar
Foros de Electrónica » Principiantes » Cuestiones Elementales de Electrónica

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.