Terminología y Conceptos en el contexto de la Electrónica

Hellmut1956

Referente
Mensajes
1.300
Puntos
36
Ubicación
Mammendorf, Alemania
Hola amigos
A razón de la crítica, indicación sobre mi uso de terminología en mis contribuciones he reflexionado un poco. Creo que esta crítica fue muy constructiva y creo que debemos crear un hilo como este para tener un lugar donde informarnos de forma sencilla y ojala que la información pueda ser entendida por todos.
Pienso que no debe ser una explicación científica y de una forma que cumpla los requisitos de profesionales, sino un apoyo que permita entender la función y su utilidad para todo aquel interesado en la electrónica aplicada a barcos.
Al administrador le sugeriría darnos la posibilidad de tener una sección debajo de la presente, "Electrónica aplicada a barcos". También desearía recomendar que usáramos un formato común muy sencillo y proponga, sin animo que mi propuesta sea la adecuada ni que la halla reflexionado mucho. Por lo tanto muy interesado en sus propuestas y recomendaciones. Creo que cada término no debe contener más que un mínimo de datos para mantenerlo simple y usar los enlaces para permitir el acceso a datos más extensos sobre el tema. Bueno fuera si el administrador u otro de Ustedes tuvieran una recomendación como lograr que un interesado pueda acceder los datos al término correspondiente ejecutando una función de búsqueda. La otra recomendación sería usar la función disponible en el foro de poner detrás de la vez de primer uso del término un enlace al artículo correspondiente del término. Como ejemplo aquí, donde un clic sobre el término subrayado nos lleva a este hilo. En este caso cada término debería estar como artículo independiente en la sección del foro correspondiente. Esto significa que lo que sigue aparecería como un hilo independiente que no debería contener más que exclusivamente la información listada como ejemplo, sugerencia abajo:

Término: "I2C"
Función: "bus" (ver término "bus")
Descripción:
"I2C" es una técnica desarrolladla por la empresa "Philips", hoy llamada "NXP", que permite de forma económica, sencilla y usando muy pocos recursos, el dialogo entre componentes electrónicos. Esta función se encuentra hoy incluida en muchísimas componentes electrónicas de casi todos los proveedores.
Posible uso en barcos:
Reemplaza en la parte digital la función del cable que une un servo u otro dispositivo al canal correspondiente del receptor R/C tiene en un sistema convencional.
Imágenes o gráficos:
En este momento no tengo ninguna imagen o grafico disponible. Pero una imagen explica más que mil palabras!
Enlaces:
Enlaces a recursos en el internet con informaciones adicionales se pondrían aquí.
Dispositivos:
El término I2C no permite listar dispositivos específicos pues la lista sería interminable. Pero si nos imaginamos otros términos sería útil saber el nombre de un dispositivo apto para nuestro hobby.
 
totalmente de acuerdo contigo Hellmut1956, ahora bien amigo mio, yo por la critica de los demás, si no es contructiva no le hago caso, dado que cada uno vamos a aportar buenamente lo que podemos o sabemos, unos lo haran mejor, y otros lo haremos peor, pero en definitiva lo haremos con buena intención. y lo más importante todos, aprendemos de todos
yo el primero que me queda muchisimo que aprender.

en lo que dices de crear un hilo donde podamos compartir todos información electronica, tambien estoy de acuero, pues ahora, tengo que ver lo que pone nuestro gran amigo carptroya por un lado y tu, por otro, cuando creo que los tres mas o menos hablamos de lo mismo, y para los demás creo que seria más facil ver los proyectos o avances de unos y otros.

bueno me gustaria aportar mi granito de arena con esta imagen respecto al bus 12 c
 

Archivos adjuntos

  • Dibujo.jpg
    Dibujo.jpg
    14 KB · Visitas: 192
hola nuevamente amigos, os comento. En 1º lugar, deciros que he solicitado al administrador un hilo junto al de "ELECTRICA APLICADA A BARCOS", donde se pueda hablar de microcontroladores y similares aplicados a barcos, o se sí es posible, o lo aceptará, cuando tenga respuesta os lo comentaré.
en 2º lugar, y dado que me surjen varias dudas, os pregunto, por favor decirme que es, lo que queremos o podemos hacer, es decir, vamos a empezar por realizar una emisora desde cero, ¿que tipo, frecuencia, canales, etc?, pantalla tactil, comunicacion bidireccional, para solo video o tambien datos, servos digitales, también gps, bus de comunicaciones 12c ¿LO SIENTO ME PIERDO?, que presupuesto se necesita para todo esto, además de todos los ploblemas o inconvenientes técnicos que van ha salir con todo eso,
por otro lado y como tambien tendo dudas os pregunto a los dos, porque lo desconozco: se pueden comunicar el Atmel con el pic, ¿con qué o cual protocolo?, otra duda amigo hellmut, se podría utilizar tu tarjeta de desarrollo, para grabar y probar el Atmel, para posteriormente, con el Atmel ya grabado, utilizarlo para unos modulos concretos, sin el Harware, que lleva la placa, ecepto los necesarios (cristal, etc y los necesarios para ese modulo) o bien como hijos de una nodriza, en fin muchas cosas que no se por donde voy, si yo lo unico que queria de momento, era un variador PMW para mi barco, y simular sonido diesel, bueno espero que me orienteis, cartroya ya voy por la pág 70 de niple, VENGA SALUDOS A LOS DOS.
 
HAAA OTRA COSA si OS PARECE BIEN A LOS DOS, si no fuese posible lo del hilo,
¿quereís que tomemos con tu permiso, Hellmut por ejemplo este?
 
Hola josechu

Primero, cualquier información u otro dato que presente aquí tienen el explicito propósito de que os sirvan para cualquier necesidad que tengan, siempre y cuando no tenga ánimo de lucro, siempre y cuando el propósito es su uso para nuestro hobby!

Segundo, los controladores, cualquiera que sea el proveedor, siempre pueden comunicarse el uno al otro. Por lo general hay 2 métodos disponibles que se usan para este propósito. La una es la interfaz RS232, la cual permite la comunicación entre 2 componentes, por ejemplo un PIC y un Atmel. Aquí por lo general se trabaja con tensiones que difieren de aquellas para comunicarse con la interfaz RS232, también llamada serial, del ordenador/PC.

El otro camino es el "Bus" I2C. La ventaja de este es que es posible comunicarse entre más de 2 componentes. Cada componente tiene su propia dirección y el que transmite dice a cual dirección está mandando los datos y el que recibe así sabe que son para él.

Referente a "mi" tarjeta experimental. Exactamente ese es una de los propósitos. Déjame listarlos aquí:

1. Aprender que fácil es hacer su propia tarjeta.
2. Aprender, en especial con los comandos de especiales de BASCOM (el programa para crear programas para el controlador y grabar estos en el), implementar todo tipo de funciones que puedan ser de interés para modelistas.
3. Usar la tarjeta para entender y verificar como se puede:
* leer los datos del receptor del radio control
* controlar un servo
* medir el flujo de corriente
* usar la misma tarjeta como variador para motores DC
* implementar cualquier tipo de función.
4. Naturalmente que podemos utilizar la tarjeta para grabar el programa en cualquier controlador que quepa en el zócalo y sea compatible. Pero también, habiendo construido la tarjeta experimental, hemos adquirido la experiencia para crear una tarjeta similar para cualquier otro controlador que queramos utilizar. La diferencia es casi nula, mientras nos quedemos usando controladores „normales“. Los no normales son aquellos, que resultan mucho más demandantes para crear una placa debido al empaque que estos usan. Para este propósito he creado el hilo para crear tu propia placa. Con los conocimientos que presento allí serás capaz de crear tu propia placa hasta del procesador más demandante como un i7-920 de Intel. Pero ese sí que es equivalente a hacer una promoción para el título de „doctor“ en ciencias!

Una vez que verificamos que hemos logrado hacer que la tarjeta experimental hace lo que queremos, nos construimos una placa específica para usarla en el navío. La tarjeta la podemos utilizar para seguir creando las soluciones que queramos.

Referente a tu pregunta referente al variador, la tarjeta experimental te permite controlar un motor DC, significa que también puede hacer las veces de variador. Construye tu tarjeta experimental, yo te estaré acompañando para que la completes con éxito y también te estaré acompañando hasta que puedas controlas un motor desde los controles del transmisor que usas, a través de tu receptor, la tarjeta experimental a la que le conectamos el mini circuito de potencia al motor.

Cuando hallas completado esto, me será un honor que hagamos la placa tal cual la quieres en tu casco que representará el variador. Una de las ventajas de los controladores modernos, esto es válido tanto para los PIC, como los Atmel y muchos otros, es que tienen una memoria no volátil, significa que el programa queda grabado aún cuando no esté conectado a una fuente de alimentación eléctrica. Esta memoria se llama “flash” y es la misma que se usa en las tarjetas de memoria que ponemos en los móviles. Esta memoria se puede borrar y volver a grabar aún cuando el controlador se encuentre instalado en la placa que representa tu variador! Así tú puedes continuar mejorando el programa del variador para sumarle habilidades adicionales.
 
gracias por responderme tan pronto Hellmut,
te dire, que mi intencion desde en un principio, es que todo lo que pueda aportar yo en este foro es si lucro, eso es obvio, yo lo que preguntaba, era otra cosa, defino: por donde empezamos o que hacemos primero, o mejor aun en que proyectos puedo colaborar.
2º yo sa se que se podián comunicar varios pic de la misma familia, unos entre otros, bien a través del bus 12c, o rs 232, lo que desconocia, si tambien era posible, entre motorolas, Atmel, Microchip, Intel, y que encima hablen varios lenguajes, como basisc, Asm. Entonces entiendo que no hay problemas con estos dispositivos, siempre que se les configuren cual es el maestro, y cuales son los esclavos, en el bus 12c, GRACIAS por estas dudas, ya se una cosa más.
y viene al caso por si tuviesemos que conectar el Atmel con el pic 16f876.

por último el HONOR, es para mí poder contar contigo, hacer tu tarjeta experimentar (que tenia en proyecto hacerla) y comentarte cualquier cosa que yo pueda, o podamos hacer, lo que pasa es que se me acumula el trabajo, lamentablemente dispongo de poco tiempo libre, (trabajo por las mañanas y tardes), tambien tengo que terminar mi barco, nuestro amigo carptroya me dio un mes para estudiar un libro de 242 pág, y estoy en ello, la jefa de la casa tambien quiere mi atención, bueno como dije una vez, DESPACITO PERO SIN PAUSA.
 
Perfecto. Conosco el tema del tiempo disponible, aún estando sin trabajo renumerado desde hace ya aprox. 9 anos. En este momento estoy tratando de armarme un negocio ofreciendo traducciones técnicas del inglés al alemán. De vez encuando consigo un contrato, pero en uno de 4 el cliente no paga.
Al tiempo estoy trabajando en crear un ordden en mi taller, pues el chaos es el que manda aquí. Me estoy armando un estante para cajitas done puedo poner las mil y una componente que tengo aquí y así cambiar del status quo: "es más sencillo comprar una componente cuando la necesito que encontrar la que tengo!"

Una vez completado esto me ocuparé de crearme el regulador para los LED de la iluminación de la cubierta de mi velero y los variadores para motores DC y para los motores de paso. Necesito un para los motores de paso que me consigo reciclando unidades de disco Cd viejos, el otro para un bien fuerte. El reto aquí es que quiero utilizar para el motor de pasos una componente fantástica, pero esta tiene el reto del empaque. Muchos pines muy junto el uno al otro.
 
lo que queriamos, si es posible, en el apartado del EL DIQUE: FOROS MODELISMO NAVAL, hay ocho apartados, que son
paso a paso barcos rc, proyecto: barca de bou RC paso a paso, escala rc, y así hasta los ochos, apartados, que termina en vapor vivo.

pues bien, queriamos otro apartado mas, en total nueve, y que este nuevo se llamase "Microcontroladores aplicados a barcos" donde apate de la electronica normal, se pudiesen poner solo los circuitos de microcontroladores, en fin un apartado, que no sean las consultas habituales de como conecto el servo a mi emisora, o que motor utilizo en mi barco, etc, un lugar donde podamos hacer comentarios un poco más técnico, sin restar importancia a todos aquellos que quieran consultarnos sobre esta técnica, BUENO ESPERO HABERME EXPRESADO BIEN, venga saludos a todos y muchas gacias por atenderme Joaquín.
 
Muchisimas GRACIAS Joaquin.

hola hellmut 1956, espero que sea esto lo que queriamos, hay que avisar a carptroya, si no lo ha visto ya, de que estamos aquí,

espero que desde éste sitio, se sumen muchos más, que sé, que los hay y están muy calladitos jajajajaaaa

Y PARA TODOS AQUELLOS QUE NO ENTIENDEN NI PAPA DE MICROS,
y quieran saber algo o mucho sobre el Atmel,
UN CONSEJO DE BUEN AMIGO, SEGUIR LO INDICADO POR hellmut1956

:roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll:
 
Yo recomiendo abrir un segundo hilo con el proposito de limitar este hilo exclusivamente a contener los términos, y el segundo hilo para pedir que se genere la descripción de cualquier término que un usuario requiera. Que les parece? Esto lo hago ahora!
 
Hola amigos
Hoy quiero explicar la relación de términos de sistemas aritméticos como los on por ejemplo el sistema binario, el casi no usado octal, hexadecimal, y lo que son los valores que puede asumir un dígito en cada uno de estos sistemas, el margen de valores que resulta como consequencia de lo anterior y finalmente implicaciones para aquellos que quieren programar soluciones, donde el contador, también conocido como Timer es requerido. El reloj o temporizador es la fuente de los ticks que impulsan el controlador. Sigue un ejemplo y explica porque existen Timer de 8 y 16 bits en los controladores e informaciones del asimplicaciones en otros campos.

Todo aque que entienda de que demonios estoy hablando en este primer párafo puede dejar de leer esto, porque ya lo sabe todo! El objetivo por lo tanto es darles aquellos conocimientos que os permitan entender lo dicho!

Empiezo por los sistemas aritméticos con foco en su relevancia en la electrónica digital:

Hay que empesar explicando que todos los sistemas aritméticos basan en la expresión:

X = A^B

Unos ejemplos:
2^0=1
2^1=2
2^2=4
2^3=8
2^4=16
2^5=32
2^6=64
2^7=128
2^8=256

Aquí A se llama “Base” y B se llama “Exponente”

Por lo tanto el sistema aritmético que usamos a diario, el sistema métrico, tiene la base = 10.

10^1= 10
10^2=100.

Los nombres de los sistemas aritméticos reflejan el número de permutaciones que existen en el sistema para un dígito. Quiero explicar el significado de permutación para así poder usarlo de ahora en adelante.

Permutacion se llama la gama de valores posibles, en nuestro caso de un dígito. Ejemplo, el sistema binario, se llama así, pues tiene 2 posibles permutaciones de un dígito, el “0” y el “1”.

Pasemos ahora a nmbrar algunos de los sistemas aritméticos y listar las permutaciones que tiene cada uno de estos:

Sistema binario, 2 permutaciones, “0” y “1”
Sistema octal, 8 permutaciones, “0”, “1”, “2”, “3”, “4”, “5”, “6” y “7”
Sistema decimal, 10 permutaciones, me ahoro listarlas
Sistema hexadecimal, 16 permutaciones, “0” a “9” y “A”, “B”…”F”

Pasemos ahora a como se implementan sistemas aritméticos no binarios en el entorno de la electrónica digital que solo conoce el sistema binario y porque ciertos sistemas aritméticos son usados en la electrónica digital y en todo lo que a ordenadors y controladores se refiere.

El sistema binario es lo único que hoy en día conocen los circuitos electrónicos a nivel de la hardware, hay tensión aplicada, por ejemplo 5V, lógicamante es un “1”, no hay tensión y hablamos del “0”. Si ahora queremos ver el contenido de un registro en un controlador de 16 bit, entonces la representación binaria es: “0000 0000 0000 0000”
Como pueden ver he escrito los 16 bits de un registro en bloques de 4 bits, pues es mucho mas facil de leer que si los escribiría en un solo bloque, donde no podría estar seguro sin un estricto control que no me he olvidado de un bit o si he escrito uno demas. Así puedo indicar una de las razones, por las cuales el sistema aritmético hexadecimal es tan usado en la electrónica digital. Esos 4 bits por eso tienen un nombre propio, así como el “Bit” es el nombre para cada dígito binario, el “nibble” es el nombre para grupos de 4 bits! Un registro de 8 bits por lo tanto consiste de 2 nibbles y uno de 16 bits de 4 nibbles.

Ahora usamos el término recién aprendido de las “permutaciones”. Los 4 bits de un nibble tienen 16 permutaciones posibles a las cuales a cada permutación se les asigna un dígito del sistema aritmético hexadecimal!

“0000” equivale “0” hexadecimal equivale decimal “0”
“0001” equivale “1” hexadecimal equivale decimal “1”
“0010” equivale “2” hexadecimal equivale decimal “2”
“0011” equivale “3” hexadecimal equivale decimal “3”
“0100” equivale “4” hexadecimal equivale decimal “4”
“0101” equivale “5” hexadecimal equivale decimal “5”
“0110” equivale “6” hexadecimal equivale decimal “6”
“0111” equivale “7” hexadecimal equivale decimal “7”
“1000” equivale “8” hexadecimal equivale decimal “8”
“1001” equivale “9” hexadecimal equivale decimal “8”
“1010” equivale “A” hexadecimal equivale decimal “10”
“1011” equivale “B” hexadecimal equivale decimal “11”
“1100” equivale “C” hexadecimal equivale decimal “12”
“1101” equivale “D” hexadecimal equivale decimal “13”
“1110” equivale “E” hexadecimal equivale decimal “14”
“1111” equivale “F” hexadecimal equivale decimal “15”

Como pueden ver, los números árabes solo conocen 10 dígitos diferentes, así el sistema hexadecimal usa las letras de “A” a “F” para poder representar los dígitos adicionales. También es facil de ver cuanto mas facil es representar cualquier permutación binaria usando el sistema hexadecimal, aquí el ejemplo del registro de 16 bits en representación hexadecimal:

“00 00” o “h00 00”, donde la “h” nos dice que es un sistema hexadecimal, una “b” nos diría que es un sistema binario! El contenido del registro en el sistema binario es: “b0000 0000 0000 0000”

Ahora vemos que un byte con el valor “0” podemos representarlo en una de estas formas:

b0000 0000 representación binaria
h00 representación hexadecimal o abreviado “hex” de un byte que contiene 8 bits.

El sistema octal tendría 8 permutaciones para lo que bastan 3 bits como pueden ver arriba. Ya que esta representación que usa 3 bits no tiene mucha aplicación práctica este sistema existe pero no es muy usado.

Pero he usado este ejemplo para dar el paso a explicar la importancia del número de bits de un controlador, de un registro y de un contador!

Un controlador de 8 bits, como lo son los famosos, ya legendarios Z80, 8051 y 6800, implementa todas sus funciones internas paralelizando 8 unidades. Significa que los registros son de 8 bits, pero tendrá algunos de 16 bits, ya explicaré porque, los buses por llamarlos las carreteras de datos internas, son de 8 carriles, uno para cada uno de los 8 bits. Todo interno está adaptado a processar 8 bits al tiempo. Usemos este ejemplo por ser mas sencillo por consistir de menos bits, pero lo que diré se puede aplicar directamente a todos los otros controladores, sean de 16 bits, de 32 bits o de 64 bits como son procesadores en los oderenadores mas modernos!

El número decimal mas grande que puedo expresar usando 8 bits es “d256” (sistema aritmético decimal!). Si quiero expresar también números negativos, entonces solo puedo expresar números entre “-128” y “+127”. Esto son 256 valores diferentes, el límite de los 8 bits! Porque difiere el número decimal negativo del positivo? Pues no hay que olvidar el “0”, así tenemos 128 valores negativos y 128 valores positivos incluyendo el “0”! Para explicarlo hay que decir que cuando una variable o constante en un programa es de 8 bits, del tipo “byte”, y que se define de poder contener valores negativos, esto es así! En el caso de nuestra tabla arriba con los 16 valores de un nibble, que se muestra en la representación binaria, entre la mitad superior y la inferior son identicas con excepción del primer dígito binario a la izquierda. La mitad superior, de “0” a “7” tiene el primer bit a la izquierda con el valor “0” y la otra mitad con el valor “1”. Así se ha determinado arbitrariamente , que la primera mitad de datos es positiva y la segunda negativa.

Pero que es el efecto de esto? Es que ya es imposible representar un valor decimal de “d128” a “d255” en un solo byte, lo que es posible si solo represento valores positivos!

La solución es usar múltiples bytes, en este caso 16 bits. Pero ya aparece el segundo problema! Como vemos en la representación binaria de la tabla grande de arriba los bits que representan los números hexadecimales o decimales van aumentando de la derecha a la izquierda! Esto se denómina en inglés como “most significant bit” o “least significan bit”! Siendo la expresión “most” indicativo que se trata en nuestra tabla con los bits a la izquierda siendo los mas significativos, o para decirlo en otras palabras, representan un valor mayor, y viceversa para “least”!

Esta relación se expresa como “big endian”. Pero también puede ser al reves, siendo el orden de la izquierda a la derecha? Esto puede ser de la una u otra forma, aunque con los bits creo que siempre es como lo represento, pero en algun sitio de la hoja de datos el dato puede aparecer, en especial si es “little endian”!

Aquí un ejemplo donde si es de muy alta importancia, porque difiere, es en el orden de los bytes! Los sistemas de Windows son “little endian” los de Linux con frequencia “big endian”. Y aquí llegamos otra vez al hilo rojo de este mensaje. En los Atmel rije el sistema “big endian” significa que si un registro es de 2 bytes, entonces el byte a la izquierda se usa para los valores grandes y el de la derecha para los valores pequenos.

Aquí el ejemplo:

“h80 01”, “b1000 0000 0000 0001” “d32769” y el valor
“h00 01”, “b0000 0000 0000 0001” “d1” y el valor
“hFF FF”, “b1111 1111 1111 1111” “d65535” 0 64k!

En este sistema “big endian” el byte a la izquierda es el para los digitos grandes. En el sistema “little endian” es al reves habiendo que representar los bytes como sigue:
“h01 80” para el valor decimal “d32769” “little endian” y “h80 01” en “big endian”.

Como pueden ver los compiladores esconden muchos de estos detalles de nosotros los programadores, pero en ciertas operaciones hay que saber de esto y en especial programando en assembler o muy cercano a la hardware lo que es el caso en nuestros usos!

Indiqué arriba que la representación decimal de la representación hexadecimal “hFF FF” equivale a “d65.535” y que esto se puede también escribir como “64k”. Aquí entra otro de los trucos del marketing, en especial en lo relacionado a la capacidad de discos duros!

El truco viene de la diferencia en valores decimales de “1k” en términos del marketing y de la realidad en los ordenadores! 1k en expresión decimal representa “1.000” unidades, en representación de los ordenadores que basan en el sistema binario es 2^10=1024 unidades. El marketing por lo tanto divide el número de posiciones de memoria en un disco duro por 1000 y expresa la capacidad del disco en kbytes, cuando dejamos el sistema operacional del ordenador decirnos cuanta memoria hay disponible el ordenador lo divide por 1024 resultando en una capacidad inferior a la declarada por el vendedor del disco duro como capacidad después de formar el disco duro! Así para motivo de promoción el disco parece mas grande de lo que realmente es sin que el vendedor mienta! Ven como en la vida diaria esta materia aparentemente tan seca y exótica se confronta con nosotros en lo diario!

Habiendo así pasado al tema de la capacidad o del alcanze de los números según el sistema aritmético que se usa y del número de bnits o bytes disponibles, pasemos al caso del contador o “Timer” en los controladores, que se volverá importante al momento de crear, usar la función de “PWM” en un variador electrónico o para decodificar la señal de la receptora!
Un contador de 8 bits solo puede contar de “0” a 255” y entonces vuelve a empesar por “0”.
Un contador de 16 bits puede contar de “0” a “ 65536” y entonces vuelve a empesar por “0”.

Estos númerales expresan el número de permutaciones posibles, de valores posibles y depende directamente del número de bits disponibles para expresar un número cualquiera, pero estando limitado al valor máximio posible! Para darles una idea:

Imaginemosnos un contador de 8 bits y una velocidad del temporizador del controlador de 16MHz. El controlador recibirá 16.777.216 clicks del temporizador y estos se aplican al contador. Dividimos este número por 256, el número de permutaciones del contador de 8 bits y nos da 65.536. Este es el número de veces que el contador vuelve a empesar a contar desde “0”, o cada 0,015 milésimas de un segundo el contador vuelve a iniciarse!

Ahora lo mismo con un contador de 16 bits y un temporizador de 16Mhz. Dividimos 16.777.216 por 65.536, el número de permutaciones de un contador de 16 bits, y el resultado es 256! O sea que cada approx. 4 milésimas de segundo el contador vuelve a contar de “0”!

Otra forma de decirlo, el contador 8 bits se vuelve a iniciar 256 veces cuando el contador de 16 bits a contado una sola vez de 0 hasta el máximo!

Un ejemplo donde veremos en forma breve donde esto es relevante en los programas de la tarjeta experimental. Ss cuando medimos la longitud del impulso de control de un servo del receptor del radio control. Este impulso tiene, según la posición del stick de control de la emisora una valor entre 1 milésima de segundo y 2 milésimas de segundo para cada canal de la receptora y esto se repite cada 20 milisegundos! Esto significa que con el temporizador andando a 16Mhz el contador de 16 bits vuelve a reiniciarse 5 veces en el período de 20 ms! Del contador de 8 bits ni hablemos, este lo hara 1280 veces en 20 ms o de 320 a 640 veces durante el impulso de un solo canal!

Pero el tema de las permutaciones posibles dependiendo del número de bits disponibles, también tiene importancia en las posibilidades de usar memoria en un controlador o en un ordenador.

Un controlador de la primera generación de 8 bits solo puede tener 256 direcciones diferentes de memoria a las cuales puede acceder usando un registro de 8 bits como dirección. Esto ya en los primeros tiempos de los controladores fue totalmente insuficiente, por lo que los controladores Z80 o 8051, los prcesores de todos los procesadores de Intel hasta el día de hoy se implemento un sistema y en los de Motorola con el 6800 uno diferente!

Los controladores Z80 8051 y similares realizaron un concepto de segmentación. Segmentos son subdiviciones. Muchos recordarán que los primeros controladores y ordenadores basados en estos solo podían usar 64kbytes de memoria, el número de permutaciones posibles con 16 bits, 2^16=64k.

Para esto se usa el truco de combianr 2 registros de 8 bits a uno de 16 bits. Pero así el controlador tenía que leer 2 direcciones de la memoria para cargar una dirección, lo que mínimo reduce la velocidad de ejecución de programas y del acceso a un dato en la memoria por el divisor 2, toma el doble de tiempo. Entonces para poder manejar operaciones mas rápidas los Z80 usan los segmentos que tienen tal tamaño que se puede acceder a una posición de memoria con solo leer un byte. El Byte de mas valor, recuerden lo de “big endian” y “little endian”, se usa para seleccionar un segmento y una posición de esta memoria dentro del segmento con el segundo byte, logrando así doblar la velocidad de ejecución de los programas sin perder la posiblidad depoder acceder 64k de direciones posibles. Con el tiempo el tamaño de estos segmentos aumentó hasta que finalment dejaron de existir. Pero este método de4 segmentos también se utilizó para crear segmentos explícitos para aceder portales y registros del controlador y así beneficiarse de la velocidad mucho mas alta. Esto en Inglés se llama I/O memory space, o segmento de memoria para entraas y salidas.

El problema que esta técnica implica es que el compilador en el caso de lenguas como Basic y C siempre tenía que verificar que el destino de la dirección que desea acceder este dentro del segmento actual y tiene que interumpir la ejecuación del programa para cambiar al segmento adecuado. Esto aún hace los controladores mas lentos.

Motorola con los 6800 y posteriores implementó la memoria en 16 bits, y así tambien lo hacen los Atmel y PICs pudiendo acceder toda la memoria con un acceso, pero permitiendo por programación inteligente beneficiarse de segmentos virtuales con sentencias especiales y así tener la misma ventaja de velocidad que los controladores del tipo Z80.

Bueno, se que es mucha información y pesada,pero es un mensaje que permite estudiarse si el tema de los sistemas aritméticos y de las permutaciones de un contador resultan siendo un tema, lo que lo serán definitivamente!
 
Atrás
Arriba