Autor Tema: en el f628  (Leído 2733 veces)

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

Desconectado psicopic

  • PIC12
  • **
  • Mensajes: 93
en el f628
« en: 13 de Febrero de 2004, 19:27:00 »
a ver quien sabe...
si envio el nuemro 1567 desde la computadora serialmente a un 16f628 como declaro la variable en el micro para que la lee bien ..

variable var word

...
...

serin ... variable

o como por que no me funciona no puedo lees el 1567 estoy medio enrredado gracias por la ayuda que puedan dar...

Desconectado lager

  • PIC18
  • ****
  • Mensajes: 258
RE: en el f628
« Respuesta #1 en: 13 de Febrero de 2004, 19:42:00 »
Hola psicopic,
yo preferiria usar (aprovechando el 16f628) la usart que tiene incluida, aqui te pongo un ejemplo sencillito de una comunicacion a traves de su usart(no necesitas disp externos ya), asincrono, de 8 bits, sin paridad y bit de parada y usando el cristal interno del pic:


DEVICE=16F628A
CONFIG INTRC_OSC_NOCLKOUT,WDT_OFF,PWRTE_ON,CP_OFF,BODEN_OFF,LVP_OFF,MCLRE_OFF
CMCON = 7
DECLARE LCD_DTPIN PORTA.0
DECLARE LCD_ENPIN PORTB.3
DECLARE LCD_RSPIN PORTA.4
DIM VAR1[10] AS BYTE
DIM VAR2[10] AS BYTE
VAR1[0]="R":VAR1[1]="E":VAR1[2]="C":VAR1[3]="I":VAR1[4]="V":VAR1[5]="I"
VAR1[6]="E":VAR1[7]="N":VAR1[8]="D":VAR1[9]="O"

HSERIAL_BAUD = 9600         
HSERIAL_RCSTA = %10010000      
HSERIAL_TXSTA = %00100100      
HSERIAL_CLEAR = ON         
   
   HRSOUT STR VAR1
   HRSIN  STR VAR2
   CLS
    PRINT STR VAR2
   ENd

Espero y te sirva para un futuro proyecto, ¿como puedes usar este codigo? este lo hice para comunicarse de un pic a otro es decir transmitir y recivir, aqui un pic podria ser sustituido por tu pc , los dos pics (si lo usaras asi)  tienen que estar a la misma velocidad, si fuera pc, tienes que graduarla a 9600baud o menos para que puedas recivir bien los datos en el pic, en fin todo depende de tu proyecto, y las caracteristicas del mismo, y como no soy adivino, te pongo este sencillo codigo, con el que puedes hechar a volar tu imaginacion para tu proyecto, puedes modificarlo y mejorarlo con cantidad de opciones, pero para que empiezes este codigo es mas que suficiente, una ves que puedas comunicarte con dispositivos puedes ponerle mas comandos y modificadores mas complejos, .Pruebalo cargando en tu proteus dos 16f628 con el mismo codigo, solo que uno empieze reciviendo y otro lo dejas completo, es decir, a este codigo quitale el HRSOUT, mas facil aqui te pongo lo que tienes que agregarle al receptor:
HRSIN STR VAR1   
   CLS
    PRINT STR VAR1
   DELAYMS 2000
   HRSOUT STR VAR2
   END

al codigo completo del principio quitale lo que sigue del comando HSERIAL_CLEAR = ON y agregale lo que te puse anteriormente , esto seria para el receptor, el transmisor es el completo de el principio.

Saludos pana!

Desconectado psicopic

  • PIC12
  • **
  • Mensajes: 93
RE: en el f628
« Respuesta #2 en: 14 de Febrero de 2004, 06:11:00 »
ok perfecto muchas gracias lo montare a ver que tal orita otra cosa que distancia maxima se puede lograr entre la computadora y el pic comunicandolo a 1200 bps no has visto crees que podri superar unas distancias de 20 metros a 30 metros ...

esto sin intercalar ningun boufer en mitad de la linea de comunicacion
gracias en conytacto

Desconectado psicopic

  • PIC12
  • **
  • Mensajes: 93
RE: en el f628
« Respuesta #3 en: 14 de Febrero de 2004, 06:18:00 »
heyyy otra cosa quien sabe un libro del 16f628 o el 16f648 que sea en español a ver donde lo consigo o si alguien me lo envia yo le cancelo el costo y flete etc por que ya el ingles me carga loco se pierden muchos detalles de palabritas raras jajaja prefiero el digerible español si alguien sabe nombre de alguno de esos libros o donde los venden favor comunicarlo para comprarlo ok gracias... desde Venezuela

Desconectado lager

  • PIC18
  • ****
  • Mensajes: 258
RE: en el f628
« Respuesta #4 en: 14 de Febrero de 2004, 12:50:00 »
Hola psicopic, la verdad no creo que no debas poner un amp o bufer, es demasiada la distancia 20 metros, la verdad no se responderte con repecto a eso, pero no te preocupes que alguien te respondera esa duda , alguien que ya lo haya hecho para esa distancia.
Con respecto a manual, pues no se que necesitas especificamente, si es el datasheet del 16f628, est dificil que lo encuentres en español, la verdad nunca lo e visto en español, deberias intentar con el ingles por que la mejor info es en ingles u otros idiomas(aleman,frances), las traducciones  son de libros en ingles, hay muy buenos libros aplicados a asm y a basic, solo que te vas a topar con tu mismo obstaculo, son en ingles.

Saludos pana

Desconectado psicopic

  • PIC12
  • **
  • Mensajes: 93
RE: en el f628
« Respuesta #5 en: 14 de Febrero de 2004, 18:25:00 »
bueno una cosa a ver como hago...
estoy escribiendo un programa en turbo basic el mismo saca por el puerto serial el numero 765 o sea imprimo asi.

A=1789
PRINT #1, A

SALE POR EL PUERTO COM EL DATO
COMO SE PUEDE LEER ESO EN EL PIC F628 POR QUE NO ME A QUERIDO LEER EL DATO.

SI SABES COMO PUEDO LEER EL DATO COMPLETO QUE ENTRA POR EL PIN QUE TENGO COMO ENTRADA SERIAL TE LO AGRADESCO PANA. OK


Desconectado lager

  • PIC18
  • ****
  • Mensajes: 258
RE: en el f628
« Respuesta #6 en: 14 de Febrero de 2004, 22:42:00 »
Que tal spicopic,
mira vas a poder simularlo sin necesidad de ponerle max232 o lel juego de transistores, pero insisto que para que funcione necesitas cualquiera de estos dos conexionados, aqui te pongo el programa que puede ir en tu pic para recibir cualquier dato de 8 bits  y te envio el conexionado necesario para que funcione:

DEVICE=16F628A
CONFIG INTRC_OSC_NOCLKOUT,WDT_OFF,PWRTE_ON,CP_OFF,BODEN_OFF,LVP_OFF,MCLRE_OFF
CMCON = 7
DECLARE LCD_DTPIN PORTA.0
DECLARE LCD_ENPIN PORTB.3
DECLARE LCD_RSPIN PORTA.4
DIM VAR2 AS WORD
PORTB_PULLUPS=TRUE
HSERIAL_BAUD = 9600         
HSERIAL_RCSTA = %10010000      
HSERIAL_TXSTA = %00100100      
HSERIAL_CLEAR = ON         
inicio:HRSIN VAR2
CLS
PRINT "DATO RECIVIDO: "
PRINT  VAR2
goto inicio
   END

No creo que te funcione sin poner el conexionado que te envie, cualquiera de los dos (MAX o Transistores) me funcionan bien,

Saludos pana

Desconectado psicopic

  • PIC12
  • **
  • Mensajes: 93
RE: en el f628
« Respuesta #7 en: 15 de Febrero de 2004, 05:03:00 »
gracias lager ya creo tener la solucion me la acabas de asomar tu la solucion lo que pasa es que usoel comando serin en lugar del serin2 que tiene opcion de recibir datos en otras modalidades lo ensayare..

yo uso el pbpro no el plus pero ya lo baje el plus a ver que tal funciona ok a ver si me adapto a el despues de usar el pbpro saludos en contacto ....

Desconectado RGL

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 634
RE: en el f628
« Respuesta #8 en: 15 de Febrero de 2004, 08:27:00 »
Hola muchachos,

Yo he hecho pruebas con puerta serie (max232) hasta 30 metros y me ha funcionado, pero son unas distancias que sobrepasan la especificacion de la propia norma RS232. Es decir no tendremos nunca asegurado el funcionamiento por parte del fabricante. Si la aplicacion es para nosotros puede valer pero si se va a vender a alguien podemos tener problemas.

Para eliminar los problemas de distancia se usa la norma RS485, que es similar a la 232 pero soporta hasta 1200 metros. El integrado que hay que poner es es el MAX485 (u otros fabricantes).

Saludos
Ricky

Desconectado lager

  • PIC18
  • ****
  • Mensajes: 258
RE: en el f628
« Respuesta #9 en: 15 de Febrero de 2004, 11:15:00 »
Tiene toda la razon RGL, para distancias mayores es mucho mejor usar ottra norma, con respecto al comando serin, te envie ayer una forma de conectarlo, es con una resistencia al pin de rx  y tx del com , puedes ponerlo sin resistencia pero es mejor asegurarse con un limitador de correinte, aqui te pongo el mismo ejemplo pero con serout, te debe de recivir a 2400 bauds en tu com chekalo con una hyperterminal, este te aguanta distancias de metros sin necesidad de max y transistores, en fin  como dijo RGL todo depende de las distancias:
DEVICE=16F628A
CONFIG INTRC_OSC_NOCLKOUT,WDT_OFF,PWRTE_ON,CP_OFF,BODEN_OFF,LVP_OFF,MCLRE_OFF
ALL_DIGITAL=TRUE
INICIO:SEROUT PORTB.2 , 16780 , [ "tu numero aqui SPICOPIC" ]
       DELAYMS 2000
       GOTO INICIO
      END

Este como te dije (el esquema que te envie) es simulando con serin(no usas hardware) el problema con elusart integrado en el pic es que no puedes controlar los niveles y el estado de salida hacia tu pc por eso necesitas a fuerzas el maxxxx, ok?
Solo acuerdate que los dos esquemas que te envie(maxXXX, el que vayas a usar dependiendo la distancia  y transistores) son para el comando HRSOUT OBLIGATORIOS, ya que esta susando el hardware integrado (la usart) del micro, ya te explioque arriba por que no puedes conectarlo directo.
Y el ultimo que te mande es para el SERIN , no necesita modif, ni max, OBLIGATORIO si no es mucha la distancia  solo puedes agregarle resitencias de limitacion de correinte.Pero si es la distancia la que mencionaste anteriormente entonces tienes que agregar el max adecuado a la distancia , y tendrias que cambiar el estandar del comando serin o serout en tu pic ya que el MAXxxx invierte polaridades en el proceso de convertir los niveles de la señal asi que ojo con eso que a lo mejor es lo que anda fallando a la hora de conectarlo con el max . reviza bien el manual, por ejemplo el numero usado 16468 para un baud de 9600 este numero esta ya invertido y listo para conectarse como te indique(con solo resistencias) si vas a usar max o otro artilujio, prueba con este valor 84 que es el valor directo (no invertida la señal) y tendria que funcionarte correctamente con MAX,Aqui te pongo la tabla dependiendo de tu protocolo:
BaudRate   8n1inverted 8n1 true 7t1 inverted 7t1 true
300   19697       3313       27889          11505
600   18030       1646       26222          9838
1200   17197        813       25389           9005
2400   16780        396         24972           8588
4800   16572        188        24764           8380
9600   16468        84        24660           8276
esta tabla es para pbplus, para pbpro revisa en el tutorial de TODOPIC en esta direccion el comando serin :  http://www.todopic.com.ar/pbp_sp.html#serin   ahi viene mejor explicado lo que te acabo de comanetar y la solucion para pb pro , que creo es el que usas.
Espero te sirva la info

Saludos pana

Desconectado waltermet

  • PIC10
  • *
  • Mensajes: 25
RE: en el f628
« Respuesta #10 en: 16 de Febrero de 2004, 06:11:00 »
También podés utilizar el MAX491CPD o ECD (Maxim o Sipex) para la conversión 485-232 y viceversa. Yo lo empleo para comunicarme con un dispositivo a 60 metros y funciona sin problema alguno.

Saludos,
Waltermet


 

anything