Autor Tema: Cada PIC con un ID unico?  (Leído 15593 veces)

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

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Cada PIC con un ID unico?
« en: 31 de Octubre de 2011, 16:55:24 »
Hola!
Estoy planteandome un proyecto en el que necesito que MUCHOS microcontroladores tengan el mismo codigo, pero que cada uno tenga un ID unico.
Tiene el MPLAB en conjunto con el PICKIT3 alguna funcion para hacer esto?

No puedo guardar la ID en una constante ni en la EEPROM ya que sino tendria que ir cambiando manualmente el ID cada vez que programo.

Salu2
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re: Cada PIC con un ID unico?
« Respuesta #1 en: 31 de Octubre de 2011, 17:04:31 »
una solucion es agregarle un ds1820 a cada PIC y usar el id del ds1820 para identificar el equipo

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: Cada PIC con un ID unico?
« Respuesta #2 en: 31 de Octubre de 2011, 17:05:16 »
Todos los PIC tienen un espacio en la memoria de configuración destinada a guardar una ID: se conocen cómo "ID Locations". Pe.: en PIC16 tienes 4 "palabras".

Lo que desconozco es si MPLAB tiene alguna herramienta para programar estas posiciones de forma correlativa

1 saludo.
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Re: Cada PIC con un ID unico?
« Respuesta #3 en: 31 de Octubre de 2011, 17:15:56 »
una solucion es agregarle un ds1820 a cada PIC y usar el id del ds1820 para identificar el equipo

Un DS1820 no es un termometro digital? Bueno en caso de que tenga un ID interno, me parece una solucion un poco cara para agregar un ID al PIC... en Farnell cuesta casi 7€ c/u!

Manwenwe, creo haber visto lo que cuentas en algun datasheet, pero en que posicion de memoria se encuentra eso? El codigo es accesible desde el "programa run"
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: Cada PIC con un ID unico?
« Respuesta #4 en: 31 de Octubre de 2011, 17:23:18 »
Ummm primero disculparme: no estoy seguro de si estas posiciones existen para PICs de 16bit y 32bit. Para los de 8 seguro!!!

Para PIC16 y PIC18 las tienes de la 0x2000 a la 0x2003 (memoria de configuración). Puedes acceder a ellas desde el compilador por medio de funciones preecompiladas: al igual que puedes escribir la palabra de configuación desde el compilador...

Lo siento: es que hace años que no toco el tema.... Si crees que te es de utilidad te busco cómo hacerlo. Por cierto: ¿qué familia de micro sería? y ¿en qué lerguaje está tu firmware?

 
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Cada PIC con un ID unico?
« Respuesta #5 en: 31 de Octubre de 2011, 18:10:29 »
Creo que esto es lo que buscas:
El software Winpic800 junto con el GTP+ (seguramente con los otros que soporta debe poder hacerlo también) puede asignar un ID automático o por secuencia según uno inicial que puedes elegir, ademas de poder dar vuelta los nibbles del ID, etcétera.

Aquí una imagen de la configuración del programa para hacerlo de uno de esos modos:



Seguramente las herramientas de Microchip deben poder hacerlo.
Los ICDs de CCS también lo soportan...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Re: Cada PIC con un ID unico?
« Respuesta #6 en: 01 de Noviembre de 2011, 00:43:30 »
Desde MPLAB lo veo poco alentador:


Por lo visto se puede poner un ID manualmente, pero solo es accesible desde el PC cuando entra en modo programacion. Algun pic de gama superior (no se cual, pero con mas de las 35 instrucciones basicas) puede acceder a este ID desde el programa en ejecucion.
Voy a ver si desde el IDE del CCS hay alguna opcion, aunque no se si podre programar con el Pickit3 desde ahi.
Sino tal vez pueda crear algun programita con VB que modifique aleatoriamente el valor de una constante del HEX cada 10 segundos, y asi cuando haga la fabricacion (100 uds tal vez) cada vez que programe el id sera diferente pero el codigo sera el mismo. El checksum me dara problemas?
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Cada PIC con un ID unico?
« Respuesta #7 en: 01 de Noviembre de 2011, 02:43:54 »
Yo no me complicaría la vida y lo haría como dice Marcos.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Cada PIC con un ID unico?
« Respuesta #8 en: 01 de Noviembre de 2011, 08:14:13 »
El IDE de CCS solo soporta al ICD2 y al ICD3 de Microchip, el Pickit no es soportado, lo lamento.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: Cada PIC con un ID unico?
« Respuesta #9 en: 01 de Noviembre de 2011, 09:43:25 »
Perdón: lo que dije no era a través de funciones precompiladas sino directivas de preprocesador.

Marttyn, échale un vistazo a la sección 4.37:

http://ww1.microchip.com/downloads/en/devicedoc/33014j.pdf

1 saludo.
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1836
    • IDEAA
Re: Cada PIC con un ID unico?
« Respuesta #10 en: 01 de Noviembre de 2011, 12:16:01 »
Perdón: lo que dije no era a través de funciones precompiladas sino directivas de preprocesador.

Marttyn, échale un vistazo a la sección 4.37:

http://ww1.microchip.com/downloads/en/devicedoc/33014j.pdf

1 saludo.

Genial amigo!
Por un lado es la confirmacion que necesitaba, aunque por otro es la informacion que no queria oir...  :oops:
A todos los PICs se les puede grabar un ID durante la programacion, pero solo los PIC18 y en adelante supongo pueden leer ese ID durante la ejecucion.
Tendre que guardarlo en el pic como constante en la rom o la eeprom manualmente uno a uno :(
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: Cada PIC con un ID unico?
« Respuesta #11 en: 01 de Noviembre de 2011, 12:23:32 »
No pongo la mano en el fuego pero yo te diría que no pudes leer esa ID en ejecución: sólo mediante ICSP.

Si necesitar leearla yo me decantaría com dices por EEPROM o FLASH. Si grabas en flash, siempre que tu micro sea de los "nuevos" y te deje leer en ejecución, ten en cuenta que grabas "bloques" por lo que es probable que sacrifiques algunos bytes...

saludos
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: Cada PIC con un ID unico?
« Respuesta #12 en: 01 de Noviembre de 2011, 12:30:24 »
Si te fijas en los datasheet de los micros en los que puedes acceder a la flash en ejecución verás que:

The Flash program memory is readable, writable and
erasable during normal operation over the entire VDD
range.


No es lo mismo "program memory" que "config memory" aq las dos sean parte de la flash. Las "ID locations" están dentro de la "config memory"....

saludos!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Cada PIC con un ID unico?
« Respuesta #13 en: 01 de Noviembre de 2011, 12:50:30 »
siempre puedes usar la User ID Memory, esta se programa tanto por ICSP como por software.

Son 8bytes en la direccion 0x20000 de la memoria. Para acceder a ellos debes hacerlo como una lectura de ROM, y para la escritura  como una escritura flash. Creo que activando el bit CFGS se podria escribir, pero no estoy muy seguro, esto es aplicable a los pic18 no se si los 16, 24... funcionan igual.

Desconectado AcoranTf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1099
Re: Cada PIC con un ID unico?
« Respuesta #14 en: 01 de Noviembre de 2011, 18:48:41 »
No se si estare en lo cierto al pensar que lo que quieres es que en un grupo de micros interconectados y ejecutando el mismo codigo, cada uno sepa cuando alguno de los demas "desea" enviarle algo a el y solo a el. Si es asi, creo que no necesitas complicarte tanto la vida, simplemente memoriza un identificador en la eeprom distinto para cada uno y en la inicializacion lo lees y lo copias a una variable, despues bastara una rutina de interrupcion que lea los datos del "bus" de comunicaciones y tenga en cuenta dicha variable para saber cuando el dato es para el.
Si no es esto lo que quieres disculpa, pero no entiendo la finalidad de ese ID.

Saludos.