Autor Tema: Como almacenar informacion "TRINARIA"?  (Leído 4710 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Como almacenar informacion "TRINARIA"?
« en: 24 de Octubre de 2011, 15:58:59 »
Hola! Estoy emulando unos encoders y decoders de radiofrecuencia, y estos utilizan un codigo trinario para la direccion.
Quiero que la direccion se almacene en la EEPROM del PIC, pero ahi esta el problema! Como almaceno informacion trinaria?
Supongo que podria usar "2 bits binarios" para almacenar "un bit trinario"... pero eso tiene una eficiencia del 75%  :?
Hay alguna manera matematica de convertir informacion trinaria en binaria y viceversa?

Salu2

PS: a fines de codificacion y decodificacion ya encontre la solucion, pero me sigue quedando la duda matematica  :g)
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: Como almacenar informacion "TRINARIA"?
« Respuesta #1 en: 24 de Octubre de 2011, 16:10:03 »
Si es por ahorrar memoria... yo haría  un tipo compuesto por un struct de 3 bytes (INT24) y cada byte con una union de 8 bits. Más sus correspondientes funciones de codificación/decodificación. Eso sí: la eficiencia, en terminos de procesamiento, será bastante mala.

1 saludo.
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: Como almacenar informacion "TRINARIA"?
« Respuesta #2 en: 24 de Octubre de 2011, 16:18:26 »
Upppsss acabo de repasar mi planteamiento: no tiene ningún sentido jejeje. LO SIENTO. Lo que dije tiene sentido para un código octal no para uno trinario.

suerte!

Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Como almacenar informacion "TRINARIA"?
« Respuesta #3 en: 24 de Octubre de 2011, 16:55:16 »
Desde el punto de vista de codificacion en radio frecuencia lo hacen asi:


Es decir, para enviar un CERO, envian "dos veces" un cero codificado, si quieren enviar un UNO enviar "dos veces" un uno codificado, y si quieren enviar un floating, envian un cero y luego un uno...
Para guardarlo hare lo mismo, usare 2 bits. Si los dos bits son cero, es un cero, si los dos son uno, pues es un uno, y si es un cero y un uno, un floating...

Como decia al principio esta no es una manera optimizada de guardar datos, pero tampoco ando escaso de EEPROM, asi que me lo puedo permitir :D

Igualmente, si hubiese alguna forma matematica de convertir el numero ternario en binario y viceversa seria interesante aprenderlo.

Salu2
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado bmfranky

  • PIC16
  • ***
  • Mensajes: 165
    • La Tienda De Fran
Re: Como almacenar informacion "TRINARIA"?
« Respuesta #4 en: 24 de Octubre de 2011, 17:14:36 »
Hola, como tu mismo te contestas, no existe la manera de matemática de convertir un numero Trinario(3 estados) en uno Binario(2 estados) salvo para los dos estado extremos.

La mejor solución es la que tu planteas, que realmente seria Cuaternario (4 Estados), pues siempre te quedaría un estado posible.
Visiten La Tienda De Fran ;-) Aqui. y mi nueva Web Aqui.

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: Como almacenar informacion "TRINARIA"?
« Respuesta #5 en: 24 de Octubre de 2011, 18:06:28 »
¿y si utilizas la propiedad de cambio de base de los logaritmos? Ahora que se va a volver loco el micro jeje
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Como almacenar informacion "TRINARIA"?
« Respuesta #6 en: 24 de Octubre de 2011, 20:41:20 »
¿y si utilizas la propiedad de cambio de base de los logaritmos? Ahora que se va a volver loco el micro jeje

Y eso?
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: Como almacenar informacion "TRINARIA"?
« Respuesta #7 en: 25 de Octubre de 2011, 05:11:59 »
no digo más que cosas inutiles: estoy sembrao  :D lo siento.

Con logaritmos puedes cambiar bases pero tú lo que necesitas es cambiar la represntación númerica.

Al final creo que no hay fórmulas que valgan mas allá de la que hayas podido hacer tú con alguna función recursiva o bucles for ... utilizando multiplicación, división y módulo.

Siento ser de tan poca ayuda  :( 1 saludo.
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Como almacenar informacion "TRINARIA"?
« Respuesta #8 en: 25 de Octubre de 2011, 06:11:02 »
Jajjaja, no te preocupes manwenwe. Llamemosle brainstorming, donde no todas las ideas son validas :P
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Como almacenar informacion "TRINARIA"?
« Respuesta #9 en: 25 de Octubre de 2011, 09:13:39 »
Al menos aportas ideas. Yo llevo pensando desde que Marttyn abrió el hilo y no se me ocurre nada que valga la pena.

Desconectado bmfranky

  • PIC16
  • ***
  • Mensajes: 165
    • La Tienda De Fran
Re: Como almacenar informacion "TRINARIA"?
« Respuesta #10 en: 25 de Octubre de 2011, 09:59:29 »
Desde el punto de vista de codificacion en radio frecuencia lo hacen asi:


Es decir, para enviar un CERO, envian "dos veces" un cero codificado, si quieren enviar un UNO enviar "dos veces" un uno codificado, y si quieren enviar un floating, envian un cero y luego un uno...
Para guardarlo hare lo mismo, usare 2 bits. Si los dos bits son cero, es un cero, si los dos son uno, pues es un uno, y si es un cero y un uno, un floating...

Como decia al principio esta no es una manera optimizada de guardar datos, pero tampoco ando escaso de EEPROM, asi que me lo puedo permitir :D

Igualmente, si hubiese alguna forma matematica de convertir el numero ternario en binario y viceversa seria interesante aprenderlo.

Salu2

Hola, revisando detenidamente el fragmento de información(¿Datasheet?), que pones, la mejor solución es la de utilizar 2 bits por cada 1 Trit* :shock: (Valla salvajada acabo de poner),
Pues para enviar el código, solo has de hacer una función re-cursiva que lea bit a bit y si es 1 , emita el uno codificado y si es 0 emita el cero, asi durante los n bits de la trama.
Creo que matas dos pájaros de un tiro, emites el código, y te olvidas de la codificación trinaría.

*Trit, unidad imaginaria mínima que puede contener un valor trina-rio. :D

Mira esta representación de lo que sugiero.

partimos de la situación de que hemos recibido la señal de emitir el código de 10 Trits..

1-> cargamos los bytes necesarios, en este caso 3(1-Byte = 4-Trits.)
2->vamos a la función genérica descodifica código().
3->en esta hay una rutina que se encarga de leer los datos del los 3 bits anteriores, y de proceder a llamar a las rutinas Send_uno() y Send_cero() según corresponda a los bits.

Esto es una idea general, y supongo que te parecerá una burrada, pero yo creo que te serviría bien, pues con simplemente cambiar los 3 parámetros antes de llamar a la función de descodificación, cambiarías el comando a enviar.

Espero no te moleste esta opinión mía, me gustaría saber que opinas al respecto.

Buenos días y saludos a todos. :oops:
Visiten La Tienda De Fran ;-) Aqui. y mi nueva Web Aqui.

Desconectado sayamvo

  • PIC10
  • *
  • Mensajes: 25
Re: Como almacenar informacion "TRINARIA"?
« Respuesta #11 en: 25 de Octubre de 2011, 10:55:34 »
Buen dia, el proceso para almacenar esta informacion es un poco largo pero  no imposible,  lo primero es almacenar  cada uno de los componentes del numero trinario en variables separadas, luego hacer la conversion de la informacion almacenada en las variables a numeracion decimal y almacenar esa informacion en una sola variable,  si tenemos la informacion en decimal lapodemos manejar en binario, hexadecimal o decimal ( el pic o el procesador solo trabaja en binario aunque para nuestra comodidad podemos manejarla en dec )

http://matematica-de-sexto.blogspot.com/2011/03/sistema-de-numeracion-en-base-3.html

si leemos esto podemos darnos mas ideas de conversion y almacenamiento.
sayamvo

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Como almacenar informacion "TRINARIA"?
« Respuesta #12 en: 25 de Octubre de 2011, 11:58:21 »
Franky, si no te entendi mal es lo que estoy haciendo ahora. Leo y envio bit a bit.
sayambo, eso es lo que estaba buscando! Es genial, aunque por otro lado, tiene sentido, se hace lo mismo para binario!
Me voy a hacer una calculadora en VB para convertir de uno a otro, aunque para PIC seguire con el metodo de dos bits por "trit" jeje
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.


 

anything