TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: alex22ra en 23 de Marzo de 2005, 09:41:00

Título: decodificad codigo manchester
Publicado por: alex22ra en 23 de Marzo de 2005, 09:41:00
Tengo que decodificar el codigo que me da un transponder, pero me lo da en codigo manchester. Tengo que programarlo bajo un pic 16F876 y habia pensado conectarlo a una interrupcion por cambio en las lineas del puerto pero tengo problemas con el ruido, ya que cualquier cambio de nivel producido por el ruido provoca la interrupcion.
Por flancos tampoco se puede hacer.
Se que el tiempo de transmision de un bit es 210 us.
Si alguien me puede comentar algo(a traves del foro o por correo: alex22ra@hotmail.com ) se lo agradeceria.

Salu2.
Título: RE: decodificad codigo manchester
Publicado por: manex_1987 en 23 de Marzo de 2005, 14:11:00
Contra el ruido introduce un schmitt trigger, o sino algun filtro especifico.

salu2
Título: RE: decodificad codigo manchester
Publicado por: fenix_jn en 23 de Marzo de 2005, 23:40:00
Bueno si no puedes usar el Schmitt trigger entonces monta un filtro consistente de 1 condensador de baja capacidad (unos 100 nF) entre las lineas de dato y tierra.
Título: RE: decodificad codigo manchester
Publicado por: Nocturno en 24 de Marzo de 2005, 00:24:00
Si la duración de un bit siempre es la misma, quizás puedas programarlo leyendo lo que hay en el puerto en cada periodo de esa frecuencia de entrada, o sea, cada 210 us. Así no entrarás en la interrupción cuando lleguen flancos de subida o bajada que podrían ser ruido, sino cuando "toque"
Título: RE: decodificad codigo manchester
Publicado por: fenix_jn en 24 de Marzo de 2005, 19:25:00
O sea nocturno, t refieres a usar como lo hacen los receptores asincronicos?? (RS-232), no estaria mal, cuando t refieres a toque t refieres al nivel?
Título: RE: decodificad codigo manchester
Publicado por: Nocturno en 25 de Marzo de 2005, 00:24:00
Bueno, con "cuando toque" quiero decir que se haga una lectura cada 210 us.
De todas formas, habría que probar porque con este método la gestión del tiempo es crítica y encontrar la temporización exacta puede no ser fácil.

Yo probaría con:
#use rs232(BAUD=4762 ,BITS=8)

4762 es el resultado de dividir 1.000.000 / 210 casi exacto, así que si no funciona podrías probar con valores cercanos por encima o por debajo.

Por cierto, he asumido que usas C, aunque quizás no sea así Muchas risas
Título: RE: decodificad codigo manchester
Publicado por: el-dani en 25 de Marzo de 2005, 22:18:00
yo probaría alguna especie de debouncing, es decir una vez se te produzca la interrupción por cambio de linea, lee algunas veces más el pin de entrada para confirmar el estado, y trata de reducir lo más que puedas la impedancia de entrada poniendo una resistencia a tierra de 1K o menor, y un condensador de unos pocos nF 4,7 o algo así
Espero haberte ayudado
Saludos
Título: RE: decodificad codigo manchester
Publicado por: alex22ra en 27 de Marzo de 2005, 11:46:00
Hola, lo primero, muchas gracias a todos por contestar; os comento.

Lo de poner un filtro no sirve, ya q eso solo elimina unas determinadas frecuencias, pero el problema es que segun se acerca el transponder al lector manda datos que no sirven (y son de cualquier frecuencia, incluso la de transmision de codigo).

Lo de checkear el puerto cad 210 us estaria bien pero es que entre esos 210 us se pueden producir cambios de nivel, y algunos puede que sea normal que se produzcan, mientras que otros indicarian que estoy leyendo algo incorrecto.

Os podria poner lo que obtengo del transponder mediante un analizador logico, pero no se como lo puedo insertar en el mensaje.

Ya me contareis. Gracias otra vez. Saludos.

P.D.: nocturno66 yo utilizo ensamblador.