Vamos al tema!!! jeje gracias Antoniof:
Aqui estoy inicializando una salida de PWM por Hardware y nada mas!!! Simplemente le doy los valores para obtener una senal de 244hz al 50%, pero algo se me escapa porque grabo el pic y en la patilla RB3 que es la salida, solo tengo unos pocos mV.
El pic como puedes ver en el codigo es el 16F628.
La rutina de interrupciones solo la he puesto para ver si en algun momento es que me saltaba la interrupcion, pero no salta porque la patilla que pongo a uno en la interrupcion siempre esta a cero.
;*********** Label Definition *********************************
list p=pic16f628 ; list directive to define processor
include p16f628.inc ; processor specific variable definitions
__config _LVP_OFF & _BODEN_OFF & _MCLRE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
errorlevel -302 ;Suppress bank warning
T2CON EQU 12H ;TIMER2 Control register
STATUS EQU 03H ;STATUS register
TRISA EQU 85H ;Mode set for PORTA
PORTA EQU 05H ;PORTA register
TRISB EQU 86H ;Mode set for PORTB
PORTB EQU 06H ;PORTB register
CCP1CON EQU 17H ;CCP Module
CCPR1L EQU 15H ;PWM register (LSB)
PIR1 EQU 0CH ;
PR2 EQU 92H ;TMR2 module´s period register
#DEFINE BANK0 BCF STATUS,5;BANK0 select
#DEFINE BANK1 BSF STATUS,5;BANK1 select
;********** Program Start ******************************************
ORG 00H ;Reset vector
GOTO INIT
ORG 04H ;Interrupt Vector
GOTO NADA_QUE_HACER
;******** Initial Proces **********************************
NADA_QUE_HACER
BSF PORTA,7
RETFIE
INIT ;***Port initialization
BCF STATUS,7
BCF STATUS,6
BANK0 ;voy al banco0, en este pic manejas tres bits.
CLRF PORTA
CLRF PORTB
BANK1 ;Selection Bank1
MOVLW B"00001111" ;AN0 AN1 AN2 AN3 to input mode
MOVWF TRISA ;Set TRISA register
MOVLW B"11110110" ;RB0 interrupt input,RB1 RB2 trolley control
MOVWF TRISB ;Set TRISB register
;(salida PWM por hard es el bit tres del PuertoB)
BANK0 ;Change to Bank0
;***PWM initialization2 HARD
CLRF CCP1CON
CLRF TMR2 ;Clear TMR2 register
CLRF CCPR1L ;pongo a cero estos registros
BANK1
MOVLW 0FFH
MOVWF PR2 ;Set the PWM2 period (244Hz)
BANK0
MOVLW 03H
MOVWF CCPR1L
MOVLW 0CH ;CCP1XY=1 CCP1M=1100(PWM)
MOVWF CCP1CON ;Set the PWM mode & Duty Cicle
MOVLW 06H ;Pst=1:1 TMR2=ON Pre=1:16
MOVWF T2CON ;Set T2CON register
MainLoop
NOP
GOTO MainLoop ;el lazo principal no hace nada solo quiero ver la senal cuadrada
END
Algo no estoy haciendo bien
, la salida RB3 tiene dos funciones, pero yo creo que diciendo en el trisB que sea salida ="0", y poniendo el modulo CCP, en modo PWM es suficiente no??
Esto es una locura, gracias por cualquier consejo que podais darme los que teneis esto un poco mas por la mano!!!
PD: Lo siento por tener los comenterios en ingles, si teneis alguna duda al repecto o sobre el codigo que no este muy clrao, solo decirmelo ok!!