Autor Tema: p18f1220.inc  (Leído 1857 veces)

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

Desconectado robotdoblador

  • PIC10
  • *
  • Mensajes: 6
p18f1220.inc
« en: 29 de Noviembre de 2007, 09:48:33 »
Hola a todos,
como comenté en otro mensaje quiero lograr un pwm con 5us de precisión y 20ms de periodo.
Finalmente lo he logrado generando interrupciones de 5us y realizando el pwm por software (sumando las interrupciones de 5us hasta lograr el periodo).
El código lo hice para un pic16c621 que permite ciclos de reloj de 40Mhz, pero como es OTP (no me di cuenta cuando lo estaba haciendo) voy a migrar el código para implementarlo en un 18f1220 (a 40 Mhz).

Pero a la hora de migrar el código se me ha presentado un problema: ¿dónde consigo la librería p18f1220.inc? ya que en los archivos de mi mplab7.5 no está y por internet no he encontrado el código.
He intentado instalar mplab8.0 pero me da errores.

A ver si me podéis echar una mano, ya que estoy atascado y seguro que es una chorrada.

Si tenéis alguna pista que darme sobre la migración del código también os lo agradeceré.
En principio, con modificar la posición donde se almacenan las variables, el ciclo de reloj y el .inc debería bastar (las posibilidades adicionales de la gama alta supongo que no se activan por defecto, y la configuración de los registros supongo que será igual).

Os incluyo el código para el p16c621 por si os interesa a alguno.
Un saludo.


   LIST        P=16C621
    INCLUDE     "P16C621.INC"
   __CONFIG   _CP_OFF &  _WDT_OFF & _PWRTE_ON & _HS_OSC

   CBLOCK   0x20
   FactorAlto
   Entrada            
   Variable_Marca
   Contador_Bucle_INTERNO
   Contador_Bucle_EXTERNO
   Contador_ON_OFF   
   Guarda_W
   Guarda_STATUS
   ENDC                  

TMR0_CARGA   EQU   -d'38'   

ALTO_CERO_GRADOS   EQU   d'610'      
TIEMPO_PATRON   EQU   d'5'   

FACTOR_MINIMO   EQU   ALTO_CERO_GRADOS/TIEMPO_PATRON

#DEFINE      Salida         PORTA,0
#DEFINE      Variable_Angulo   PORTB,7
#DEFINE      Marca         Variable_Marca,0

   ORG    0
     goto   Inicio
   ORG      .4
   goto   Interrupcion
Inicio
   bsf      STATUS,RP0
   bcf      Salida         
   movlw   b'11111111'
   movwf   PORTB   
   movlw   b'00001000'         
   movwf   OPTION_REG
   bcf      STATUS,RP0
   movlw    TMR0_CARGA
   movwf   TMR0         
   movlw   b'10100000'
   movwf   INTCON         
   
;*********************************

Principal
   movf   PORTB,W
   andlw   b'01111111'
   movwf   Entrada
   addlw   FACTOR_MINIMO   
   movwf   FactorAlto      
   goto   Principal         

;*********************************
   
Interrupcion
   movwf   Guarda_W         
   swapf   STATUS,W         
   movwf   Guarda_STATUS
   bcf      STATUS,RP0      
   movlw    TMR0_CARGA
   movwf    TMR0
   movf   Contador_ON_OFF,W
   andlw   b'11111111'
   btfss   STATUS,Z
   goto   Ajuste_ON_OFF
   btfsc    Salida         
   goto    Dos_Posibilidades
   movf   Contador_Bucle_EXTERNO,W
   andlw   b'11111111'
   btfss   STATUS,Z
   goto   Ajuste_OFF

Pone_ON   
   bsf      Salida
   btfsc   Variable_Angulo
   goto   Angulo_Grande            
   movf   FactorAlto,W      
   movwf    Contador_ON_OFF   
   bcf      Marca
   movlw   .15
   movwf   Contador_Bucle_EXTERNO
   nop
   nop
   nop
   nop
   goto    Fin_Interrupcion
Angulo_Grande
   movlw   .249
   movwf   Contador_ON_OFF
   bsf      Marca
   movlw   .14
   movwf   Contador_Bucle_EXTERNO
   nop
   nop   
   nop
   goto   Fin_Interrupcion

Dos_Posibilidades
   btfsc   Marca
   goto   Segundo_Ciclo

Pone_OFF
   bcf    Salida         
   movf   FactorAlto,W      
   sublw   .249            
   movwf    Contador_ON_OFF
   nop
   nop
   nop
   nop
   nop      ;5
   nop
   nop
   nop
   nop
   nop      ;10
   nop

Fin_Interrupcion
   swapf   Guarda_STATUS,W   
   movwf   STATUS
   swapf   Guarda_W,F
   swapf   Guarda_W,W
   bcf      INTCON,RBIF
   bcf      INTCON,T0IF
   retfie

Ajuste_ON_OFF
   decf   Contador_ON_OFF,F
   nop
   nop
   nop
   nop
   nop      ;5
   nop
   nop
   nop   
   nop
   nop      ;10
   nop
   nop   
   nop
   nop
   nop
   nop
   goto   Fin_Interrupcion

Ajuste_OFF
   movf   Contador_Bucle_INTERNO,W
   andlw   b'11111111'
   btfsc   STATUS,Z
   goto   Fin_Bucle_Ajuste_OFF
   decf   Contador_Bucle_INTERNO,F
   nop
   nop
   nop
   nop
   nop      ;5
   nop
   goto    Fin_Interrupcion
Fin_Bucle_Ajuste_OFF
   movlw   .249;
   movwf   Contador_Bucle_INTERNO
   decf   Contador_Bucle_EXTERNO,F
   nop
   nop   
   nop
   goto   Fin_Interrupcion

Segundo_Ciclo   
   movf   Entrada,W
   movwf   Contador_ON_OFF
   bcf      Marca
   bcf      Salida
   nop
   nop
   nop
   nop
   nop ;5
   nop
   nop
   nop
   goto   Fin_Interrupcion   


   END

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: p18f1220.inc
« Respuesta #1 en: 29 de Noviembre de 2007, 10:17:44 »
yo tengo la 7.6 y ahi si sale ese pic, descargalo de la web de microchip e instalalo. saludos  :-/
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado robotdoblador

  • PIC10
  • *
  • Mensajes: 6
Re: p18f1220.inc
« Respuesta #2 en: 29 de Noviembre de 2007, 12:42:32 »
Tienes razón,
he probado en otro ordenador donde está instalada la 7.4 y ahí también está.
Reinstalaré el programa o copiaré el archivo del otro ordenador.
Un saludo y gracias.

Desconectado flacoclau

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1692
    • El Micro Reactor
Re: p18f1220.inc
« Respuesta #3 en: 29 de Noviembre de 2007, 19:36:58 »
acá te lo dejo por si no lo encuentras, saludos y suerte!!
Las personas con buena ortografía me atraen textualmente.

El Micro Reactor

Córdoba capital - Argentina.