Autor Tema: Pic 18f45j10  (Leído 10563 veces)

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

Desconectado Trino

  • PIC10
  • *
  • Mensajes: 45
Pic 18f45j10
« en: 15 de Febrero de 2007, 14:14:26 »
Hola a todos soy nuevo en el foro y queria consultar una duda que tengo que me lleva ya varios dias con dolores de cabeza. Yo siempre he trabajado con los PIC's de la serie 16 y no me han dado practicamente ningún problema pero ahora tengo que trabajar con el 18f45j10 y tengo serios problemas para hacerlo funcionar. Ya he ojeado bastante bien el datasheet de microchip pero puede que me quede algo sin pulir. Para programar este PIC estoy utilizando el MPLAB ICD2 pero creo que no me lo programa bien ya que cuando estoy programandolo me saltan varios warnings pero que apesar de eso el programa indica que si que lo ha programado.
Si alguien me pudiera ayudar le estaria muy agradecido.
Saludos a todos.

Desconectado vszener

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2395
Re: Pic 18f45j10
« Respuesta #1 en: 15 de Febrero de 2007, 14:20:33 »
Quizás sea problema de tú código, subelo para que se pueda revisar.



Suerte!!! ;)
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado Trino

  • PIC10
  • *
  • Mensajes: 45
Re: Pic 18f45j10
« Respuesta #2 en: 15 de Febrero de 2007, 14:37:39 »
Lo que estoy probando es la comunicacion entre dos pic's via I2C el programa lo realice anteriormente para un 16f877 y funcionaba pero al realizar los cambios necesarios quedo:
;PIC ESCLAVO
;PROGRAMA QUE REALIZA EL PROTOCOLO DE COMUNICACION I2C EN MODO ESCLAVO

   LIST P=PIC18F45J10
   #include P18F45J10.INC


         ORG      0000H      
         GOTO   INICIO   
         ORG      0008H

         CALL   INTERR
         MOVLW   B'11000000'
         MOVWF   INTCON      
         RETURN

      
INICIO

         
         MOVLW   B'00011000'      ;CONFIG COMO I2C_RC3,RC4
         MOVWF   TRISC      
         MOVLW   B'00001000'      ;HABILITA LA INTERR I2C
         CLRF   TRISB
         MOVWF   PIE1
         MOVLW   B'01000000'      ;DIRECCION DEL ESCLAVO
         MOVWF   SSP1ADD
         BSF   PORTB,7
         MOVLW   B'00110110'      ;HABILITA MODULO I2C
         MOVWF   SSP1CON1
         MOVLW   B'11000000'      ;HABILITA INTERR GLOBAL      
         MOVWF   INTCON
   
CICLO      GOTO   CICLO         



;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;SUBRUTINA DE INTERRUPCION POR LLEGADA DE DATOS EN I2C
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
INTERR      BTFSS   PIR1,3         ;PREGUNTA INTERR I2C
         RETURN   
         BCF      PIR1,3         ;PONE A 0 BANDERA DE INTERR I2C
         BTFSC   SSP1STAT,5
         GOTO   DATOS

DIRECCION   BCF      SSP1STAT,0      ;CLAREA LA BANDERA BF
         CLRF   SSP1BUF         ;CLAREA LA DIRECCION RECIBIDA
         BCF      SSP1CON1,6      ;CLAREA LA BANDEERA SSPOV
         RETURN


DATOS      BCF      SSPSTAT,0      ;CLAREA LA BANDERA BF
         MOVF   SSP1BUF,0      ;MUEVE EL DATO RECIBIDO AL WORK
         MOVWF   PORTB         ;MUESTRA EL DATO POR EL PUERTO B
         CLRF   SSP1BUF
         BCF      SSP1CON1,6      ;SE CLAREA LA BANDERA SSPOV
         RETURN


         END   


Y el codigo del maestro es similar si me lo pedis tambien lo subiré pero la cuestion es que no hace absolutamente nada a pesar de que yo indico que se encienda un LED del por RB7 de antemano antes de esperar la señal del maestro.

Gracias por la contestacion
Saludos

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Pic 18f45j10
« Respuesta #3 en: 15 de Febrero de 2007, 14:40:20 »
Trino, la migración no es tan simple como parece.  Una vez que hagas andar al pic ya el resto sí será más fácil pero precisamente es en esto de 'hacerlo andar' donde difieren más un 16F y un 18FxxJxx

¿usas el capacitor de Vddcore/vcap?  Si no es así, te sugiero leas en el datasheet la sección 20.3 On-Chip Voltage Regulator.

¿Has leído del registro OSCTUNE y OSCCON ?


Saludos

« Última modificación: 15 de Febrero de 2007, 14:42:03 por maunix »
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado Trino

  • PIC10
  • *
  • Mensajes: 45
Re: Pic 18f45j10
« Respuesta #4 en: 16 de Febrero de 2007, 06:06:18 »
La verdad es que no, voy a echarle un vistazo y ya os comento.
Muchisimas gracias

Desconectado Trino

  • PIC10
  • *
  • Mensajes: 45
Re: Pic 18f45j10
« Respuesta #5 en: 19 de Febrero de 2007, 07:02:36 »
Hola a todos, ya he revisado los registros OSCTUNE y OSCCON y ya uso el capacitor de Vddcore/vcap pero lo he probado con mi proyecto y sigue sin funcionas. He probado a hacer un programa muy sencillo para ver si me funciona el programador y los pic's, es un programa muy sencillo en el que enciendo unos LED's, es el siguiente:
   
                List P=PIC18F45J10
   #include P18F45J10.INC
   
         ORG      0000H      
         GOTO   INICIO   
         ORG      0018H

      
INICIO
   MOVLW   0xFF
   MOVWF   BSR
   MOVLW   B'00001010'
   MOVWF   OSCCON
   BCF      OSCTUNE,PLLEN
   MOVLW    B'01000000'
   MOVWF   TRISB
   BSF      PORTB,0
   BSF      PORTB,1
   BSF      PORTB,2
   BSF      PORTB,3
   BSF      PORTB,4
   BSF      PORTB,5

   END

Al cargarlo en el PIC sigue sin funcionar si alguien sabe a que se debe le agradecería muchisimo su ayuda.
Estoy utilizando un cristal de cuarzo de 4 Mhz con condensadores de 27 pF como dice en el datasheet y he confugurado para que trabaje solo con el oscilador primario.
Gracias por su ayuda y su tiempo.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Pic 18f45j10
« Respuesta #6 en: 19 de Febrero de 2007, 11:41:22 »
Trino, he aquí un ejemplo que debiera funcionar.

Código: ASM
  1. List P=PIC18F45J10
  2.         #include "P18F45J10.INC"
  3.  
  4.  
  5.         config DEBUG   = OFF
  6.         config XINST   = OFF
  7.         config STVREN  = ON          ; Stack Overflow/Underflow Reset = encendido
  8.         config WDTEN   = OFF         ; Watchdog apagado
  9.         config CP0     = OFF         ; Code protection deshabilitados
  10.         config FCMEN   = OFF         ; fail safe clock monitor
  11.         config IESO    = OFF
  12.         config FOSC2   = ON
  13.         config FOSC    = HS          ; Osc section bits
  14.         config WDTPS   = 1
  15.         config CCP2MX  = DEFAULT
  16.  
  17.  
  18.  
  19.    
  20.         ORG     0000H      
  21.         GOTO    INICIO  
  22.  
  23.  
  24.         ORG     0100H
  25. INICIO
  26.         MOVLW   0xFF
  27.         MOVWF   BSR
  28.         MOVLW   B'00000000'        
  29.         MOVWF   OSCCON
  30.         movlw   b'00000000'         ;PLLen OFF
  31.         movwf   OSCTUNE
  32.         MOVLW   B'01000000'
  33.         MOVWF   TRISB
  34.        
  35.        
  36.         BSF     LATB,0
  37.         BSF     LATB,1
  38.         BSF     LATB,2
  39.         BSF     LATB,3
  40.         BSF     LATB,4
  41.         BSF     LATB,5
  42.  
  43. LOOP:
  44.         goto    LOOP
  45.  
  46.         END


Además, dejame explicarte qué cosas veo con algún que otro problema en tu código.

1) Has definido un estado en OSCCON que es algo que el micro va a setear, tu solo dejalo en 0.
2) En el datasheet habla del modo HS y no XT, es decir que le debes poner al menos un cristal de 8MHz.  Lo de 4Mhz creo que es algo que han copiado/pegado de otro datasheet pero no debieras tenerlo en cuenta, al menos no por ahora hasta que no estes seguro de que el pic funciona bien a 8MHz.
3) Has iniciado el código en 0x0018.  Si bien no producirá ningún problema en este código, es la posición donde irán las interrupciones de bajo nivel de prioridad por lo cual te recomiendo que no lo ubiques ahí al código.
4) No hay un bucle infinito en tu software, luego de la última instrucción.  El pic seguirá ejecutando lo que haya en la memoria como NOP's hasta que se haga un overflow del Program Counter y se reinicie el software. Esto no es equivalente a que se reinicie el pic pero sí verás que el programa se ejecuta una y otra vez y para ciertas aplicaciones (o para la mayoría de las aplicaciones) esto inducirá a errores.
5) Cuando uses un puerto como salida, usa el correspondiente registro LATx del mismo.
6) No dejes al azar los configuration bits, hazlo tú manualmente desde el código siempre.  Esto es una buena costumbre que te evitará muchos dolores de cabeza ya que estos pics tienen muchas más opciones de configuración y errar alguna puede producir un problema.

Saludos
« Última modificación: 19 de Febrero de 2007, 11:43:24 por maunix »
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado Trino

  • PIC10
  • *
  • Mensajes: 45
Re: Pic 18f45j10
« Respuesta #7 en: 19 de Febrero de 2007, 13:36:48 »
Muchisimas gracias por tu ayuda mauricio, pero que diferencia hay entre los puertos LAT y los PORT ya que segun he visto hacen los mismo.
Saludos y gracias.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Pic 18f45j10
« Respuesta #8 en: 19 de Febrero de 2007, 15:34:57 »
Muchisimas gracias por tu ayuda mauricio, pero que diferencia hay entre los puertos LAT y los PORT ya que segun he visto hacen los mismo.
Saludos y gracias.

Para no escribir lo mismo varias veces, ve a este link donde se trató el tema.  Puntualmente puedes leer mis explicaciones.

http://www.todopic.com.ar/foros/index.php?topic=11553.0

Si aún tienes dudas, vuelve a preguntar.

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado Trino

  • PIC10
  • *
  • Mensajes: 45
Re: Pic 18f45j10
« Respuesta #9 en: 21 de Febrero de 2007, 06:49:27 »
Hola a todos de nuevo, ya tengo bastante claro el funcionamiento y la configuración.
Estoy utilizando un cristal de 8 Mhz con los condensadores correspondientes lo que no tengo muy claro es el valor de la resistencia que se pone que sale de OSC2 ni del condensador de VDDCORE/Vcap, que supongo que no tendran mucha importancia.
He cargado el programa que me paso maunix y sigue sin funcionarme, creo que es problema del programador.
Yo utilizo el MBLAB ICD2 sin aplicarle el adaptador que me saca 5v le conecto directamente sobre Vdd los 3,2 Voltios y a la hora de programar el pic me da varios warnings que son los siguientes:

MPLAB ICD 2 Ready
Programming Target...
ICDWarn0052: MPLAB ICD 2 cannot validate a target device. Please make sure that the target device is connected and properly powered. Select "OK" to continue, or "CANCEL" to abort the operation
...Validating configuration fields
...Erasing Part
...Programming Program Memory (0x0 - 0x7FF7)
Verifying...
ICDWarn0052: MPLAB ICD 2 cannot validate a target device. Please make sure that the target device is connected and properly powered. Select "OK" to continue, or "CANCEL" to abort the operation
...Program Memory
...Verify Succeeded
Programming Configuration Bits
ICDWarn0052: MPLAB ICD 2 cannot validate a target device. Please make sure that the target device is connected and properly powered. Select "OK" to continue, or "CANCEL" to abort the operation
.. Config Memory
...Verify Succeeded
...Programming succeeded
21-Feb-2007, 10:37:08

Si alguien puede ayudarme le estaria muy agradecido porque ya no se que hacer.
Muchas gracias a todos.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Pic 18f45j10
« Respuesta #10 en: 21 de Febrero de 2007, 08:40:19 »
1) El capacitor de VddCore/Vcap usa uno de 2.2uF , es más que suficiente
2) En el pin de Vpp, pon un diodo en sentido directo hasta el pin Vpp de tu ICD2. 


                       diodo
   PIC_pin1 ----    >|   -----  Pin Vpp ICD2


                         
3) Elige que el ICD2 no alimente el PCB sino que la alimentación esté en el pcb.

Me temo que si no elegiste bien estas opciones y si no tenías bien seleccionado tu 18F45j10 lo hayas quemado, por las siguientes razones.

a) No soportan 13V en el pin de Vpp cómo si lo hacen la mayoría de los pics
b) No soportan alimentación de 5V aunque sí toleran 5V en algunos de sus pines, incluyendo por supuesto los de programación.

Saludos


PD: no vendría mal que subieras un esquemático de cómo tienes armado tu circuito.  Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado Trino

  • PIC10
  • *
  • Mensajes: 45
Re: Pic 18f45j10
« Respuesta #11 en: 21 de Febrero de 2007, 12:31:35 »
Hola, el montaje que realizo os lo adjunto.

La opcion esa de que no alimente el ICD2 el PCB, no estoy seguro, pero si es la que esta en la barra de herramientas:
programmer-->settings y luego en la pestaña power, aparece un cuadro para seleccionarla que pone: Power target circuit from MPLAB ICD 2 (5V Vdd), que con el 18f45j10 no me deja seleccionarla si para otros pic de la serie 16 que he programado sin ningun problema.
No he encontrado en ningun sitio la opcion de la alimentacion para el VPP, ya que no se si sera la que he comentado antes.
Saludos y gracias

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Pic 18f45j10
« Respuesta #12 en: 21 de Febrero de 2007, 12:39:46 »
Trino el ICD2 que tienes es original? ya que si es asi, no es necesario colocar diodos en Vpp, hay que colocarlo directico a ICSP_VPP, tambien con el ICD2 original, debes "alimentar" tu con 3.3V el ICD2. digo alimentar entre comillas porque el realmente se alimenta del USB, pero necesita los 3.3v tuyos, para adecuar las señales de salida y para que el pueda sensar con cuanto estas alimentando el PIC.

A mi se me presentaron errores hasta el cansancio con un PIC 18LF254J10, hasta que encontre el error.

Midele el voltaje en el pin Vcore/Vcap. y nos comentas.



Quita el diodo 1n4148 y quita la resistencia de 100 en MCLR. El ICSP_VPP es de solo 3.3V, con eso le quitas voltaje.
« Última modificación: 21 de Febrero de 2007, 12:46:51 por PICmouse »

Desconectado Trino

  • PIC10
  • *
  • Mensajes: 45
Re: Pic 18f45j10
« Respuesta #13 en: 21 de Febrero de 2007, 12:49:31 »
El ICD2 que tengo si que es original, el esquema que he puesto es el del PIC ya puesto para trabajar.
Para programarlo lo conecto al programador universal y con una fuente aparte le introduzco los 3.3V por Vdd pero a la patilla Vddcore/Vcap no le pongo nada, esa patilla no la tengo conectada a la hora de programar el PIC.
Te refieres que tengo que alimentarla cuando estoy programando?
Yo he medido la tensión de Vddcore/Vcap una vez programado y obtengo 2.5V aproximadamente pero sigue sin funcionar nada.
Saludos y gracias a todos por su tiempo.

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Pic 18f45j10
« Respuesta #14 en: 21 de Febrero de 2007, 12:53:07 »
A un programador universal? eso quiere decir que le tienes una base para trabajar con el ICD2 con integrados Dip. Bueno pues en eso debe estar el problema. el capacitor de 2.2uF, debe estar en Vcap hasta cuando se va a programar. ahora la pregunta del millon.  Estas usando un 18F o un 18LF??

es posible saber el esquematico de esa base en la que colcoas el PIC para programarlo para ver si hay algun error en eso?