TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: ASTROCAR en 18 de Febrero de 2008, 12:08:35
-
Hola buenos dias, estoy usando proton para poder establecer comunicacion con la eeprom del pic16f877a, mi idea es usar otro pic con el cual pueda leer y escribir via serial la eeprom de un pic en este caso el 16f877a pero se puede hacer para proposito general, es decir para todos los pic que soporten hardware USART.
Bueno como ya les comente mi problema es que en proton no encuentro algo que me direccion directo a la eeprom usan comunicacion serial para asi poder leer o escribir cualquier direccion que se desee de la eeprom de un determinado pic que soporte hardware USART, ojo el pic que uso para establecer la comunicacion no necesariable tiene que tener modulo hardware USART pero en este caso estoy usando otro pic igual que si tiene hardware USART ya que estoy usando el mismo tipo de pic 16f877a para tal proposito de leer y escribir la eeprom de ese segundo pic.
si alguien ya ha experimentado en el tema de la direcciones via serial y tiene algo para proton se lo agradesco que me oriente y de sus tips para hacerme una idea de comienzo.
saludos y luego muestro el esquematico de como comunicar los dos pic via serial.
-
Hola:
Perdón, pero no me ha quedado nada claro que es lo que quieres hacer, bien, asumiré que desde un pic X1 quieres enviar datos de forma serial y en un pic X2 recibirlos y guardarlos en la EEPROM.
Bueno como ya les comente mi problema es que en proton no encuentro algo que me direccion directo a la eeprom usan comunicacion serial para asi poder leer o escribir cualquier direccion que se desee de la eeprom de un determinado pic que soporte hardware USART
No se los demás pero a mi eso que escribes me parece un trabalenguas, no necesitas que un pic tenga USART para escribir en la EEPROM, puedes hacerlo siempre y cuando el PIC tenga una.
Para escribir en la eprom puedes usar:
CWRITE
Syntax
CWRITE Address , [ Variable { , Variable…} ]
Overview
Write data to anywhere in memory.
Operators
Variable - a constant, variable, or expression.
Address - a constant, variable, label, or expression that represents any valid address within the PICmicro.
Example
' Write to memory location 2000+ within the PICmicro
DEVICE 16F877 ' Needs to be a 16F87x type PICmicro
DIM VAR1 as BYTE
DIM WRD as WORD
DIM Address as WORD
Address = 2000 ' Address now holds the base address
VAR1 = 234
WRD = 1043
CWRITE Address, [10, VAR1, WRD ] ' Write to address 2000 +
ORG 2000
Para leer la eprom usa:
CREAD
Syntax
Variable = CREAD Address
Overview
Read data from anywhere in memory.
Operators
Variable - a user defined variable, of type byte, word, dword or float.
Address - a constant, variable, label, or expression that represents any valid address within the PICmicro.
Example
' Read memory locations within the PICmicro
DEVICE 16F877 ' Needs to be a 16F87x or 18Fxxxx type PICmicro
DIM VAR1 as BYTE
DIM WRD as WORD
DIM Address as WORD
Address = 1000 ' Address now holds the base address
VAR1 = CREAD 1000 ' Read 8-bit data at address 1000 into VAR1
WRD = CREAD Address+10 ' Read 14-bit data at address 1000+10
Es bueno leer la ayuda de los programas te ayudan mucho :D
Utiliza el archivo de ayuda, hay más respecto al tema, esto es lo poco que he entendido, ya que tu mensaje no me ha quedado claro.
-
ok aca le dejo la imagen de como comunicar los pic .
Nota: el pic 2 es el pic a ser leido o escrito en un determinado momento. mientras que el pic1 es que te recibira o enviara un dato a la eeprom del pic 2 no uso la palabra esclavo y maestro en este caso porque segun la teoria se le llama esclavo al que obedece a unas señal de reloj emitida por el maestro y en este caso puntual no se usa señal de reloj.
saludos y espero haber sido lo mas explicito posible. cualquier comentario o duda a lo que propongo hagalo saber.
-
Hola:
Insisto con lo de la ayuda, parece que no la has revisado, si lo hicieras verás que hay un ejemplo en el que se usa el HSERIN
HSERIN , 1000 , Timeout , [VAR1] ' Receive a byte serially into VAR1
Var1 es el que va a tener el contenido recibido, luego lo puedes grabar en la eeprom:
CWRITE Address, [10, VAR1] ' Write to address
-
Hola:
Insisto con lo de la ayuda, parece que no la has revisado, si lo hicieras verás que hay un ejemplo en el que se usa el HSERIN
HSERIN , 1000 , Timeout , [VAR1] ' Receive a byte serially into VAR1
Var1 es el que va a tener el contenido recibido, luego lo puedes grabar en la eeprom:
CWRITE Address, [10, VAR1] ' Write to address
ok ya empezo a desarrollarse el tema, me explico, para empezar ahora soy yo el que esta mas enrredado porque yo se que internamente el un pic puede leer y escribir la eeprom usando ewrite y eread y usted me informo de cwrite y cread tendria que ver cual es la diferencia entre ambas sentencias. Lo otor es que lo que necesito es eso mismo de leer y escribir en eeprom de un pic pero desde otro pic usando protocolo serial.
Lo que he revisado de la ayuda es que serialmente se usan las sentencias HRSin, HRSOut, HSerIn, HSerOut, RSin, RSOut, pero con ningulas de ellas puedo direccionar asi como lo hago en eread cual dato de la eeprom puedo leer. Nose si me explico y disculpe mi pedagogia.
saludos nuevamente
-
Hola:
Perdón me confundí, está bien las que mencionas eread y ewrite, esas usa para leer y escribir la memoria, con respecto a lo otro, mira:
Syntax
HRSOUT Item { , Item... }
Overview
Transmit one or more Items from the hardware serial port (USART) on devices that support asynchronous serial communications in hardware.
Puedes transmitir uno o varios items, el primero por ejemplo puede servirte para seleccionar la posición de memoria del otro microcontrolador, un segundo item para indicarte si vas a leer o escribir, y un tercer item que sería el valor que quieres escribir, cuando quieras leer solo puedes usar dos parámetros, el primero para indicarle que vas a leer y el segundo la posición que vas a leer, en el micro receptor debes tener un condicional para saber si se va a leer o escribir y dependiendo de la acción escribes tu código.
-
Que tal amigos!
Para enviar datos via RS 232 desde un pic a otro utilizando para ello el proton, el pic que utilices no necesariamente debe tener USART :mrgreen: Para ello el proton posee algunas rutinas de comunicacion serial hechas por software que no requieren que el pic posea usart alguno.
Estas son algunas de ellas: serin, serout, rsin rsout todas son rutinas hechas por software!
Otra cosita si vas a almacernar datos en la eeprom del pic, te recurdo que existe una limitante en el numero de veces que estas memorias pueden ser escritas, ya que, si constantemente envias datos para ser almacenados en la eeprom podrias dañarla.
Como dice el amigo lordlafebre leete el manual alli hay varios ejemplos de como funciona cada instruccion y tiene ejemplos de su uso.
Saludos
-
Perdón me confundí, está bien las que mencionas eread y ewrite, esas usa para leer y escribir la memoria, con respecto a lo otro, mira:
Syntax
HRSOUT Item { , Item... }
Overview
Transmit one or more Items from the hardware serial port (USART) on devices that support asynchronous serial communications in hardware.
LordLafebre, colega antes que todo muchas gracias por sus opiniones en cuanto a si leo o no la ayuda claro que si la leo por eso es que acudo a ustedes y sin animos a discucion destructivas pero ojo si estoy posteando es porque estoy un poco confundidos en el tema en cuestion. Ahora con respecto a lo que me dices de HRSOUT Item { , Item... }, lo que entiendo es que le tengo que avisar atraves de item al pic que es lo que voy hacer ojo yo no tengo dominio del otro pic directo es decir el pic al cual yo quiero leer o escribir sobre la eeprom ya previamente fue programador y vea usted a saber por quien lo que si es que yo deseo lee o escribi parametros de eeprom para asi modificar ejemplo una contraseña que se tenga guardada en la eeprom cosa que no viene al caso pero es por citar un ejemplo o numero de ID, o temperatura que se yo datos guardados en eeprom pero no tengo acceso a programar ese pic para que el haga algo a una orde que le envie con otro pic.
Es por eso que no estoy claro como hacer para decirle que me lea o escriba una determinada direccion del eeprom.
Que tal amigos!
Para enviar datos via RS 232 desde un pic a otro utilizando para ello el proton, el pic que utilices no necesariamente debe tener USART :mrgreen: Para ello el proton posee algunas rutinas de comunicacion serial hechas por software que no requieren que el pic posea usart alguno.
Estas son algunas de ellas: serin, serout, rsin rsout todas son rutinas hechas por software!
Otra cosita si vas a almacernar datos en la eeprom del pic, te recurdo que existe una limitante en el numero de veces que estas memorias pueden ser escritas, ya que, si constantemente envias datos para ser almacenados en la eeprom podrias dañarla.
Como dice el amigo lordlafebre leete el manual alli hay varios ejemplos de como funciona cada instruccion y tiene ejemplos de su uso.
RALF2 , ok gracias hermano de tierra aja ya tengo claro que no es necesario que el pic con que mando a leer o escribir no necesariamente tiene que tener USART pero el pic del cual voy a leer o escribir si porque sino como establesco comunicacion con el.
Lo otro es que los comando mensionados serin, serout, rsin rsout todas son rutinas hechas por software pero no entiendo como usarlos para decirle que me lean o escriban en una determinada direccion de la eeprom asi como lo hago con el comando para leer la eeprom pero dentro del mismo codigo que es eread y ewrite los cuales uno le indica la direecion y asigna una variable para la data que quiere tanto leer como escribir.
Lo ultimo es buen dato saber que la eeprom tiene un numero definido de lectura Y ESCRITURA PERO EN MI CASO ESO NO SERIA EL PROBLEMA YA QUE ESTO SE APLICARA UNA SOLA VES ES DECIR NO ESARE CANSTANTEMENTE ESRCIBIENDO O LEYENDO, SOLO EN OPORTUNIDADES QUE LO REQUIERA.
-
el pic al cual yo quiero leer o escribir sobre la eeprom ya previamente fue programador y vea usted a saber por quien lo que si es que yo deseo lee o escribi parametros de eeprom para asi modificar ejemplo una contraseña que se tenga guardada en la eeprom
Hola:
Si ese es el caso necesitas saber como comunicarte con el otro micro, esto recien lo mencionas, por eso es bueno expresarse bien y contar todo al detalle desde un inicio para no perder tiempo.
Veamos, si te vas a comunicar con otro PIC que ya previamente fué programado necesitas saber primero, la velocidad, número de bits y demás configuraciones para establecer la comunicación, luego debes saber los parámetros necesarios para la comunicación, sin esto no es posible comunicarse con el otro PIC.
-
colega disculpa sino me hecho explicar vlo que pasa es que es un poco dificil en el campo de los pic hacerse entender por todos pero igual ya creo que se me ententio la comunicacion es via seria ahora encuanto a velocidad que puede comunicarse el pic estudiare eso y vere a que conclusion llego pero no estoy claro del todo creo que es un poco mas complejo de lo que pensaba pero manos a la obra siempre me dijo mi abulita asi que trtabajere en funcion de lograr mi objetivo.
saludos y mil gracias amigo cualquier informacion les aviso. bye
-
Hola:
Recuerda, no solo necesitas las configuraciones para la comunicación, tambien necesitas parámetros para comunicarte, ten presente también, que el microcontrolador que no programaste tú, debe funcionar bajo ciertas condiciones para poder establecer una "conversación" con el pic que tu programarás, si no sabes como comunicarte, es como si dos personas estubieran hablando en dos idiomas totalmente diferentes, los dos hablan perro nadie entiende, así que no se pueden entender.
-
Buena explicacion :shock:
Diste en el clavo eso era lo que pasaba :D
-
Hola:
Bueno, por fín pude entender luego de que comentó algo sobre que el micro del que quiere leer los datos no era proramado por él, pero ahora me ha quedado la intriga de porqué quiere hacer eso.
ASTROCAR, crees que nos puedas explicar como es eso de que quieres leer la eeprom de ese pic? que hace ese pic? o ese micro?
-
Bueno colegas, tuve una conversacion en privado con el miembro RALF2 y llegamos a la conclusion que por esa via serial y usando proton No lograre leer direcciones espeficica de eeeprom, tal ves otro compilador si maneje via seria los direccionamiento del un micro en particular.
En cuanto a que hace ese micro la verdad este es simplemente formas de hacer practica y ver hasta donde soy capaz pero pudiera ser que como te explique antes que ese pic este diseñar para tomar medidas de temperatua, horas o cualquier cosa en particular y que el codigo guarde en eeprom po como le puse de ejemplo al colega Ralf2 quye tengamos un equipo de sonido o un tv que use un sistema de seguridad basado en pic y guarde esa informacion en la eeprom del pic y luego al usuario se le pierda la clave, luego que se haria en este caso leer la eeprom yo por cuestiones de protocolo quise que fuera por serialp ya que he trabajado i2c, spi y microwire pero serial no y por eso tubve esa inquietud pero siguiendo el ejemplo tendriamos que leer la eeprom y si el cliente solicita que se le lleve la clave a 0000, por eso tambien lo de escribir en la eeprom. ojo y porque solo la eeprom porque si muevo la flash altero el programa en si y no funcionaria como realmente fue y con el fin que lo codificaron.
Saludos y espero todo quede claro.
y para no quedarme con las ganas lo voy hacer pero con protocolo spi y les muestro como me fue.
bye
-
JAJAJAJA, Amigos mil disculpa con mi error por fin logre entender que un pic o cualquier otro micro para poder acceder a su flash o eeprom solo se hacer via programacion que soporte dicho micho y eeror era que porque soportaba un determinado protocolo yo asumia que por ese protocolo podia tener comunicacion con todo el pic y no es asi esos protocolos no son mas que una herramienta para poder intercambiar informacion con otro dispositivo que tambien soporte ese otro protocolo no que yo pueda programar el micro por tal hard que tenga el micro asi que en mi conclusion para yo poder llevar a la eeprom de un pic lo tengo que hacer solo via programacion principal del pic que en este caso no es mas que por los pines PGD y PGC claro con su respectivo voltajes de alimentacion y su VPP.
Saludos y mil gracias por sus explicaciones siempre estuve errado en eso de llevar a la eeprom del micro.
-
HOLA A TODOS
ESTOY HACIENDO UN PROYECTO QUE CONSISTE EN UNA ALARMA GSM, ESTOY PROGRAMANDO CON CCS... LO QUE QUIERO ES PODER HACER A LA ALARMA PROGRAMABLE VIA SMS, OSEA PODER GRABAR EN LA EEPROM INTERNA DEL PIC NUEVOS NUMEROS TELEFONICOS A QUIENES LLAMAR AL PRODUCIRSE UN EVENTO O GRABAR NUEVAS CLAVES PARA ACTIVAR/DESACTIVAR LA ALARMA CON SMS
ESPERO ALGUNA SUGERENCIA
SALUDOS