Autor Tema: USART E INTERRUPCIONES  (Leído 3001 veces)

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

Desconectado arnoldojrm

  • PIC10
  • *
  • Mensajes: 16
USART E INTERRUPCIONES
« en: 24 de Noviembre de 2004, 13:41:00 »
Hola a todos y gracias por leer este mensaje!

Estoy realizando un programa que tiene un ciclo repetitivo, pero necesito que cuando llegue un dato serial, este se interrumpa, de servicio al dato entrante y regrese nuevamente al ciclo repetitivo.

he leido sobre On Interrupt Goto pero no me dice nada de las interrupciones cuando llega un dato via puerto serial, necesito hacerlas en asm?, me gustaria resolver el problema usando solo las instrucciones basic, hay manera de hacerlo?, debo implementar el USART del micro o solo trabajo con serin?

Estoy usando un pic 16F876 y un cristal a 20 MHz

Arnoldo Rodríguez, Barquisimeto, Venezuela
arnoldojrm@yahoo.es

Desconectado RGL

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 634
RE: USART E INTERRUPCIONES
« Respuesta #1 en: 25 de Noviembre de 2004, 04:17:00 »
Mira en www.melabs.com, ahí tienes ejemplod de interrupciones en asm y en basic. Son ejemplos cortos que funcionan. A partir de ellos no creo que te sea dificl hacer pruebas.

Tambien tienes un post en el foro de PBP, que puedes buscar y que lo puso Abago para comunicaciones serie usando rutinas en ensamblador. Buscalo y encontrrás info buena.

Saludos
Ricky
Madrid-España

Desconectado arnoldojrm

  • PIC10
  • *
  • Mensajes: 16
RE: USART E INTERRUPCIONES
« Respuesta #2 en: 25 de Noviembre de 2004, 13:01:00 »
gracias por tu ayuda.

Estoy realizando la comunicacion serial usando el comando hserin y hserout, se trata de enviar una letra al pic y que este la devuelva, pero me pasa algo muy curioso, a veces mando la letra y el pic constesta correctamente, pero a veces envio la letra y constesta de manera erronea, por ejemplo mando la "a" y me contesta "!", mando la "b" y me contesta " he notado que cuando llega un caracter errorneo este es 64 veces menos que el original ( o sea si envio 97 que es la a llega 33), repito a veces los caracteres si llegan bien.

que podra ser?
Llorica

Desconectado RGL

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 634
RE: USART E INTERRUPCIONES
« Respuesta #3 en: 25 de Noviembre de 2004, 16:42:00 »
Es dificil saber así a bote pronto, pero si tienes una placa protoboard de las de pinchar puede ser una mala conexión, revisa los cables. La comunicación serie va de vicio. Yo he trabajado mucho con PBP serin2 y serout2 a 2400 y a 9600 y me ha funcionado muy bien. Nunca he tenido problemas de inestabilidad, bueno a veces se me han roto circuitos.

Comprueba las alimentaciones de los circuitos, el rizado de la fuente. Los condensadores del Max 232.

Si la comunicacion la haces con 4MHz del reloj interno y transmites a 9600 a veces dicen que da problemas. Yo en mis circuitos lo he probado eso y me ha funcionado bien.

Si quierews pon tu codigo de transmision recepcion y le echamos un vistazo.

Saludos
Ricky
Madrid-España

Desconectado lager

  • PIC18
  • ****
  • Mensajes: 258
RE: USART E INTERRUPCIONES
« Respuesta #4 en: 25 de Noviembre de 2004, 18:10:00 »
100% deacuerdo con el pana Ricki,
Es mas facil que te ayudemos si pones tu codigo para revizarlo.
Tambien e usado el reloj interno no solo para transmision serial, si no tambien para aplicaciones mas criticas de tiempo(OSD para TVs) y funciona a la perfeccion, ¿no se por que dicen algunos que da problemas de tiempo ...?(esto es totalmente cierto(si tienes tu equipo prendido 24 hrs al dia), pero es  un problema que se acentua mas cuando se tiene una fuente con demasiada corriente...etc) hasta la fecha todos los proyectos que e realizado funcionan bien... no olvidemos que si la fuente es deficiente, si usas el externo TAMBIEN va a dar problemas y corrimiento en frecuencia..... ademas de los detalles de corte de cristal,resonancia paralelo, reonancia serie, etc... Son bastantes los factores que tambien intervienen en cristales externos..y que se pueden corregir si es un cristal deficiente con un  C variable para ajuste preciso junto con un osciloscopio... pero parece mas un problema de intermitencia...

Un abrazo panas

Desconectado arnoldojrm

  • PIC10
  • *
  • Mensajes: 16
RE: USART E INTERRUPCIONES
« Respuesta #5 en: 26 de Noviembre de 2004, 09:36:00 »
ya encontre el problema, estaba en el  SPBRG  y el  brgh , no tenian los valores apropiados, ya los ajuste y ahora mi comunicación serial esta de maravillas.

Gracias por su ayuda.

Se despide desde Venezuela.

Arnoldo José

Esto si que es ayuda !

RebotadoNavidad

Desconectado PIC-A-SHU

  • PIC10
  • *
  • Mensajes: 30
Re: USART E INTERRUPCIONES
« Respuesta #6 en: 10 de Julio de 2006, 17:14:59 »
HOLA COMO ESTAN, CREO QUE POR FIN ENCONTRE A LAS PERSONAS QUE ME PUEDEN AYUDAR DENTRO DEL FORO.
ESTOY REALIZANDO UN CONTROL DE 2 SERVOMOTORES POR MEDIO DEL PIC 16F873, LA IDEA ES QUE ESTOS SERVOS ME CONTROLEN 2 MOTORES DE COMBUSTION UTILIZADOS EN AEROMODELISMO, ADEMAS DEBO TOMAR LA LECTURA DE VELOCIDAD DE GIRO DE LOS MOTORES POR MEDIO DE UN TACOMETRO.

YO YA TENGO LOS 2 PROGRAMAS POR SEPARADOS, PERO AHORA DEBO JUNTARLOS. MI PROBLEMA ES QUE AL JUNTARLOS NO ME FUNCIONAN ES POR ESO QUE QUIERO QUE ME AYUDEN Y VOY A COLOCAR LOS CODIGOS PARA QUE LOS REVISEN.

CONTROL DE SERVOS:
include "MODEDEFS.BAS"
define osc 4
A var word
B var word
C var word
R var word
A1 var word
B1 var word
C1 var word
PORTB=0

inicio:
R=0
serin portb.1,n9600,A,B,C
LOOKDOWN A, ["0123456789"],A1
LOOKDOWN B, ["0123456789"],B1
LOOKDOWN C, ["0123456789"],C1
R=(A1*100+B1*10+C1)
pulsout portb.2,R
pulsout portb.4,R
goto inicio



TACOMETRO:



include "MODEDEFS.BAS"
define osc 4
w1 var word
w2 var word
a var word
b var word


inicio:

count portc.0,1000,w1
count portc.2,1000,w2
a=60*w1
b=60*w2
serout portc.1,t9600,["MOTOR1 :",#a," ","MOTOR2 :",#b]

goto inicio

EL ENVIO Y RECEPCION DE DATOS DEBO HACERLO POR MEDIO DE VISUAL BASIC.

PD: NOSE SI LAS INSTRUCCIONES SON LAS ADECUADAS PARA QUE ME TRABAJEN JUNTAS, OJALA PUEDAN AYUDARME Y ESTE MUY CLARO LO QUE NECESITO.-

UN ABRAZO GRANDE Y ADIOS.-