Autor Tema: CURSO DE C  (Leído 7046 veces)

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

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: CURSO DE C
« Respuesta #15 en: 20 de Febrero de 2004, 01:18:00 »
Ese es el problema, que gets finaliza cuando le llega el salto de carro, pero como puts también envía el LF(10), cuando vuelves a hacer gets en tu bucle, lo primero que recibe ese LF(10) que antes no recibistes. Por eso no se te enciende el pin B0 hasta la segunda vez que pasa el bucle.
Y sí, supongo que es cosa del compilador CCS.
Saludos!!
Saludos desde Huelva (ESPAÑA)

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
RE: CURSO DE C
« Respuesta #16 en: 21 de Febrero de 2004, 09:23:00 »
Aqui hay un librillo, gracias amigos de CCS !!!

http://miarroba.com/foros/ver.php?foroid=256746&temaid=1457224

A disfrutarlo !!
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: CURSO DE C
« Respuesta #17 en: 22 de Febrero de 2004, 14:04:00 »
Sigo con las comunicaciones entre PICs, esta vez con 3 PICs.

La pregunta es la siguiente: como bloquear al SLAVE2 cuando el SLAVE1 quiera mandar un dato al MASTER, para que no colisionen las 2 salidas Tx de ambos SLAVES.

Conexionado: http://miarroba.com/foros/ver.php?foroid=256746&temaid=1461367

Desconectado angelmoi123

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 298
    • Construccion de Maquinas CNC
RE: CURSO DE C
« Respuesta #18 en: 22 de Febrero de 2004, 17:07:00 »
Saludos

Amigo Pocher, posiblemente una solucion seria dandole una direccion individual a cada slave.

angelmoi123

Desconectado pacalaconcurso

  • PIC24F
  • *****
  • Mensajes: 718
RE: CURSO DE C
« Respuesta #19 en: 23 de Febrero de 2004, 05:59:00 »
efectivamente Pocher, esa es la idea si te fijas en el codigo de modbus el maestro en su trama manda la ireccion del esclavo + el comnando+ datos+checksum y cada esclavo lee el paquete....si es para el comprueba el checksum y responde y si no es para el puedes, por ejemplo, desahabilitar el puerto serie durante 500ms.

como el sistema es maestro esclavo no hay colisiones entre los esclavos, silas hubieras puedes implementar en el master una rutina de reintentos.

ya que tienes la red de micros montada por que no pruebas las rutinas de modbus y usas el pc como master?????

saludos

pd: os sigo debiendo el codigo de copiar estructuras

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: CURSO DE C
« Respuesta #20 en: 23 de Febrero de 2004, 06:07:00 »
Hola Félix, aprovecho que estás ahí para preguntarte.

.... si es para el comprueba el checksum y responde y si no es para el puedes, por ejemplo, desahabilitar el puerto serie durante 500ms.

La pregunta es: con qué instrucciones lo deshabilito durante 500ms?, he probado de varias maneras y no me sale.

Desconectado pacalaconcurso

  • PIC24F
  • *****
  • Mensajes: 718
RE: CURSO DE C
« Respuesta #21 en: 23 de Febrero de 2004, 06:13:00 »
yo lo hago de esta forma:

si el paquete no es para mi deshabilito la interrupcion int_rda y activo la interrupcion del timer. en esta interrupcion tras debordarse 5 veces (unos 500ms con el cristal de 20 mhz.) activo de nuevo la interrupcion int_rda y deshabilita el timer de nuevo.

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: CURSO DE C
« Respuesta #22 en: 23 de Febrero de 2004, 06:25:00 »
Tengo las salidas Tx de los SLAVES unidas y al intentar el SLAVE1 mandar algo al MASTER interfiere con la salida del SLAVE2. Si uso la interrupción ¿no me seguirá pasando igual?

Desconectado pacalaconcurso

  • PIC24F
  • *****
  • Mensajes: 718
RE: CURSO DE C
« Respuesta #23 en: 23 de Febrero de 2004, 06:36:00 »
ahh ya veo que lo tienes montado "a pelo"....
hombre lo suyo es usar unos max485 y solucionado...de todas formas no creo que te de problemas y en todo caso pon unos optoacopladores en las salidas de tx de los esclavos.
la ventaja de este sistema de tiempos es que es sencillo de implementar y como es el master el que direcciona a los esclavos sabes el tiempo que puedes dormir a los esclavos.

en modbus no responden nunca dos esclavos al mismo tiempo y aun en el caso de una difusion (direccion del esclavo=0) no se responde por parte de los esclavos. en este caso el maestro suele mandar la difusion carias veces para asegurar que todos los esclavos la reciben. asi se envian datos poco o nada criticos para el sistema como sincronizaciones,.....

saludos

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: CURSO DE C
« Respuesta #24 en: 23 de Febrero de 2004, 06:59:00 »
Ya estoy aquí, llegaba la parienta y había que hecharle una mano con la compra.

Con el 485 sí que se puede bloquear la salida que te interese usando las entradas de control del MAX.

No lo he probado todavía físicamente con 3 PICs (sí con 2), lástima que el PROTEUS no tenga este integrado para hacer las pruebas. Voy a probar con PROTEUS metiendo buffers triestado, a ver que pasa (o como tú dices también con optoacopladores).

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
RE: CURSO DE C
« Respuesta #25 en: 23 de Febrero de 2004, 13:21:00 »
Genios:
Alguien sabe cual es la direccion ROM del inicio de la EEPROM en los PIC ??

Se que en el 16F84 pones ORG 2100 y escribes en la misma, esto cuando quieres grabarle datos cuando quemas el programa, pero no se si es la misma para todos o para ese solo..

Alguien tiene esa informacion o sabe de donde puedo sacarla??

Gracias
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1685
    • winpic800
RE: CURSO DE C
« Respuesta #26 en: 23 de Febrero de 2004, 23:49:00 »
Si Marcos en todos los 16Fxxx que he visto , es esta la dire .

EEPROM_START EQU   2100h

   ORG EEPROM_START

   DE   0000h
   DE   007Fh
   DE   00FFh

Saludos.

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: CURSO DE C
« Respuesta #27 en: 23 de Febrero de 2004, 23:53:00 »
La primera dirección, no es la 0000? Seguramente no será esto a lo que te refieres.

Ya me funciona la comunicación con 3 PICs, le metí buffers triestado en las salidas de los SLAVES.

Ahora voy a probarlo físicamente, lo haré con el ordenador y dos placas base, ya que no dispongo de más.

Un saludo

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1685
    • winpic800
RE: CURSO DE C
« Respuesta #28 en: 24 de Febrero de 2004, 00:15:00 »
Una pregunta pocher .

Funcionaria configurando la salida Tx como entrada en los SLAVES para que queden en alta impedancia y ahorrase los buffers (cuando estan en stanby)?.

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: CURSO DE C
« Respuesta #29 en: 24 de Febrero de 2004, 00:33:00 »
Hola Sispic.

Así también lo probé ya que ví un ejemplo en Microsystems en el que se usaba el mismo pin como salida Tx y ese mismo también se usaba como uno de los de salida hacia LCD y cada vez que lo usaba para transmitir lo reconfiguraba. Pero no me funcionó.

Me voy al curro, un saludo Sispic.

PD. Me ha tocado repetir el mensaje 2 veces, a estas horas mi arroba es un asco.


 

anything