Autor Tema: PIC BASIC del PIC Simulator IDE Oshonsoft (Índice en página 1)  (Leído 859439 veces)

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

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #315 en: 08 de Noviembre de 2007, 11:12:11 »
Hola Mario, en el data del 485 indica que hay que colocarla, tambien es cierto que
he visto algun circuito que internamente usan 485 para comunicacion entre placas
y no lautilizan, estamos hablando de 20 0 30 cm.


PD. Si te fijas en la plaquita o en el esquema, se puede observar que hay un puente que permite
activar o desactivar la R.
« Última modificación: 08 de Noviembre de 2007, 11:20:11 por dogflu66 »
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #316 en: 08 de Noviembre de 2007, 11:35:56 »
En el ultimo cursillo el claval que hacia de profe, cuando se referia al RS232 indicaba que la distancia era hasta 15 mtrs porque trabajaba por tension.
Y cuando hacia referencia al RS485, hacia hincapie que permitia mas de 1km porque trabajaba por lazo de corriente (los que trabajan o han estudiado
el lazo de corriente saben que esto es asi) y todo lazo de corriente suele terminar en una R de fin de linea.

Aparte de todo esto yo soy partidario de colocarla... :mrgreen:




PD. Para no llevar a equivocos, como se indica al principio de iniciar el tema del 485, este no trabaja por lazo de corriente.
Esta citacion solo se debe de tomar como anecdota, el error fue mio por no dejarlo claro.
« Última modificación: 16 de Diciembre de 2007, 18:08:35 por dogflu66 »
Saludos desde Granada, España.

Desconectado jansuini

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 566
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #317 en: 08 de Noviembre de 2007, 18:53:58 »
Hola:
Un par de correcciónes :el 485 no trabaja por lazo de corriente sino por tensión diferencial ,lo que hace que sea más inmune al ruido .-
La otra aclaración es que la resistencia terminadora realmente es para adaptar las impedancias de los cables ,pero en distancia cortas no es necesario (inclusohe conectado muchos equiposen dstancias largas como 100 mts. y no han tenido problemas.-
Saludos
Jorge

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #318 en: 08 de Noviembre de 2007, 20:49:24 »
Un poco de funcionamiento:

La comunicación es Half-Duplex multipunto diferencial sobre dos hilos preferentemente de par entrelazado (trenzado y ninguna de las dos líneas es masa).
Permite transmitir datos a grandes distancias, hasta 1200mtrs de 300 a 19200 bps.
Y se pueden utilizar hasta 32 driver en esta configuración, puestos en paralelo con la línea RS485.

De todo esto deducimos que podremos tener comunicación bi-direccional a tiempos separados, cuando un equipo transmite (TX) todos los de mas reciben (RX) y en esta configuración todos los equipos podrán ser RX o TX, esta claro que si colocamos mas de dos en la línea esta la llamaremos bus y tendremos que crear un protocolo que ponga orden en las transmisiones de los datos, y sobretodo para evitar las colisiones, no puede haber nunca mas de un driver configurado como TX al mismo tiempo.

La línea necesita una resistencia que llamaremos de carga o fin de línea, como en este caso usaremos muy pocos driver y una distancia muy corta solo usaremos una la cual incorporaremos en paralelo con los dos hilos mediante el puente del esquema anterior.
En el caso que nos atañe he utilizado un valor de la R relativamente alto 120 oh.


Gracias Jorge por la aclaración, como puedes ver en la autocita digo como realmente trabaja.

Y la referencia que hice al cursillo solo fue como mera anécdota, es la forma que tenia este
hombre de explicar con mayor o menor acierto el por que el 485 puede desarrollar tanta distancia.
por eso hice hincapié en que los lazos de corriente permiten distancias grandes.

De todas formas solo me he encontrado en muy cortas distancia la ausencia de la resistencia y por
lo tanto mi siguiente pregunta es: con esas distancias tan grandes  (hasta 100mtrs como indicas) en
entornos industriales sin la R, ¿puede haber una mayor sensibilidad a las interferencias?.
Saludos desde Granada, España.

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #319 en: 09 de Noviembre de 2007, 20:19:13 »
De todas formas solo me he encontrado en muy cortas distancia la ausencia de la resistencia y por
lo tanto mi siguiente pregunta es: con esas distancias tan grandes  (hasta 100mtrs como indicas) en
entornos industriales sin la R, ¿puede haber una mayor sensibilidad a las interferencias?.


Depende en gran medida de la tasa de transferencia de datos.
Si no recuerdo mal, a mayor frecuencia, mayor atenuación y más propenso a ser afectado por las interferencias.

Por ahí tengo información, solo que no estoy en casa; cuando llegue, busco la información y le comento.
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee

Desconectado jansuini

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 566
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #320 en: 10 de Noviembre de 2007, 09:33:55 »
Hola:

Realmente la resistencia se coloca en distancias grandes por un tema de acoplamiento de impedancias de los cables y el valor típico es 120 ó 150 ohms .Por el costo de ellas no está de mas poner una en cada extremo del cable .-
Cuidado con el cableado, ya que 485 no sugiere que se hagan derivaciones en Y . Recuerden :si ponen varios equipos en la linea de comunicaciones  solo va una R en cada extremo.-
Saludos
Jorge

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #321 en: 14 de Noviembre de 2007, 20:28:48 »
Código: [Seleccionar]
Define CONF_WORD = 0x2f10
Define CONF_WORD_2 = 0x3ffc
Define CLOCK_FREQUENCY = 8

'NOMBRE:16F88_PicEBasic_LCD
'MICRO: PIC16F88/8Mhz reloj interno
'Uso del LCD con bus de datos a 4Bit y sin pin de RW
'************************************************************************************************
'-------------------------------------Puertos del LCD---------------------------------------------
Define LCD_BITS = 4  'indicamos que el bus de datos del lcd sera de 4bit
Define LCD_DREG = PORTA  'el bus de datos sera el puerto A
Define LCD_DBIT = 0  'el bus de datos seran los 4 bit menos significativos del puerto A
Define LCD_RSREG = PORTB  'el bit de control RS sera del puerto B
Define LCD_RSBIT = 7  'se usara el RB7 como RS
Define LCD_EREG = PORTB  'el bit de control E sera del puerto B
Define LCD_EBIT = 6  'se usara el RB6 como E
'Define LCD_RWREG = PORTA 'el bit de control RW sera del puerto A (si se suprime el compilador no protesta)
'Define LCD_RWBIT = 5 'se usara el RA5 como RW (si se suprime el compilador no protesta)
Define LCD_COMMANDUS = 2000  'Tiempo de espera despues de ejecutar un comand del lcd en uSeg.
Define LCD_DATAUS = 50  'Tiempo de espera despues de enviar un dato al LCD en uSeg.
Define LCD_INITMS = 5  '(50) 'Tiempo de espera despues de inicializar el Display, solo se ejecuta una vez en mSeg., trucado para simulacion
'------------------------------------------------------------------------------------------------------
Define SIMULATION_WAITMS_VALUE = 1  'suprime los tiempos de espera Waitms, solo activar esta linea en simulacion
'------------------------------------Definicion de puertos------------------------------------------
ANSEL = 0x00 'los pin I/O digitales (no analogicos)
OSCCON = 0x7e 'set intrc To 8mhz, se usara reloj interno a 8Mhz
CMCON = 0x07 'comparador a off
TRISA = 0x00 'Puerto A como salidas
TRISB = 0x00 'puerto B como salidas
'------------------------------------Inicio------------------------------------------------------------
Lcdinit 'inicializa el lcd sin cursor
WaitMs 500  'pausa para estabilizar
main: 'comienza el programa principal
   Lcdcmdout LcdClear 'borra el display
   WaitMs 1000 'hace una pausa de 1Seg.
   Lcdout "A" 'escribe el caracter "A" en el display
   WaitMs 1000 'hace una pausa de 1Seg.
Goto main 'impide que termine el programa principal
End 'es conveniente ponerlo siempre segun el manual

Ahi dejo el programita para simular el LCD, a mi me funciona correctamente
a la hora de activar el modulo LCD del simulador indicarle que coja la configuracion
de pin segun le indicamos en el programa.
Lo proximo seria simular el LCD y la entrada analogica a ver si da alguna incompatibilidad.

PD. Los tiempos estan trucados para no tener que esperar tanto en el Simulador, los tiempos
reales son los que estan indicados entre parentesis.

PD. Corregido ya que este ejemplo se realizo antes de tener la Placa EBasic construida, asi que lo modifique para que funcione sobre ella.

PD. 22/07/07, solo correccion en la descripcion de los pin del LCD.

PD. 15/11/07, añado la configuracion de bit (fuses) del micro y la velocidad del clock en el programa, las 3 primeras lineas.


Este fue el primer ejercicio del hilo, tengo que decir que funciona correctamente tanto en el simulador
como en la Placa EBasic.
El error común en este ejemplo esta en olvidarse que hay que configurar los fuses.
Hay que definirlos a mano en el entorno (PSI). Lo hice así para obligar a tener que familiarizarse con
la configuración de bit, que obliga a comportarse al micro y algunos de sus módulos de una forma
determinada durante el arranque.
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #322 en: 14 de Noviembre de 2007, 20:58:25 »
La configuración de este registro también esta al principio del hilo
pero la dejo aquí también.

Imagen: Configuracion_Pic_Simulator_Ide_Old.jpg

Todos los programas tienen la misma configuración, excepto los que usan el Watchdog.

Este registro es muy importante, porque con el se hacen una serie de configuraciones
al microcontrolador, como son la protección de los datos de la flash contra lectura, también
de la Eeprom, si se va a usar el Watchdog, el modo de trabajo del oscilador, retardo al arranque
durante la puesta en marcha, monitor de alimentación, etc.
la configuración en este  entorno es muy fácil ya que muestra todas los bit de configuración
en una ventana y de esta forma por solo intuición se programan la mayoría, el resto hay que
investigar en el datasheet del micro en cuestión.

Algunas combinaciones de estos bit hacen que el programa funcione bien en los simuladores y por
otro lado no funcione en la realidad, o viceversa.

Una vez terminada la configuracion de los bit, tan solo hay que cliclar en "Generate Basic Code" y
esta configuracion se añade de forma automatica en las dos primeras lineas de nuestro
editor del codigo fuente. Ya solo resta añadir una tercera indicando la velocidad a la que trabajara
nuestro micro "Define Clock_Frequency = 8".

Actualización del hilo para nuevas versiones del PSI: 06/2016
Esta configuracion se carga de forma automatica en nuestro entorno de trabajo cada vez que compilamos
el programa. Y si cargamos directamente el archivo .hex en el simulador la configuracion de bit
se actualiza cada vez que seguimos trabajando en nuestro programa (en versiones muy antiguas es conveniente revisar estor parámetros antes de comenzar a trabajar).

Si se va a usar el simulador integrado es conveniente incorporar la siguiente línea en nuestro código:
Define SIMULATION_WAITMS_VALUE = 1  'Activar solo para simulación
La línea indica al compilador que trunque todos los comandos WaitMs para que la simulación sea más rápida (recordar que actualmente no se puede simular un Pic con un ordenador de casa en tiempo real, se necesitan maquinas muy potentes).
WaitMs = Pause = Delay: equivalencia para otros lenguajes y realiza una pausa, normalmente no es utilizado por los desarrolladores profesionales porque para
el natural flujo del programa.

Todo esto se resume en las siguientes líneas que hay que incorporar en la cabecera de nuestro código en las actuales versiones del Editor del Pic Simulator (PSI):
Define CONFIG = 0x2f50  'Configuración bits (Fuses)
Define CONFIG2 = 0x3ffc  'Configuración bits (Fuses)
Define CLOCK_FREQUENCY = 8  'Clock en Mhz
'Define SIMULATION_WAITMS_VALUE = 1  'Activar para simulación

Estas dos líneas equivalen a la siguiente imagen:
Define CONFIG = 0x2f50  'Configuración bits (Fuses)
Define CONFIG2 = 0x3ffc  'Configuración bits (Fuses)

Imagen: Configuración Bits (Pic16F88).jpg

Además en las nuevas versiones se necesita realizar la siguiente configuración desde el editor del compilador:

Imagen: Configura Editor del Compilador (Pic16F88).jpg


PD. Especialmente dedicado a mi paisano Javier.

Nota: Actualizado 06/2016
« Última modificación: 13 de Junio de 2016, 07:50:27 por dogflu66 »
Saludos desde Granada, España.

Desconectado jvbf82

  • PIC10
  • *
  • Mensajes: 1
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #323 en: 15 de Noviembre de 2007, 18:06:45 »
Hola Carlos sin duda agradezco enormemente tus aclaraciones sobre el tema. He montado la Placa Ebasic con el 16f88 y tenia ciertos problemas a la hora de hacerlo funcionar, he añadido estas tres lineas a mi programa y aparte he corregido varios errores derivados de trucar los tiempos a la hora de simular .:D Ahora si funciona todo perfectamente. Un saludo y gracias  :-/

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #324 en: 08 de Diciembre de 2007, 18:29:53 »
Comence el Indice del hilo http://www.todopic.com.ar/foros/index.php?topic=14917.msg92082#msg92082
Cualquier ayuda o sugerencia/correccion sera bienvenida.
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #325 en: 10 de Diciembre de 2007, 20:46:19 »
Ya le di un empujoncito al Índice del hilo.... A ver si lo puedo terminar antes de que llegue el año nuevo.
Cuando termine de hacer mención a los ejemplos principales del foro, iré ordenándolo, simplificando y
comentando de una forma más adecuada... :mrgreen:

No recordaba que el hilo fuera tan extenso... :8}
Saludos desde Granada, España.

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #326 en: 10 de Diciembre de 2007, 21:02:52 »
Ya le di un empujoncito al Índice del hilo.... A ver si lo puedo terminar antes de que llegue el año nuevo.
Cuando termine de hacer mención a los ejemplos principales del foro, iré ordenándolo, simplificando y
comentando de una forma más adecuada... :mrgreen:

No recordaba que el hilo fuera tan extenso... :8}


Si de hecho podria ser considerado el tema como una buena biblia del PSI, sumandole la excelente entrenadora.
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #327 en: 11 de Diciembre de 2007, 17:40:41 »
Gracias Max, se agradece el comentario... :-)
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #328 en: 11 de Diciembre de 2007, 18:46:58 »
Con el estiron de hoy ya recorri el 50% del hilo, ya falta menos... :-)
Saludos desde Granada, España.

Desconectado allado

  • PIC10
  • *
  • Mensajes: 10
    • Circuitos Impresos
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #329 en: 12 de Diciembre de 2007, 23:30:04 »
Hola Dog..

Muy Bueno el Indice... comentario aparte y ... no se si corresponde el comentario en este foro, si no es asi pido disculpas, en estos días estube haciendo varias pruebas con algunos programitas ... las hice con el "PSI" y las modifique para "mikrobasic"... y realmente me quede muy sorprendido.... y a la ves fuertemente desepcionado. La compilacion que arroja el PSI es mucho menor que el tamaño que da el mismo programa con mickrobasic, en una prueba que hice con lcd´s el tamaño final del programa hecho en PSI resultó un 30% menor que su contraparte en mikrobasic. Si bien mikrobasic tiene un basic mas sofisticado que PSI, creo que se cae estrepitosamente en rendimiento para micros de la gama media..... Entonces Aguante nuestro amado "PSI"  :-/ :-/ :-/
La humildad es el hilo con el que se encadena la gloria.