Autor Tema: 16f690 y PWM...no consigo entenderlo!  (Leído 15908 veces)

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

Desconectado MADKazuya

  • PIC10
  • *
  • Mensajes: 39
Re: 16f690 y PWM...no consigo entenderlo!
« Respuesta #30 en: 10 de Septiembre de 2009, 20:02:45 »
Citar
Yo cambie el tris como te indican y seleccione para los pulsadores los pines RB6 y RB7. No me acuerdo haber hecho otro cambio 

fijate lo que te pone aqui, yu los pones en RB0 Y RB1 que por lo que decis no estan implementados en este PIC, cambia equ  0 y equ  1 por 6 y 7 asi es como dice Suki que le funciona.

Corregidme si me equivoco pero en mi codigo las variables incre y decre no se usan. Asi pues no creo que vaya a cambiar nada no? (insisto que el codigo mostrado ya tiene ciertos cambios con respecto al de suky). Me parece que estoy ciego porque llevo desde la ultima contestacion (hace dias) de suky intentando entender la importancia de RB6 y RB7 en mi codigo  :oops:

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: 16f690 y PWM...no consigo entenderlo!
« Respuesta #31 en: 10 de Septiembre de 2009, 20:09:37 »
Citar
Bucle
   btfsc   PORTB,decre   ; Testea si se quiere reducir CT.-
   goto   Decrementa
   btfsc   PORTB,incre   ; Testea si se quiere aumentar CT.-
   goto   Incrementa
   goto   Bucle
Incrementa

No estas usando este codigo? creo que es el que probo Suki.

Desconectado MADKazuya

  • PIC10
  • *
  • Mensajes: 39
Re: 16f690 y PWM...no consigo entenderlo!
« Respuesta #32 en: 10 de Septiembre de 2009, 20:13:12 »
No, estoy usando una modificacion (que no sirve para mucho  :mrgreen:) mia, en un intento por suprimir los pulsadores, que no necesito para mi aplicacion... :oops: ya que quiero que sea automatico, tanto el encedido como el apagado progresivo.

El codigo es este:

Código: [Seleccionar]
; PICkit 2 Lesson 1 - 'Hello World'
;
#include <p16F690.inc>
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
org 0

;**** Definicion de variables ****
Contador1 equ 0x20 ;
Contador2 equ 0x21 ;

decre equ 6 ; Pulsador para decrementar Ciclo de Trabajo
incre equ 7 ; Pulsador para incrementar Ciclo de Trabajo


;/////////////////////////////////
;**** Inicio del Micro ****
Reset.
org 0x00 ; Aqui comienza el micro.-
goto Inicio ; Salto a inicio de mi programa.-
 
; **** Programa Principal ****
org 0x05
Inicio
bsf STATUS,RP0 ; Banco 1
bcf STATUS,RP1  ; -
movlw b'11011111' ; Todo entradas menos una salida
movwf TRISC
bcf STATUS,RP0 ; Banco 0
movlw b'00000110' ; Se selecciona TMR2, preescaler de 1/16.-
movwf T2CON
bsf STATUS,RP0 ; Banco 1
movlw 0x1E ; Senal de 2kHz
movwf PR2
bcf STATUS,RP0 ; Banco 0
clrf CCPR1L ; Ciclo de trabajo 0%
bcf     CCP1CON,6
bcf     CCP1CON,7
bcf CCP1CON,DC1B1
bcf CCP1CON,DC1B0
bsf CCP1CON,CCP1M3 ; Configura modulo CCP modo PWM.-
bsf CCP1CON,CCP1M2
Bucle
goto Incrementa
goto Bucle
Incrementa
incf CCPR1L,1
call Demora_50ms
goto Bucle
 
;**** Demora ****
Demora_50ms
movlw 0xFF ;
movwf Contador1 ; Iniciamos contador1.-
Repeticion1
movlw 0x40 ;
movwf Contador2 ; Iniciamos contador2
Repeticion2
decfsz Contador2,1 ; Decrementa Contador2 y si es 0 sale.-
goto Repeticion2 ; Si no es 0 repetimos ciclo.-
decfsz Contador1,1 ; Decrementa Contador1.-
goto Repeticion1 ; Si no es cero repetimos ciclo.-
return ; Regresa de la subrutina.-
;..............................................
end

Lo que si es cierto es que se BASA en el de suky, eso si, por eso estoy seguro de que, al haberlo modificado, he hecho algo (o muchas cosas  :mrgreen:) mal. El codigo de suky esta pensado para un 16F628, el mio, para un 16F690.

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: 16f690 y PWM...no consigo entenderlo!
« Respuesta #33 en: 10 de Septiembre de 2009, 20:23:48 »
Ahora es muy tarde voy dormir pero ese codigo no creo que este bien, mañana te lo miro en el MPLAB pero creo que no tiene mucho sentido. Solo icrementas constantemente CCPR1L.
HASTA MAÑANA

Desconectado MADKazuya

  • PIC10
  • *
  • Mensajes: 39
Re: 16f690 y PWM...no consigo entenderlo!
« Respuesta #34 en: 10 de Septiembre de 2009, 20:37:46 »
Vale, muchas gracias por todo tapi8 y suky, sois de gran ayuda de verdad. Se que soy un hueso duro de roer, pero tambien se que solo es cuestion de tiempo hasta que se solucione el problema de este codigo y ya por fin pueda hacer yo solo por mi cuenta sin tener que incordiar a nadie (que aunque no lo parezca dejar de molestar es lo que mas deseo; solo acudo aqui cuando ya no me queda otra opcion).

Como comentario añadido te dire tapi8 que lo que quiero es que en el momento que reciba señal el pic, el led aumente poco a poco su intensidad y se mantenga en su maximo hasta que dicha señal desaparezca, momento en el que debera apagarse poco a poco. Algo asi como el efecto de un condensador, pero mucho mas controlado (no quiero tener que usar un condensador titanico para dicha tarea!). De ahi que haga que CPR1L se incremente solo, porke emula la activacion de la señal de control del pic.

Para que nos entendamos:

Situacion: un coche

Señal que activara el led: el contacto

asi pues, al girar la llave, la señal deberia subir "exponencialmente" y mantenerse ahi  -->    ______/'''''''''''''''''''''''''''

Y al quitar la llave deberia de apagarse de igual manera --> ''''''''''''''''''''''''\_____

No se si ahora habra quedado mas claro, eso espero!  :oops:

Mañana mas!

Gracias! :-/ ;-)

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: 16f690 y PWM...no consigo entenderlo!
« Respuesta #35 en: 10 de Septiembre de 2009, 22:49:00 »
Fíjate el siguiente código, incrementa y decrementa, probado en proteus 7.4:

Código: ASM
  1. ; **** Encabezado ****
  2.         list            p=16f690        ; list directive to define processor
  3.         #include        <p16f690.inc>   ; processor specific variable definitions
  4.  
  5. Contador1 equ 0x20 ;
  6. Contador2 equ 0x21 ;
  7.  
  8. decre equ 6 ; Pulsador para decrementar Ciclo de Trabajo
  9. incre equ 7 ; Pulsador para incrementar Ciclo de Trabajo
  10.  
  11. Reset.         
  12.         org             0x00            ; Aqui comienza el micro.-
  13.         goto    Inicio          ; Salto a inicio de mi programa.-
  14.  
  15. ; **** Programa Principal ****
  16.         org             0x05
  17. Inicio
  18.         bsf             STATUS,RP0      ; Banco 1
  19.         bcf             STATUS,RP1  ; -
  20.         movlw   b'11011111'     ; Todo entradas menos una salida
  21.         movwf   TRISC
  22.         bcf             STATUS,RP0      ; Banco 0
  23.         movlw   0x05            ; Se selecciona TMR2, preescaler de 1/4.-
  24.         movwf   T2CON
  25.         bsf             STATUS,RP0      ; Banco 1
  26.         movlw   0x7C            ; Senal de 2kHz CALCULADO PARA 4MHZ (Soft configPIC)
  27.         movwf   PR2    
  28.         bcf             STATUS,RP0      ; Banco 0
  29.         movlw   0x00
  30.         movwf   CCPR1L          ; Ciclo de trabajo 0%
  31.         bcf     CCP1CON,6
  32.         bcf     CCP1CON,7
  33.         bcf             CCP1CON,5
  34.         bcf             CCP1CON,4
  35.         bsf             CCP1CON,CCP1M3  ; Configura modulo CCP modo PWM.-
  36.         bsf             CCP1CON,CCP1M2
  37. Bucle
  38.         incf    CCPR1L,1
  39.         call    Demora_50ms
  40.         movlw   d'127'          ; Solo hasta 127 porque por la frecuencia seleccionada solo usa 9 bits
  41.         subwf   CCPR1L,0
  42.         btfss   STATUS,Z        ;
  43.         goto    Bucle           ; No es 127.-  
  44. ; Ahora se decrementa
  45. Dec
  46.         call    Demora_50ms
  47.         decf    CCPR1L,1
  48.         btfss   STATUS,Z        ; Es 0
  49.         goto    Dec             ; No es 0.-
  50.         goto    Bucle
  51.  
  52.  
  53. ;**** Demora ****
  54. Demora_50ms
  55.         movlw   0xFF                    ;
  56.         movwf   Contador1               ; Iniciamos contador1.-
  57. Repeticion1
  58.         movlw   0x40                    ;
  59.         movwf   Contador2               ; Iniciamos contador2
  60. Repeticion2
  61.         decfsz  Contador2,1             ; Decrementa Contador2 y si es 0 sale.-        
  62.         goto    Repeticion2             ; Si no es 0 repetimos ciclo.-
  63.         decfsz  Contador1,1             ; Decrementa Contador1.-
  64.         goto    Repeticion1             ; Si no es cero repetimos ciclo.-
  65.         return                                  ; Regresa de la subrutina.-
  66. ;..............................................
  67.         end

Los valores para cargar y obtener los 2kHz lo calcule con el soft configPIC, el cual dice que solo utilizará 9 bits, por eso solo espero a que llegue a 127.

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado MADKazuya

  • PIC10
  • *
  • Mensajes: 39
Re: 16f690 y PWM...no consigo entenderlo!
« Respuesta #36 en: 11 de Septiembre de 2009, 07:38:58 »
Hago el build y no da error ninguno. Lo grabo con el pickit y no da error ninguno, pero sigue sin funcionar. He verificado con el tester y hay salidas que dan tension asi que descarto el hecho de que el PIC se haya estropeado. La salida RC5 da un valor RMS de 1,7V, invariable. No tengo que hacer nada especial en cuanto al montaje fisico del PIC, verdad?utilizo la placa de pruebas que viene con el pickit2 y me imagino que ya vendra con todo lo necesario para proteger y programar el PIC. Creo que ahora empiezo a entender porque no oigo hablar mucho de este modelo de PIC  :mrgreen: Al final acabare comprandome un 16F628 y usando tu codigo tal cual, suky  :oops:

p.d: No conocia el programa proteus hasta que tu lo mencionaste, suky. Me he informado y la verdad es que parece muy potente e interesante asi que me lo instalare.  ;-)

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: 16f690 y PWM...no consigo entenderlo!
« Respuesta #37 en: 11 de Septiembre de 2009, 09:21:04 »
Lo que no está configurado son los fuses del microcontrolador, revisa eso  ;-)


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado MADKazuya

  • PIC10
  • *
  • Mensajes: 39
Re: 16f690 y PWM...no consigo entenderlo!
« Respuesta #38 en: 11 de Septiembre de 2009, 18:45:19 »
Los fuses son los configuration bits?

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: 16f690 y PWM...no consigo entenderlo!
« Respuesta #39 en: 11 de Septiembre de 2009, 19:45:59 »
Sip  :mrgreen:
No contesto mensajes privados, las consultas en el foro

Desconectado MADKazuya

  • PIC10
  • *
  • Mensajes: 39
Re: 16f690 y PWM...no consigo entenderlo!
« Respuesta #40 en: 11 de Septiembre de 2009, 21:27:21 »
Siempre le pongo la misma cabecera para todas las pruebas que hago, y es esta

Código: [Seleccionar]
#include <p16F690.inc>
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
org 0

Yo diria que esta bien. Es la config por defecto. No se si hay algo mal aqui tambien... :?

Desconectado MADKazuya

  • PIC10
  • *
  • Mensajes: 39
Re: 16f690 y PWM...no consigo entenderlo!
« Respuesta #41 en: 13 de Septiembre de 2009, 22:56:47 »
Alguna otra recomendacion? (aparte de que no me dedique a programar pic's... :oops: ;-) )

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: 16f690 y PWM...no consigo entenderlo!
« Respuesta #42 en: 14 de Septiembre de 2009, 00:47:10 »
Cambiar de PIC  :D Perdón, hablando enserio, no veo cual puede ser el problema y no tengo uno como para probarlo directamente  :undecided: Habría que ir probando el correcto funcionamiento del PIC, osea prender un led para saber si no se ha tildado o perdido en alguna linea. Comenzar con ciclo de trabajo en 25% fijo, ir cambiándolo, cambiar la configuración de PWM,etc. de esa manera vas estudiando donde puede estar el problema.
No contesto mensajes privados, las consultas en el foro

Desconectado MADKazuya

  • PIC10
  • *
  • Mensajes: 39
Re: 16f690 y PWM...no consigo entenderlo!
« Respuesta #43 en: 14 de Septiembre de 2009, 07:41:43 »
Entonces a ti te funciona mi codigo sin modificar nada? que raro! es que no lo entiendo...pero si, te hare caso, cambiare de pic porque este me tiene harto! cuales me recomiendas que sean mas o menos simples? (con que tengan un par de salidas PWM me basto, no me hagan falta mas virguierias. Consultare si el que me recomiendes se puede programar de manera sencilla a traves del pickit 2, y sino lo programare como el 16F84A, de manera "manual", que funciona la mar de bien.

Supongo que me recomendaras el 628, asi ya tendre ejemplos hechos y comprobados y dejare de molestarte  :mrgreen: :mrgreen: :mrgreen: :mrgreen: me pareceria comprensible y una buena idea...ahora solo me falta rezar por que lo tengan en la tienda  :D

Saludos y gracias!!

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: 16f690 y PWM...no consigo entenderlo!
« Respuesta #44 en: 14 de Septiembre de 2009, 09:23:29 »
El código que adjunte unos mensajes más arriba está probado en proteus donde se ve como varia el PWM. Epa!!! Aumenta la demora, puede ser que no se alcance a visualizar el cambio!  :tongue: No me fije en eso  :oops:

Otros pic sencillos para iniciar serian el PIC16F628A, PIC16F648A, PIC16F88 tiene conversor A/D, PIC16F873, PIC16F883, etc.

Saludos!
No contesto mensajes privados, las consultas en el foro


 

anything