Autor Tema: duda puerto serie  (Leído 4694 veces)

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

Desconectado cdistri

  • PIC10
  • *
  • Mensajes: 24
duda puerto serie
« en: 04 de Noviembre de 2008, 16:26:00 »
Hola

Queria saber si me podeis ayudar. Tengo un proyecto en el cual me muestra la hora y la fecha en un lcd y queria saber si alguien me puede decir como puedo modificarlo para que a traves del puerto serie pudiera modificar la hora, los minutos y la fecha sin tener que subir el hex de nuevo.

Este el el codigo que estoy utilizando:

Define LCD_DREG   PORTB  '*bit de datos del LCD empezando
Define lCD_DBIT   0      '*por B.0 ,B.1, B.2 y B.3
Define LCD_RSREG   PORTB  '*bit de registro del LCD conectar
Define LCD_RSBIT   5      '*en el puerto B.5
Define LCD_EREG   PORTB  '*bit de Enable conectar en el
Define LCD_EBIT   4      '*puerto B.4     0,0048828125
ADCON1 =7
SCL_PIN var portb.7
SDA_PIN   var PORTb.6
segu var byte   
minu var byte                   
hora var byte                                       
minu1 var byte
minu2 var byte
diaS var byte                     
diaF var byte                   
mes  var byte                   
anio var byte

I2CWRITE Sda_PIN, scl_pin,%11010000,0,[$00] '* segundos
    pause 50                   
    I2CWRITE Sda_PIN, scl_pin,%11010000,1,[$15]  '* mitutos
    pause 50 
    I2CWRITE Sda_PIN, scl_pin,%11010000,2,[$11] '* horas   
    pause 50 
    I2CWRITE Sda_PIN, scl_pin,%11010000,3,[$5]  '* dia de la semana 
    pause 50                             
    I2CWRITE Sda_PIN, scl_pin,%11010000,4,[$4] '* dia del mes   
    pause 50 
    I2CWRITE Sda_PIN, scl_pin,%11010000,5,[$11] '* mes   
    pause 50 
    I2CWRITE Sda_PIN, scl_pin,%11010000,6,[$08] '* año 
    pause 50
    I2CWRITE Sda_PIN, scl_pin,%11010000,7,[$10] '* frec 1hz
    pause 50

inicio:

 
leer_RTC:           

    I2CREAD Sda_PIN,scl_pin,%11010000,0,[segu]
    I2CREAD Sda_PIN,scl_pin,%11010000,1,[minu]   
    I2CREAD Sda_PIN,scl_pin,%11010000,2,[hora]   
    I2CREAD Sda_PIN,scl_pin,%11010000,3,[diaS]
    I2CREAD Sda_PIN,scl_pin,%11010000,4,[diaF]             
    I2CREAD Sda_PIN,scl_pin,%11010000,5,[mes]
    I2CREAD Sda_PIN,scl_pin,%11010000,6,[anio]

    lcdout $FE,1, hex2 hora,":",hex2 minu,":",hex2 segu," "   

    if diaS=$1 then lcdout $FE,$c0, "Dom."   
    if diaS=$2 then lcdout $FE,$c0, "Lun."
    if diaS=$3 then lcdout  $FE,$c0, "Mar."
    if diaS=$4 then lcdout  $FE,$c0, "Mie."
    if diaS=$5 then lcdout $FE,$c0, "Jue."
    if diaS=$6 then lcdout $FE,$c0, "Vie."
    if diaS=$7 then lcdout $FE,$c0, "Sab."
   
    lcdout $FE,$c5,hex2 diaF,"/"
    lcdout $FE,$c17,"  /20",hex2 anio

    if mes=$1 then lcdout $FE,$C8, "Ene"     
    if mes=$2 then lcdout $FE,$c8, "Feb"
    if mes=$3 then lcdout $FE,$c8, "Mar"
    if mes=$4 then lcdout $FE,$c8, "Abr"
    if mes=$5 then lcdout $FE,$c8, "May"
    if mes=$6 then lcdout $FE,$c8, "Jun"
    if mes=$7 then lcdout $FE,$C8, "Jul"
    if mes=$8 then lcdout $FE,$c8, "Ago"
    if mes=$9 then lcdout $FE,$c8, "Sep"
    if mes=$10 then lcdout $FE,$c8, "Oct"
    if mes=$11 then lcdout $FE,$c8, "Nov"
    if mes=$12 then lcdout $FE,$c8, "Dic"
   goto inicio

Se que es cambiando las variables hora, minutos, dia, mes , anio pero no se como modificar el codigo para que desde el puerto serie se modifiquen estas variables.

El esquema que utilizo le adjunto en un documento de word.

A ver si me podeis ayudar

Un saludo

Un saludo


A ver si me podeis hechar una mano

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: duda puerto serie
« Respuesta #1 en: 04 de Noviembre de 2008, 17:57:22 »
Usa la sentencia SERIN o HSERIN, segun te convenga, y asigna los valores de entrada a tus variables. Algo como

Código: FreeBasic
  1. mes var byte
  2. .....
  3. main:....
  4. ....
  5. If porta.x=x then
  6.  gosub configura
  7. endif
  8. ......
  9.  
  10. Configura:
  11. .......
  12. SERIN portb.3, N9600,mes
  13. ...........
  14. return


Algo asi para todas las variables aqui se activa la confifuracion con un puerto del PORTA pero lo puedes hacer como quieras.

Saludos
"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 cdistri

  • PIC10
  • *
  • Mensajes: 24
Re: duda puerto serie
« Respuesta #2 en: 05 de Noviembre de 2008, 06:57:12 »
Hola  navaismo

Perdona por ser pesado pero lo de la comunicacion con rs232 no se me da muy bien.
Con respecto al codigo tengo una serie de dudas:

en el punto 3:
3. main: ..........
4. ...................

En sustitucion de los puntos que deberia de poner

Con respecto al porta.x=x yo tengo conectado el puerto serie al portc.6(tx) y portc.7(rx) a cual tengo que ponerlo.

A ver si me puedes ayudar

Un saludo

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: duda puerto serie
« Respuesta #3 en: 05 de Noviembre de 2008, 10:19:04 »
Yo te recomiendo que para obtener menjores resultados uses interrupciones, los comandos de puerto serie por software no me funcionaron bien que digamos.

Código: [Seleccionar]
BYTE_RECEP   VAR   BYTE
rcsta = %10010000           ;RECEPCION SERIAL CONTINUA
txsta = %00100100           ;CONFIGURACION DE TRANSMISION SERIAL
PIE1.5 = 1                  ;HABILITACION DE INTERRUPCION ENTRADA SERIAL
PIR1.5 = 0                  ;BORRAR FLAG DE RECEPCION
SPBRG = 25                 ;CONFIGURACION DE 9600 BAUDIOS A 4 MHZ BRG = 1
ON INTERRUPT GOTO TIMER

....
....
....
....
....

DISABLE
TIMER:

IF PIR1.5 = 1 THEN
    BYTE_RECEP = RCREG
    RCREG = 0
   
ENDIF

RESUME
ENABLE

Saludos.
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado cdistri

  • PIC10
  • *
  • Mensajes: 24
Re: duda puerto serie
« Respuesta #4 en: 05 de Noviembre de 2008, 13:35:56 »
Hola

¿Me podeis decir de algun ejemplo que desde visual basic a traves de una caja de texto se pueda modificar lo que pone en un lcd?

Quiero probrar lo de la comunicacion con rs232 y necesito apoyarme en algun ejemplo. Utilizo el proteus para la simulacion y pbp para codigo.

Estaria agradecido se me dijeseis de algun ejemplo

Un saludo

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: duda puerto serie
« Respuesta #5 en: 05 de Noviembre de 2008, 17:54:27 »
Hola Kallitos el ejemplo que puse es valido para Hserin este se usa por Hardware y SERIN este es por software.

CDISTRI con lo s puntitos que pongo es para que ahi implementes tu codigo yo solo te doy la idea, Sobre el portax.x se refiere que si usas el comando SERIN, como este es por software puedes hacerlo desde cualquier pin del PIC pero creo que tu estas usando los pines del HARDWARE asi que necesitaras usar HSERIN.

Te aconsejo que uses la ayuda del PBP para que veas y entiendas como funcionan estas instrucciones y lo que debes hacer.

Sobre el ejemplo del LCD y VB primero deberas entender como trabaja tu Puerto Serie y el control mscomm.

Rapidamente supongamos que ya tienes tu proyecto de VB con los controles que deseas y lo que hace es que al apretar un boton envias un dato por el puerto serie el codigo seria algo asi:

Código: FreeBasic
  1. ........
  2. ............
  3. Private Sub Boton1_Click()
  4.  mscomm1.output=text1.text
  5. End Sub
  6. ........

Lo que hace eso es que cuando aprietas el Boton1 el texto que tiene el textbox llamado text1 sale por el puerto serie.

Ahora para el PIC ya que tienes la conexion con el pc con el MAX232 o lo que estes usando, en el programa quedaria algo asi:

Código: FreeBasic
  1. .............
  2. ................
  3. ........
  4. Serin portx.x, N9600, Dato
  5. Lcdout, $FE,1,dato
  6. .............
  7. .........
Aca suponemos que el puerto serie de la pc manda los datos a N9600 y el pic lo recibe en esa porcion de codigo y lo muestra en el LCD.

Ojo que puedes cambiar las rutinas a como mejor te plazca, esto es como lo pedite una guia, si necesitas mas info te sugioero que leas la ayuda de ambos programas y busques en el foro ya que ha sido tratado el tema con anterioridad.

Saludos
"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 cdistri

  • PIC10
  • *
  • Mensajes: 24
Re: duda puerto serie
« Respuesta #6 en: 05 de Noviembre de 2008, 21:16:45 »
Hola Navaismo

Queria saber si teneis algun proyecto el cual se pueda simular para ver el funcionamiento de rs232 con respecto a basic.

El programa en Visual basic ya lo tengo realizado, lo unico que me queda es la comunicacion con el pic y me pudierais pasar algun proyecto simple de comunicacion con basic podria ver como tendria que relacionarlo.

Queria algo parecido a las fotos que adjunto pero realizado en basic.

A ver si me podeis ayudar

Un saludo

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: duda puerto serie
« Respuesta #7 en: 05 de Noviembre de 2008, 21:44:12 »
Hola Navaismo  :), en el ejemplo que puse leo directamente el buffer de recepcion, lo trabajé asi por que mientras buscaba la mejor manera de recibir datos por el puerto serie, utilizando los comandos de PBP, aveces perdía datos, inclusive utilizando este metodo, cuando usaba PULSOUT, también perdía datos, según leí la mejor manera de recibir datos en en asm.

saludos

A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: duda puerto serie
« Respuesta #8 en: 05 de Noviembre de 2008, 22:10:25 »
Hola CDISTRI, al menos yo no tengo la costumbre de regalar el pescado,  aunque suene duro, pero la verdad que en mi caso he puesto varios ejemplos de la comunicacion serie en el foro con codigo y diagramas. Por ello te inste a usar el buscador.

Y con los ejemplos que te puse creo que es suficinete para que te des una idea de como hacer un programa o implementar los codigos en el tuyo y simularlo con Isis. Por ahi puse un codigo de una matriz que recibe datos seriales y los simula ISIS.

Saludos
"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 KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: duda puerto serie
« Respuesta #9 en: 06 de Noviembre de 2008, 01:39:25 »
Tienes razón amigo NAVAISMO, debemos enseñar a pescar y no regalar el pescado, mis mas sinceros respetos  :)

saludos
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado cdistri

  • PIC10
  • *
  • Mensajes: 24
Re: duda puerto serie
« Respuesta #10 en: 06 de Noviembre de 2008, 06:19:23 »
Hola a todos

Ok, gracias por todo, era por si alguien tenia algun ejemplo.

Un saludo