TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: diego_castano00 en 26 de Noviembre de 2005, 10:34:00

Título: AYUDA CON PWM PIC16F877
Publicado por: diego_castano00 en 26 de Noviembre de 2005, 10:34:00
RebotadoHOLA

ESTOY TRABAJANDO EN UN PROYECTO Y ESTOY REALMENTE DESCONCERTADO CON  EL FUNCIONAMIENTO DE LOS MODULOS CCP PARA EL CONTROL DE PWM Y EL TMR2
ALGUIEN TIENE ALGUNA RUTINITA SENCILLA EN LO POSIBLE EXPLICADA, QUE FUNCIONE PARA GENERAR ALGUNA SEÑAL PWM (CON XT DE 4Mhz),

YO TENGO INFORMACION AL RESPECTO PERO ESTOY !PERDIDO EN EL TEMA!
AHHH TRABAJO CON EL PIC SIMULATOR IDE 5.11
REGALO EL CRACK AL QUE ME PUEDA AYUDAR CONCRETAMENTE

GRACIAS
Título: RE: AYUDA CON PWM PIC16F877
Publicado por: carlyvalente en 26 de Noviembre de 2005, 10:43:00
Este programa en asembler es para el 876, pero si cambias las normativas a 877 creo que casi no debes cambiar mas nada, por las dudas controla que el tris esté correcto con respecto al tuyo.
Es un programa para generar 40khz, pero si cambias el periodo y duty cambias la frecuencia.

LIST p=16f876a ;list directive to define processor
#include <p16f876a.inc> ;processor specific definitions

;Observa que los parámetros de configuración son los que te sirven a tu proyecto
__config _CP_OFF & _XT_OSC & _WDT_OFF & _PWRTE_ON & _LVP_OFF & _BODEN_OFF


;Parámetros para eliminar los mensajes de warning cuando lo ensamblas
ERRORLEVEL -302 ;suppress "not in bank 0" message
ERRORLEVEL -203 ;suppress message
ERRORLEVEL -305 ;suppress message
ERRORLEVEL -205 ;suppress message

#define PWM PORTC,2 ; pin salida audio RC2/CCP1, pin 13 del micro
; lo suyo sería ingresar esta señal a un transformador pequeño de relación
; 8-200 para aumentar la potencia de salida hacia el transductor
; aunque no es necesario definir el pin de salida lo hago con motivo informativo


;Constantes para la onda de salida. Con estos valores obtienes 40khz medidos con osciloscopio.
; Si necesitas otra frecuencia no tienes mas que subir o bajar ambos valores. Ten en cuenta
; que el duty deberá ser siempre la mitad del valor del período para obtener una onda cuadrada
; Si subes los valores obtendrás una frecuencia más baja.

periodo equ .48 ; PWM periodo, lo que ocupa un flanco de subida y uno de bajada (un 1 y un 0)
duty equ .25 ; PWM duty del ciclo, el tiempo que está en 1

ORG 0x00
goto init ;ir al inicio del programa
ORG 0x05


;Inicializar micro

init clrf PORTA ;clear port A
clrf PORTB ;clear port B
clrf PORTC ;clear port C
bsf STATUS,RP0
bcf STATUS,RP1 ;bank 1
movlw 0x06
movwf ADCON1 ;set puerto analógico como digital
movlw b"11111111" ; He puesto todos los pins
movwf TRISA ; de todos los puertos como entradas (1)
movlw b"11111111" ; salvo el pin RC2 que está como salida (0)
movwf TRISB
movlw b"11111011"
movwf TRISC
bcf STATUS,RP0 ;switch bank 0




bsf STATUS,RP0 ;switch bank 1
movlw periodo ; cargamos el valor del período en PR2
movwf PR2
bcf STATUS,RP0 ;switch bank 0
movlw duty ; cargamos valor del duty en CCPR1L
movwf CCPR1L


Principal

; Ya está listo para emitir. Sólo debes poner estas 3 lineas para activar la salida
pwmon bsf T2CON,2 ;TMR2 activado
movlw 0x0c ;cargamos setup módulo
movwf CCP1CON ;PWM

; Esta linea para que quede emitiendo. Puedes reemplazarla por una pausa, una activación por botón, etc etc.
loop nop
goto loop

; Estas lineas para desactivar la salida
pwmoff clrf CCP1CON
bcf T2CON,2 ;Desactivamos TMR2
bcf PWM ;esta línea en caso que al finalizar la emisión el pin quede a 1.

;Y ya está.
; Se podría hacer por pin común on/off con pausas para generar la onda,
;sin usar el módulo PWM pero es una pena tener ese módulo y no usarlo.
; Además ya queda como ejemplo para usos futuros de los foristas

end
Título: RE: AYUDA CON PWM PIC16F877
Publicado por: vszener en 26 de Noviembre de 2005, 11:07:00
Ke tal!!!bueno,si trabajas en C con el compilador CCS en el subforo de C, concretamente en el post d ejemplitos en c, hay dos programas(nº 45 y 46) que utilizan el PWM, aqui el enlace a dicho post:
http://miarroba.com/foros/ver.php?foroid=46840&temaid=4061462
Y aqui un post donde se habla del tema PWM y dan enlace a unas diapositivas:
http://miarroba.com/foros/ver.php?foroid=46840&temaid=4368075

Suerte!!!Giño
Título: RE: AYUDA CON PWM PIC16F877
Publicado por: maunix en 26 de Noviembre de 2005, 11:51:00
Escrito originalmente por diego_castano00
RebotadoHOLA

ESTOY TRABAJANDO EN UN PROYECTO Y ESTOY REALMENTE DESCONCERTADO CON  EL FUNCIONAMIENTO DE LOS MODULOS CCP PARA EL CONTROL DE PWM Y EL TMR2
ALGUIEN TIENE ALGUNA RUTINITA SENCILLA EN LO POSIBLE EXPLICADA, QUE FUNCIONE PARA GENERAR ALGUNA SEÑAL PWM (CON XT DE 4Mhz),

YO TENGO INFORMACION AL RESPECTO PERO ESTOY !PERDIDO EN EL TEMA!
AHHH TRABAJO CON EL PIC SIMULATOR IDE 5.11
REGALO EL CRACK AL QUE ME PUEDA AYUDAR CONCRETAMENTE

GRACIAS


No has dicho nada si te sirvió la ayuda.
Título: RE: AYUDA CON PWM PIC16F877
Publicado por: diego_castano00 en 31 de Enero de 2006, 16:44:00
Hola

queee pena por la demora en  la respuesta pero es que me quede sin acceso a la Internet por exceso de pago (tu sabe como es la cosa), ahh te comento que realmente simule el pedazo de software que colocaste como respuesta pero no he podido entenderlo, y en la simulacion no pasa nada, estoy mas perdido de lo que estaba, sera que estoy omitiendo algo, dame una ayudita

enviame al correo (e-mail)
diego_castano00@yahoo.com
un mensaje identificandote con algo de ayuda con la señal pwm (si es posible en assembler por lo que no manejo lenguaje c muy bien y no tengo las herramientas para su conversion en el momento)

ahh se me olvidaba alli mismo te envio el crack del que te hablaba antes

perdonen la demora
Título: RE: AYUDA CON PWM PIC16F877
Publicado por: Chaly29 en 31 de Enero de 2006, 19:52:00
Hola diego_castano00, por que no posteas tu firmware de esa forma podríamos ayudarte de una forma mas precisa, ya que podríamos ver que es lo que estas haciendo mal.

Suerte

Atte. CARLOS

Título: RE: AYUDA CON PWM PIC16F877
Publicado por: poi5on en 01 de Febrero de 2006, 09:09:00
Hola amigo
Con esta pequeña rutina pones a funcionar el PWM del PIC
Codigo:
   list   p=16f877
   include   "p16f877.inc"
;------------------------------------
   bsf   status,5
   clrf   trisc
   bcf   status,5
   movlw   016h
   movwf   t2con
   bsf   status,rp0
   movlw   0ffh
   movwf   pr2
   bcf   status,5
   movlw   03fh
   movwf   ccp1con
   movlw   0fh
   movwf   ccpr1l
   
fin   nop
   goto   fin
   
   end


con los registros ccpr1l y ccp1con configuras el ciclo de trabajo, y con el pr2 determinas la frecuencia de la señal. De todas maneras en el datasheet del PIC tienes mejor explicados los valores de los registros.

Saludos
Título: RE: AYUDA CON PWM PIC16F877
Publicado por: diego_castano00 en 06 de Febrero de 2006, 16:55:00
La rutina que me pasaste "la pequeña" no me funciona yo trabajo con la simulacion en PIC SIMULATOR IDE no se si sera que debo usar un osciloscopio real para poder verla o solo me basta con simular la salida con algun indicador cualesquiera que sea "sigo perdido en el tema"

gracias por alguna respuesta
Título: RE: AYUDA CON PWM PIC16F877
Publicado por: poi5on en 06 de Febrero de 2006, 18:15:00
Hola amigo;
Yo tambien simule el programa y en el PIC Simulator y si me funciona, solo tienes que darle los valores adecuados a los registro para que los puedas ver en la simulación

Saludos
Título: RE: AYUDA CON PWM PIC16F877
Publicado por: diego_castano00 en 07 de Febrero de 2006, 19:01:00
Perdona mi ignorancia pero a cuales de todos los registros haces referencia al ccp, (Help me ) de este tema PWM conozco muy poco si de pronto podrias mostrarme el que te funcion en el PIC SIMULATOR IDE

Gracias

vacano por las respuestasRollEyes
Título: RE: AYUDA CON PWM PIC16F877
Publicado por: diego_castano00 en 07 de Febrero de 2006, 19:08:00
ahhhhhhh ciego habals de ccpcon Pr2 y el otro, la rutina que pusiste es la que trabaja, perdona por la pregunta pero cuando la agrege al MPLAB me salio como error que status no estaba definido,ni ccpcon ni pr2 ni los otros, de estos registros la razon es que no los ,logro comprender he leido y releido mirado varias rutinas y analizado pero sigo desorientado con este tema en particular

chaooHelado
Título: RE: AYUDA CON PWM PIC16F877
Publicado por: poi5on en 07 de Febrero de 2006, 19:15:00
Hola amigo, si colocas 04h en el t2con, y el osciloscopio en portc,2 podras ver la simulacion del PWM, como t dije si lees el datasheet te dice los bits para que cambies el ciclo de trabajo

Saludos
Título: RE: AYUDA CON PWM PIC16F877
Publicado por: diego_castano00 en 16 de Febrero de 2006, 21:05:00
HOLA

Seguí intentando la rutina que me diste la pequeña pero no se no me funciona que sera que pasa, tengo o he pasado algo por alto,

por que sera ya son 3 dias en esto sin parar y sigue fallando
de pronto hay alguna rutina diferente

Gracias
Título: RE: AYUDA CON PWM PIC16F877
Publicado por: poi5on en 17 de Febrero de 2006, 09:43:00
Hola amigo

Porque no posteas tu codigo a ver que pasa?

Saludos
Título: RE: AYUDA CON PWM PIC16F877
Publicado por: diego_castano00 en 18 de Febrero de 2006, 20:57:00
Hola

estoy trabajando con el mismo codigo que colocaste en el foro (el pequeño)
y no trabaja con el simulador

he hablado con alguna amistades y desconocen del tema, otra razon es que apenas entinedo algunos conceptos sobre la señal PWM y esta ha sido mi ultima opcion (el foro),

Gracias por la colaboracion
Título: RE: AYUDA CON PWM PIC16F877
Publicado por: diego_castano00 en 24 de Febrero de 2006, 21:44:00
Hola alguien tiene o me puede ayudar con el codigo pequeño que esta un poco mas atras

chao
Título: RE: AYUDA CON PWM PIC16F877
Publicado por: maunix en 25 de Febrero de 2006, 09:45:00
Escrito originalmente por diego_castano00
Hola alguien tiene o me puede ayudar con el codigo pequeño que esta un poco mas atras

chao


Diego, recien me meto en este hilo.  Dime con que tienes problemas y te podré ayudar.

Cual consideras el codigo pequeño y cual el grande?

Título: RE: AYUDA CON PWM PIC16F877
Publicado por: poi5on en 26 de Febrero de 2006, 09:09:00
Hola prueba con esto, a mi me sirve perfectamente en el PIC Simulator IDE v5.41
Codigo:
list   p=16f877
   include   "p16f877.inc"
;------------------------------------
   bsf   status,5
   clrf   trisc
   bcf   status,5
;------------------------------------
   movlw   04h
   movwf   t2con
   bsf   status,rp0
   movlw   0ffh
   movwf   pr2
   bcf   status,5
   movlw   03fh
   movwf   ccp1con
   movlw   0fh
   movwf   ccpr1l

fin   nop
   goto   fin

   

   end


Al colocar el osciloscopio en el PORTC,2 veras la modulación debes manipular los valores de los registros para el ciclo de trabajo, lee el datasheet

Saludos
Título: RE: AYUDA CON PWM PIC16F877
Publicado por: diego_castano00 en 04 de Marzo de 2006, 22:39:00
hola.
Maunix la rutina pequeña de la que hablo es de la que me ha estado ayudando
poi5on.


hola poi5on
Ahora, coloque la rutina que me colocaste, usas el pic simulator 5.41
yo tengo el 5.11 y no me funciona, cambie el Duty Cycle y lo intente varias veces
y no logro ver nada con el osciloscopio propio del simulador y lo probe en uno real y no funciona.

Muestrame como seteaste (setting) o configuraste el simulador en cuanto al oscilscopio en que numero de ciclos lo tienes, y la configuracion sencilla del simulador

chaoooinvasor
Título: RE: AYUDA CON PWM PIC16F877
Publicado por: diego_castano00 en 05 de Marzo de 2006, 17:10:00
hola, puse como me dijiste el simulador en 4000 y en el canal 1 portc,2 y veo una linea largota en cero (0)

pregunta, cada cuanto deberia cambiar de estado la onda pwm


que sera lo que pasa

chaoooHeladoHelado
Título: RE: AYUDA CON PWM PIC16F877
Publicado por: poi5on en 06 de Marzo de 2006, 09:22:00
Hola amigo,
El problema q tienes es q la version de tu PIC Simulator NO SOPORTA PWMlocoloco chequa este link http://www.oshonsoft.com/piclog.html actualiza la version, ademas, te deberia funcionar en el PIC perfectamente.

Saludos
Título: RE: AYUDA CON PWM PIC16F877
Publicado por: diego_castano00 en 24 de Marzo de 2006, 19:53:00
tienes realmente la razon, la version que tengo del PIC SIMULATOR IDE no soporta el PWM, esta es una de las cosas que me encantan del FORO

PERO PERO PERO AHORA si que quede varado, por que la version que tengo esta con un crack y he tratado de de descargar la version DEMO (la ultima) y cuando la voy a instalar no se deja. PERO bueno que se le hace.

NOTA: alguien posee algun crack y el software de alguna version superior a la del PIC SIMULATOR IDE  4.11 me seria de gran ayuda.

Me podrian decir como es que cierro un tema es decir como pongo el candadito en el foro
Título: RE: AYUDA CON PWM PIC16F877
Publicado por: poi5on en 25 de Marzo de 2006, 08:16:00
Hola, desintala la version que tengas del PIC Simulator, descargate la ultima version la 5.91 AQUI y yo te paso el key generator si me das tu correo.

Salu2
Título: RE: AYUDA CON PWM PIC16F877
Publicado por: diego_castano00 en 27 de Marzo de 2006, 22:06:00
Giño Te agradezco poisson por el KEY me seria de gran ayuda
 mi e-mail es:

 diego_castano00@yahoo.com

si necesitas alguna INFO de la que disponga con mucho gusto te colaboro.

posdata: estoy trabajndo en un menu para usuario con una LCD marca OPTREX DMC 16204 de la cual he obtenido buenos resultado en la generacion del menu

GraciasGiño
Título: RE: AYUDA CON PWM PIC16F877
Publicado por: poi5on en 28 de Marzo de 2006, 17:51:00
Ya te envie el correo en formato rar para que lo descarges pero no se yahoo permite recibir correos con aplicaciones comprimidas en rarlocoloco
Título: Re: AYUDA CON PWM PIC16F877
Publicado por: rodrisra en 02 de Noviembre de 2011, 21:42:27
buena informacion encontre en este tema, sin embargo he probado el programa pequeño:

y lo que no entiendo es el valor de PR2 es de 255 pero quiero lograr un periodo de 20ms esto me da 99999 de PR2 con la formula:

PR2= (periodopwm/(4*tosc*m))-1
donde tosc es 1/frec del cristal

y m= 1/prespaler (1,4,16), use un preescaler de 1

el cristal es de 20Mhz

alguien que me pueda ayudar???.


esta parte es la que no entiendo del todo, señale con flechitas lo que me gustaria que alguien me dijera "esto es asi":

        movlw   0x04              ;  aqui tengo entendido que es el valor del preescaler esto es??? (1,4,16) pero que es el peescaler para que sirve
      movwf   t2con             ;
   bsf           status,rp0     
      movlw   0xff                ;  esta es la frecuendia del sistema (255) pero la obtengo con la formula que puse o es con otra?
      movwf   pr2                ;
      bcf        status,rp0
      movlw   0x3F              ;   este valor me determina el ciclo de trabajo pero como puedo manipularlo *
      movwf   ccp1con         ;
      movlw   0x0f              ;   este valor me determina el ciclo de trabajo pero como puedo manipularlo *
      movwf   ccpr1l           ;


*he investigado un poco y me e dado cuenta que:
ciclo de trabajo= ccpr1l:ccp1con<5.4>

y:    preiodopwm=(ciclo de trabajo)(tosc)(m).   
donde tosc es 1/frec del cristal

y m= 1/prespaler (1,4,16), use un preescaler de 1

si es asi, entonces como manipulo los valores de ccp1con y ccpr1l????.

gracias por su atencion espero alguna respuesta gracias de nuevo
Título: Re: AYUDA CON PWM PIC16F877
Publicado por: AngelGris en 02 de Noviembre de 2011, 23:00:50
  Pues con un cristal de 20MHz es imposible llegar a ese tiempo de período.