TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: oscarmonte en 16 de Marzo de 2009, 18:32:18

Título: vaciar bufer
Publicado por: oscarmonte en 16 de Marzo de 2009, 18:32:18
hola a todos desde Colombia

estoy programando un pic 16f628a en PSI, el cual utilizo para comunicarme por medio de hserout, hserget y hserin con un modem sim340c y nesecito vaciar el bufer de entrada, lo cual lo hago de esta manera:

1 Dim i As Byte
2 Hseropen 9600
3 AllDigital
4 Hserin i
5 While i > 0
6 Hserout #i
7 Hserget i
8 Wend

el problema es que al borrar la linea 6 el programa no lee todos los datos que estan en el bufer y es necesario borrarla, pues enviaria comandos incorrectos al modem, estoy confundido, es error mio o del sw, como lo puedo corregir o que alternativas hay?.
De antemano gracias :)
Título: Re: vaciar bufer
Publicado por: dogflu66 en 16 de Marzo de 2009, 19:42:54
Lo que puede pasar es que Hserout #i mientras transmite permite que los datos entren en el búfer de la usart y de esta forma cuando le toca el turno a Hserget la función tiene datos que leer. Recuerda que Hserget no funciona como Hserin, este ultimo para el programa hasta recibir los datos por la usart, mientras que Hserget lee el valor 0 si no hay datos en el búfer. Por lo que Hserget siempre devuelve valor tanto si el búfer esta lleno como sino.
Título: Re: vaciar bufer
Publicado por: oscarmonte en 07 de Abril de 2009, 22:39:56
Hola y gracias por tu respuesta dogflu66

bueno, el problema era muy distinto al que yo suponia, lo que sucede es que el pic recibe/transmite bits con un reloj de 8 en 8, y el modem sim300 transmite con un flujo continuo de reloj, al parecer se necesita un bit de sincronizacion entre ambos, pero no se como hacerlo en pic simulator, pero seguire investigando y poniendo al tanto a los amigos del foro.