Autor Tema: Proyectos con 18F67K22  (Leído 6344 veces)

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

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Proyectos con 18F67K22
« en: 17 de Abril de 2014, 15:09:13 »
hola.de nuevo salto en la eleccion de un microcontrolador pic.el ultimo fue el 18F2550.pero se me queda pequeño en cuanto a algunos perifericos.
asi que me he decantado por el 18F67K22. que la verdad.anque es de la misma serie.parece que es mas complicado.aunque complicados lo son todos
si no se saben de sus caracteristicas.asi que algo tan simple como usar el modulo A/D.se me esta atrabesando.

practicamente todos los ejemplos que he buscado estan en C.y mi intencion es programarlo en asm.igual que hago con el 18F2550.
no se que puede estar pasando.he tenido que configurar mas cosas que las que tenia que configurar en el 18F2550.y todabia no
he podido hacerlo funcionar.

alguien sabe de algun ejemplo en asm? mi intencion es ir insertando ejemplos de sus respectivos modulos.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 624
Re: Proyectos con 18F67K22
« Respuesta #1 en: 17 de Abril de 2014, 15:38:11 »
Hace tiempo que no programo en ASM, pero si sube algun proyecto que tenga puedo echarle una mano para revisarlo.

Saludos
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Proyectos con 18F67K22
« Respuesta #2 en: 17 de Abril de 2014, 16:23:13 »
gracias por tu interes sander.nada mas ver tu mensaje he dicho a hacer una prueba y ya he atinado.o almenos ya he obtenido datos en el registro ADRES.

pondre por aqui el ejemplo.cuando funciona algo,lo facil que parece.pero cuando no funciona.... :?
y ademas cuando el pic es diferente.y algo no funciona,no se sabe ni por donde mirar.porque son muchisimas caracteristicas añadidas.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Proyectos con 18F67K22
« Respuesta #3 en: 17 de Abril de 2014, 16:38:03 »
Hola Groundman

Normalmente lo que da lata al principio es el configurar el reloj del micro. Imagino que de la datasheet ya barriste todo el capítulo 2.0 GUIDELINES FOR GETTING STARTED WITH PIC18FXXKXX MICROCONTROLLERS.

Checa la sección de los osciladores y ve qué debes poner en los registros de configuración del PIC. Luego ve qué debes poner en tiempo de ejecución para echar a andar el reloj.

Saludos!

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Proyectos con 18F67K22
« Respuesta #4 en: 17 de Abril de 2014, 17:27:31 »
si.migsantiago. ya me he buelto loco con eso. :z) he tenido que leerme muchas cosas del datasheet.hay muchas diferencias entre los dos pic.incluido registros
que han cambiado su funcionamiento.

creo que me voy a jugar bastante con este pic.  :D

y adjunto el proyecto.lo he puesto de la forma mas simple.y con la simulacion con proteus.el potenciometro que vale es el que esta conectado por AN0.
la salida por PORTB.los servos no sirven en este proyecto.los pondre en el siguiente.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Proyectos con 18F67K22
« Respuesta #5 en: 17 de Abril de 2014, 20:34:53 »
ahora estoy liado con los servos.resulta que quiero controlar 10 servos por PWM.por el momento mi programa controla 5.pero ese no es el problema
la cosa esta en que uso el TMR2 para controlar los tiempos.ya que con este se pueden gestionar bastantes servos.

pero no logro superar el  tiempo de ciclo de 255us.el prescaler lo tengo a 16.que es lo maximo que divide la frecuencia.el postscaler
no sirve para la gestion del tiempo.y los servos funcionan entre 1 a 2ms.

y no quiero bajar la velocidad del pic.ya que me va ha hacer falta para otras gestiones.hay alguna forma que no sea la de cambiar de temporizador?
no se si habra alguna gestion de tiempos interna.que divida la velocidad del TMR2 pero no del pic.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Proyectos con 18F67K22
« Respuesta #6 en: 17 de Abril de 2014, 21:42:06 »
por lo que he visto en el datasheet.parece que voy a tener que vajar la velocidad de fosc a 16Mhz. los registros que gestionan el PWM.son

TMR2,4,6,8,10 y 12.  y estos cogen el clk de la frecuencia principal.y parece ser que tampoco puedo meterles una señal externa. :(
es mala pata.ya que estos servos son vastante baratos.2€ cada uno.si fueran digitales no habria ningun problema.pero estos son mas caros.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Proyectos con 18F67K22
« Respuesta #7 en: 18 de Abril de 2014, 04:46:36 »
Hace algun tiempo que no hago nada con servos, pero siempre he hecho la temporizacion de 20mS con TIMER0 y las temporizaciones del DUTTY normalmente entre 0,5 y 2,5mS (algunos 0,3 y 2,3mS) siempre por bucle, y nunca he tenido problemas para controlar todos los servos sin problema.

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Proyectos con 18F67K22
« Respuesta #8 en: 18 de Abril de 2014, 14:38:15 »
resulta de que hize un proyecto de un termostato.y que simulado en proteus y en circuito real funciona perfectamente.pues le añadi un servo.
y tambien funciona perfectamente.en este proyecto uso un cristal de 4Mhz y conmuto los osciladores para que trabaje a 48Mhz.
y con el PWM consigo hasta 2ms.

pues me extrañaba de que con 64Mhz me da un tiempo maximo de 255uS.asi que me he ido al proyecto donde funcionaba el servo.donde tengo un cristal
de 4Mhz y el pic configurado a 48Mhz.y me he dado cuenta de que el pic esta funcionando a 1uS por instruccion.que son 4Mhz

parece que me he equivocado al configurar el oscilador interno.

no se si se podra poner un cristal de 4Mhz y que el TIMER2 funcione con esta frecuencia.y configurando el PLL el pic trabaje a 64Mhz.
la verdad que no entiendo muy bien la configuracion de los osciladores internos.a la vista esta el error del anterior proyecto.

PD:el tiempo que tarda una instruccion nop a 64Mhz es de 62.5uS ? no valla a estar confundido.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 624
Re: Proyectos con 18F67K22
« Respuesta #9 en: 18 de Abril de 2014, 14:48:20 »
Hola groundman, a 64 MHz el tiempo de instruccion es de 4/64M lo que equivale a 62.5 nano segundos o 16 MIPS.

Alguna vez hice la prueba de trabajar  a 64 MHz y no da el tiempo del TMR2 para generar la señal de 20 ms para los servos analogicos, lo resolvi utilizando el modo COMPARE del modulo CCP para generar la base de tiempo de 20 ms, y usaba el TMR2 para variar el ancho de pulso.


Saludos
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Proyectos con 18F67K22
« Respuesta #10 en: 18 de Abril de 2014, 17:55:22 »
si.me he confundido.queria decir 62.5nS .referente al compare mode.nunca lo he utilizado.se podran usar todas las salidas PWM?
creo que son 3 ECCP Y 7 CCP.

otro problema que me esta volviendo loco.es el tema de la frecuencia de reloj del pic.como dige tengo un proyecto de un termostato montado.
y estoy confundido con respecto a la frecuencia a la que esta funcionando.ya que el proteus me indica que el tiempo mas corto de ejecucion de
instruccion es de 1uS.cuando trabajando a 48Mhz deberia de ser de 83.3nS.

me extraña que el circuito preostato este trabajando a 4Mhz.mas que nada porque uso un teclado resistivo que consume mucho recurso.
y que una vez hize uno con menos codigo para un 16f84 y iva muy lento en la lectura de teclas.

asi que he realizado una rutina que produce una interrupcion cada 524ms. lo he probado en el circuito real con un led y funciona.tiene ese retardo.
y tambien lo tiene el proteus.asi que se puede decir que proteus y el circuto real van a la misma velocidad.y esto me hace dudar de si el
circuito real esta trabajando a 4Mhz o 48Mhz.

T1CON lo he cargado con este valor:   b'11111101'   = 1:8 Prescale value

asi que si la frecuencia es de 4Mhz (FOSC/4) = 1Mhz  (1/1Mhz)=1uS *8= 8uS *512 del tmr1= 520mS.

esto me hace pensar de que el circuito esta funcionando a 4Mhz.y no a 48Mhz.

y la palabra de configuracion creo que esta bien configurada:

 CONFIG PLLDIV =1
 CONFIG USBDIV = 1
 CONFIG CPUDIV = OSC1_PLL2

no se que me falta.para conseguir los 48Mhz
« Última modificación: 18 de Abril de 2014, 18:38:11 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Proyectos con 18F67K22
« Respuesta #11 en: 18 de Abril de 2014, 20:00:42 »
por fin.ya me funciona el pic 18F2550 a 48Mhz.por lo visto el oscilador no sirve el modo XT.almenos en la simulacion con el ICD2.estos son los fuses.

  CONFIG PLLDIV =1
  CONFIG USBDIV = 1
  CONFIG CPUDIV = OSC1_PLL2
  CONFIG FOSC =  HSPLL_HS      ;Osc por XTAL 4mhz

aunque en el proteus no detecta la configuracion de los fuses.y hay que ponerle al pic 48Mhz para que simule correctamente.

ahora hare las pruebas con el 18F67K22.haber si puedo hacer lo del comparador para que me funcionen los servos.

Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Proyectos con 18F67K22
« Respuesta #12 en: 15 de Julio de 2014, 18:07:35 »
hola de nuevo.como comentaba al principio del hilo.queria pasarme  a un pic superior de la serie 18F.

al final me decante por el 18F87K22.ya que segun el precio y las caracteristicas creo que es la mejor opcion.ya monte la PCB y estoy empezando con las practicas
en el ICD2.

por el momento son todo problemas.el primero es que segun una nota de microchip.no debe de excederse el voltage de vpp.describen como proteger
el pin MCLR con un diodo zener regulado para no pasar de 12V.al principio puse un zener de 11v porque no encontraba uno de 12v.pues el
MPLAB no reconocia el pic.puse uno de 12V y ya me lo reconoce.puedo programarlo,leerlo y borrarlo.

ahora el problema lo tengo cuando quiero usar el ICD2 en modo debugger.me sale el mensage:

ICD0083: Debug:  Unable to enter debug mode.  Please double click this message for more information.
MPLAB ICD 2 ready for next operation


creo que el problema esta en la configuracion de los fuses.pero no se si esta configuracion es la correcta para un crystal de 10Mhz.

   CONFIG    RETEN=ON      ; VREG Sleep Enable bit:
            CONFIG    INTOSCSEL=LOW   ; LF-INTOSC Low-power Enable bit:
         CONFIG    SOSCSEL=DIG   ; SOSC Power Selection and mode Configuration bits:
            CONFIG    XINST=OFF      ; Extended Instruction Set:
             CONFIG    FOSC=EC3      ; Oscillator:
            CONFIG    PLLCFG=OFF   ; PLL x4 Enable bit:
            CONFIG    FCMEN=OFF      ; Fail-Safe Clock Monitor:
            CONFIG    IESO=OFF      ; Internal External Oscillator Switch Over Mode:
            CONFIG    PWRTEN=OFF   ; Power-up Timer:
            CONFIG    BOREN=OFF      ; Brown-out Detect:
            CONFIG    BORV=1      ; Brown-out Reset Voltage bits:
            CONFIG    BORPWR=LOW   ; BORMV Power level:
            CONFIG    WDTEN=OFF;ON      ; Watchdog Timer:
            CONFIG    WDTPS=1024   ; Watchdog Postscaler:
            CONFIG    MSSPMSK=MSK5   ; MSSP address masking:
           CONFIG    MCLRE=ON      ; Master Clear Enable:
            CONFIG    STVREN=ON      ; Stack Overflow Reset:
            CONFIG    BBSIZ=BB1K   ; Boot Block Size:
         CONFIG     CCP2MX=PORTC

se le ha dado este caso  alguien?
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Proyectos con 18F67K22
« Respuesta #13 en: 15 de Julio de 2014, 18:52:22 »
YA FUNCIONA. :-/ :-/ :-/ :-/ :-/

que alivio.pensaba que me haia cargado de alguna forma el pic.he puesto esta configuracion:

  CONFIG    RETEN=OFF;ON      ; VREG Sleep Enable bit:
            CONFIG    INTOSCSEL=LOW   ; LF-INTOSC Low-power Enable bit:
         CONFIG    SOSCSEL=LOW;DIG   ; SOSC Power Selection and mode Configuration bits:
            CONFIG    XINST=OFF      ; Extended Instruction Set:
             CONFIG    FOSC=INTIO2;EC3      ; Oscillator:
            CONFIG    PLLCFG=ON;OFF   ; PLL x4 Enable bit:
            CONFIG    FCMEN=OFF      ; Fail-Safe Clock Monitor:
            CONFIG    IESO=OFF      ; Internal External Oscillator Switch Over Mode:
            CONFIG    PWRTEN=OFF   ; Power-up Timer:
            CONFIG    BOREN=OFF      ; Brown-out Detect:
            CONFIG    BORV=1      ; Brown-out Reset Voltage bits:
            CONFIG    BORPWR=LOW   ; BORMV Power level:
            CONFIG    WDTEN=OFF;ON      ; Watchdog Timer:
            CONFIG    WDTPS=1024   ; Watchdog Postscaler:
            CONFIG    MSSPMSK=MSK5   ; MSSP address masking:
           CONFIG    MCLRE=ON      ; Master Clear Enable:
            CONFIG    STVREN=ON      ; Stack Overflow Reset:
            CONFIG    BBSIZ=BB1K   ; Boot Block Size:
         CONFIG     CCP2MX=PORTC




ahora toca averiguar cual es el fuse que me genera el problema.y hacer que el pic funcione a 64Mhz.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Proyectos con 18F67K22
« Respuesta #14 en: 15 de Julio de 2014, 20:06:54 »
por ahora he conseguido hacerlo funcionar con el oscilador interno.pero eso serian 16Mhz.
si intento seleccionar en los fuses un oscilador externo a crystal.el MPLAB me salta un error.no se si sera porque hay algo mal en el circuito.
o es que el ICD2 no funciona con este modo en este pic. supongo que 64Mhz son muchos para este.o quizas sea que no se pudede poner un crystal de 10Mhz
y ha de ser otro.si el PLL multiplica x2. supongo que esl crystal ha de ser de 16Mhz.
Montando mi primera impresora 3D (Raprep Prusa i3)