Autor Tema: Practicas con el PIC18F13K22  (Leído 5378 veces)

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

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Practicas con el PIC18F13K22
« Respuesta #15 en: 18 de Agosto de 2014, 13:21:44 »
Puedes editar los códigos que has puesto, y ponerlos en ASM , esa opción la vez cuando vas a enviar el mensaje , donde dice GeShi le pones ASM y en medio de esas etiquetas pones tu codigo, le das previsualizar y aparecerá algo asi:

Código: ASM
  1. LIST p=18F13K22
  2. #INCLUDE <p18f13k22.inc>

saludos
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado Pinolillo16

  • PIC18
  • ****
  • Mensajes: 324
Re: Practicas con el PIC18F13K22
« Respuesta #16 en: 20 de Agosto de 2014, 16:38:20 »
Gracias por la observación jhozate lo hare en los próximos códigos que suba.... ;-)

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Practicas con el PIC18F13K22
« Respuesta #17 en: 20 de Agosto de 2014, 17:16:21 »
puedes modificar tus comentarios anteriores, ve a ely en la parte derecha dice "Modificar"
saludos
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado Pinolillo16

  • PIC18
  • ****
  • Mensajes: 324
Re: Practicas con el PIC18F13K22
« Respuesta #18 en: 21 de Agosto de 2014, 15:28:09 »
Que tal amigos, he seguido realizando practicas con el PIC y a continuación les posteare el siguiente código. Les explico se trata de manejar un servo con el valor del pot, no se que tan complejo pueda ser pero vamos a realizarlo.....

El código para el ADC ya esta ahora tenemos que manejar el servo, como ya saben estos se manejan a una frecuencia de 50 o 60 hz. Un pulso mínimo para 0º de 0.5ms y un pulso máximo de 2.1ms.

Bien enfrente un poco de problemas para poderlo programar, el funcionamiento del programa es generar el primer pulso para posicionarlo a 0º, despues de ello vamos a generar 255 interrupciones en un intervalo de tiempo de 2.1ms (Máximo)- 0.5ms(Mínimo) que nos dio un retardo aproximado de 6us entre cada interrupcion, de esta manera podemos asignar el valor alto del adc directo al servo. Despues de estas 255 interrupciones generamos una de 17.9ms para completar el ciclo e iniciar de nuevo el pulso de inicio.

Desconectado Pinolillo16

  • PIC18
  • ****
  • Mensajes: 324
Re: Practicas con el PIC18F13K22
« Respuesta #19 en: 21 de Agosto de 2014, 15:29:04 »
Código: ASP
  1. LIST p=18F13K22
  2.         #INCLUDE <p18f13k22.inc>
  3.         CONFIG  FOSC    = IRC
  4.         CONFIG  PLLEN   = ON   
  5.         CONFIG  BOREN   = OFF
  6.         CONFIG  WDTEN   = OFF
  7.         CONFIG  MCLRE   = OFF
  8.         CONFIG  HFOFST  = OFF
  9.         CONFIG  LVP     = OFF
  10.         CONFIG  CP0     = ON
  11.         CONFIG  CP1     = ON
  12.         CONFIG  CPB     = OFF
  13.         CONFIG  CPD     = OFF
  14.         CONFIG  WRT0    = OFF
  15.         CONFIG  WRT1    = OFF
  16.         CONFIG  WRTB    = OFF
  17.         CONFIG  WRTD    = OFF
  18.         CONFIG  EBTR0   = OFF
  19.         CONFIG  EBTR1   = OFF
  20.         CONFIG  EBTRB   = OFF
  21.  
  22.         CBLOCK 0x000
  23.         VL
  24.         VH
  25.         VS
  26.         W_TEMP
  27.         STATUS_TEMP
  28.         BSR_TEMP
  29.         INTER
  30.         B1
  31.         ENDC
  32.  
  33.         ORG             0x00
  34.         GOTO    INICIO
  35.         ORG             0x008
  36. ;       GOTO BAJA
  37.         RETFIE;ALTA_PRIORIDAD
  38.         ORG             0x018
  39.         GOTO BAJA
  40.  
  41.         ;RETFIE
  42. #DEFINE SERVO1 PORTB,6
  43. VALORH  EQU     0XFF
  44. VALORL  EQU     0XCF
  45. ;**************************************************************
  46. INICIO
  47.         BSF             OSCCON,IRCF2    ;CONFIGURO EL OSCILADOR INTERNO
  48.         BSF             OSCCON,IRCF1    ;A 16MHZ
  49.         BSF             OSCCON,IRCF0
  50. ;
  51.         CLRF    SLRCON
  52.         CLRF    ANSEL                   ;CONFIGURAMOS TODOS LOS PINES
  53.         CLRF    ANSELH                  ;COMO I/O DIGITAL
  54.        
  55. ;CONFIGURACION DE LOS PUERTOS
  56.         CLRF    PORTA                                   ;PONGO TODAS LAS SALIDAS
  57.         CLRF    PORTB                                   ;EN NIVEL BAJO
  58.         CLRF    PORTC
  59.         CLRF    LATA
  60.         CLRF    LATB
  61.         CLRF    LATC
  62.         CLRF    TRISA                                   ;CONFGIRO LOS PUERTOS
  63.         CLRF    TRISB                                   ;COMO SALIDAS
  64.         CLRF    TRISC
  65. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  66.         BSF             RCON,7; DEFINIMOS INTERRUPCIONES COMO BAJA PRIORIDAD
  67.         CLRF    IPR1
  68.         CLRF    IPR2
  69.         CLRF    INTCON
  70.         BSF             PIE1,TMR1IE; ACTIVAMOS INTERRUPCION TMR1
  71.         CLRF    T1CON; CONFIGURAMOS EL TIMER 1 CON PREESCALER 1 Y DE 8 BITS
  72.         BSF             T1CON,7
  73.         CALL    CONF_ADC
  74.         CALL    INI_TMR
  75.         CLRF    VL
  76.         CLRF    VH
  77.         CLRF    VS
  78.         CLRF    B1; BANDERA DE AYUDA
  79.        
  80.         MOVLW   VALORH
  81.         MOVWF   TMR1H
  82.         MOVWF   VALORL
  83.         MOVWF   TMR1L
  84.         ; ANTES DE ENTRAR AL LOOP ACITVAMOS LAS INTERRUPCIONES Y TMR1
  85.         BCF             PIR1,TMR1IF; LIMPIAMOS BANDERA DE INTERRUPCION TMR1
  86.         CALL    SET_SERVO
  87.         BSF     T1CON,TMR1ON; ACTIVAMOS TMR0
  88.         BSF     INTCON,6
  89.         BSF             INTCON,7; HABILITAMOS INTERRUPCIONES
  90.         BSF     T1CON,7
  91.         CALL    CON_CH0
  92.         MOVFF   VH,VS
  93.         MOVLW   0XFF
  94.         MOVWF   INTER
  95. PRINCIPAL
  96.         CALL    CON_CH0
  97.         MOVFF   VH,PORTC
  98.         GOTO    PRINCIPAL
  99. CONF_ADC
  100.         MOVLW   B'00001110'; JUSTIFICADO A LA IZQUIERDA
  101.         MOVWF   ADCON2
  102.         CLRF    ADCON1
  103.         MOVLW   B'00000000'; VAMOS A SELECCIONAR EL ADC 0 Y HABILITAR EL PUERTO DE CONVERSIÓN
  104.         MOVWF   ADCON0
  105.         BSF             TRISA,0
  106.         BSF     ANSEL,ANS0              ;CONFIGURAMOS LA ENTRADA A0 PARA LEERLA
  107.         RETURN
  108. CON_CH0
  109.         BSF     ADCON0,ADON
  110.         BSF     ADCON0,GO
  111. PROCESO
  112.         BTFSC   ADCON0,GO
  113.         GOTO    PROCESO
  114.         MOVFF   ADRESH,VH
  115.         MOVFF   ADRESL,VL
  116.         RETURN         
  117. SET_SERVO
  118.         BSF     SERVO1
  119.         MOVLW   .9     
  120.         CALL    RET_X100us
  121.         RETURN 
  122. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ENTRA A VECTOR DE INTERRUPCION
  123. BAJA
  124.         MOVFF   W,W_TEMP
  125.         MOVFF   BSR,BSR_TEMP
  126.         MOVFF   STATUS,STATUS_TEMP
  127.         BTFSS   PIR1,TMR1IF
  128.         RETFIE
  129.         BTFSC   B1,0
  130.         GOTO    INTER17
  131.         BCF     T1CON,TMR1ON
  132.         BCF             PIR1,TMR1IF
  133.         MOVLW   VALORH
  134.         MOVWF   TMR1H
  135.         MOVLW   VALORL
  136.         MOVWF   TMR1L
  137.  
  138. ;       MOVF    VS,W
  139. ;       BTFSS   STATUS,Z
  140. ;       GOTO    $+2
  141. ;       GOTO    CLEAR_SERVO1
  142.  
  143.         DECFSZ  VS,F
  144.         GOTO    KEEP_SERVO1
  145. CLEAR_SERVO1
  146.         BSF             B1,1
  147.         BCF             SERVO1
  148. KEEP_SERVO1
  149.         MOVFF   W_TEMP,W
  150.         MOVFF   BSR_TEMP,BSR
  151.         MOVFF   STATUS_TEMP,STATUS
  152.         BSF     T1CON,TMR1ON
  153.         DECFSZ  INTER,F
  154.         RETFIE
  155.         BSF     PORTB,7
  156.         ;GENERAMOS AQUI LA INTERRUPCION DE 17.9ms
  157.         MOVLW   0X74
  158.         MOVWF   TMR1H
  159.         MOVLW   0X2F
  160.         MOVWF   TMR1L
  161.         BSF     T1CON,5
  162.         BSF             T1CON,4; PRENDEMOS PREESCALER DE 8
  163.         BSF     B1,0
  164.         BCF             SERVO1
  165.         RETFIE
  166. INTER17
  167.         CALL    SET_SERVO
  168.         MOVFF   VH,VS
  169.         BCF             B1,0
  170.         BCF             T1CON,5
  171.         BCF             T1CON,4
  172.         MOVLW   VALORH
  173.         MOVWF   TMR1H
  174.         MOVLW   VALORL
  175.         MOVWF   TMR1L
  176.         MOVFF   W_TEMP,W
  177.         MOVFF   BSR_TEMP,BSR
  178.         MOVFF   STATUS_TEMP,STATUS
  179.         RETFIE
  180.  
  181.        
  182. #INCLUDE<RET.INC>
  183.  
  184.         END

Desconectado Pinolillo16

  • PIC18
  • ****
  • Mensajes: 324
Re: Practicas con el PIC18F13K22
« Respuesta #20 en: 21 de Agosto de 2014, 15:48:38 »
Aqui les platico que tuve muchos problemas para las interrupciones y fue hasta que limpie los dos bytes de interrupciones de alta prioridad