Autor Tema: [RESUELTO] pic16f876 Bajada de tension en salida PWM/CCP1  (Leído 1714 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado dosto

  • PIC10
  • *
  • Mensajes: 2
[RESUELTO] pic16f876 Bajada de tension en salida PWM/CCP1
« en: 28 de Abril de 2013, 21:20:40 »
Resulta que quiero hacer un pulsador que cada vez que le demos aumente el duty de la señal PWM un 25%, hasta que llegue al 100%, entonces la proxima vez que se pulse el boton baje al 0% y se inicie el ciclo, pero tengo el problema que cada vez que pulso para aumentar un 25% el duty me baja la tension de la señal pwm progresivamente hasta llegar a -5V cuando lo esperado es que se mantuviera la señal PWM entre 0 y 5V.
Me he mirado el datasheet de arriba a abajo y no logro entender que pasa.
Aqui os dejo el código en ensamblador y la simulación en Proteus con el osciloscopio listo. Las subrutinas vienen también dentro del archivo.
http://www.mediafire.com/?0q7k2v70x2b07x1
 
Gracias por vuestra atencion

;********************************************************************
;Daniel Pérez Medinilla
;Proyecto 2
;********************************************************************

   ERRORLEVEL   -302               ;Supresión del mensaje (302)

      list p=16f876,   f=INHX8M, r=hex
      include "p16f876.inc"
      include "macros.inc"

Per      equ   .250      ;periodo pwm
contaduty equ 30
duty0  equ 31
duty1  equ 32
duty2  equ 33
duty3  equ 34
duty4  equ 35

         org   0

         org   5

inicio      
         movlw 0x00
         movwf duty0
         movlw 0x3E
         movwf duty1
         movlw 0x7C
         movwf duty2
         movlw 0xBA
         movwf duty3
         movlw 0xF9
         movwf duty4
         clrf      PORTA            ;Borra salidas de puertos.
         clrf      PORTB            ;   "
         clrf      PORTC            ;   "
         Banco1                  ;Selecciona banco 1.
         movlw      b'00000110'      ;Puerto A como digital.
         movwf      ADCON1         ;   "
         movlw      b'11111111'
         movwf      TRISA         ;Puerto A como entrada
         clrf      TRISB            ;Puerto B como salida.
         movlw      b'11111011'      ;Línea RC2 como salida.
         movwf      TRISC            ;   "

inicio2
         movlw 0x31
         movwf FSR
         Banco0
         movlw .5
         movwf contaduty

inicio3
         Banco1
         movlw      Per-1            ;Carga el registro de período.
         movwf      PR2            ;   "
         Banco0                  ;Selecciona banco 0.
         movf       INDF,W
         movwf      CCPR1L         ;   "
         movlw      b'00111100'      ;Programa TMR1 en modo PWM.
         movwf      CCP1CON         ;   "
         movlw      b'00000110'      ;Arranca TMR2.
         movwf      T2CON            ;   "

Bucle:
         clrwdt
          btfss       PORTA,5
         goto      Bucle
         call       R1S
         incf       FSR,f
         decf       contaduty,f
         movf       contaduty,w
         btfss       STATUS,Z
         goto       inicio3
         goto       inicio2
         
include  "retardos.inc"         ;Incluye subrutinas de retardos.         

   end


« Última modificación: 30 de Abril de 2013, 06:32:41 por dosto »

Desconectado dosto

  • PIC10
  • *
  • Mensajes: 2
Re: [RESUELTO] pic16f876 Bajada de tension en salida PWM/CCP1
« Respuesta #1 en: 30 de Abril de 2013, 06:33:24 »
El problema era que el osciloscopio que estaba usando estaba en AC en vez de DC. Pa habernos matao =P


 

anything