Download Sistemas de Interconexión de dispositivos a redes ethernet

Document related concepts
no text concepts found
Transcript
Sistemas de Interconexión
de dispositivos a redes
ethernet
INTRODUCCIÓN
4
1.-Los inicios del concepto de conexión de dispositivos
4
2.-Un nuevo: el concepto de conexión de dispositivos a redes ethernet
5
3.-Una mirada general al funcionamiento de un sistema modelo
7
4.-Visión general de los principales componentes de estas placas que se encuentran en el mercado
Los controladores MAC Ethernet más comunes:
Las placas de desarrollo más comunes:
Soluciones para los procesadores:
9
9
9
10
APLICACIONES INDUSTRIALES ETHERNET
11
1.-Redes en tecnología Switching
12
2.-Procesador de comunicaciones con microprocesador
12
3.-Procesadores de comunicaciones sin microprocesador
13
4.-Redundancia en la red
13
5.-Gestión de redes
13
6.-El PC como elemento de comunicación
13
7.-Posibilidades de la comunicación inalámbrica
13
8.-Objetivos conseguidos en las aplicaciones industriales Internet
14
9.-Objetivos generales de esta línea de investigación para los próximos años
14
10.-Ejemplos de aplicación de la industria de producción y de procesos
1.- Fabricación de automóviles
2.- Sector alimenticio
3.-Automatización de edificios
4.- Gestión de aguas residuales
14
14
15
15
15
MICROCHIP PIC16F877 + CIRRUS LOGIC CS8900A-CQ
16
PARTE 1: HARDWARE
16
1.-Introducción
16
2.-Cola de Contacto
HORA DE DESCANSAR?
16
17
3.-Software y Firmware
ICSP Y LVP
17
18
4.- Ensamblar la ethernet
NO FLOATING ALLOWED
18
18
5.-Instalar los condensadores
PIN POINT
19
19
6.-Acabando la instalación
20
7.-El resto del proyecto
¿RELAX?
21
21
8.-PARA TERMINAR…
BUEN TRABAJO
22
22
PARTE 2: SOFTWARE Y FIRMWARE
23
1.-Los elementos básicos
23
2.-Registros
REGISTROS DE BUS
REGISTROS DE ESTADO Y CONTROL
INITCHIP
REGISTROS DE INICIO DE TRANSMISIÓN
REGISTROS DE FILTROS DE DIRECCIONES
COLOCACIÓN DE LAS TRAMAS A ENVIAR Y RECIBIR
LA SIGUIENTE LECTURA
23
24
24
24
25
25
25
26
4.-ARP
SIN TRAMPAS
PINGING
27
27
28
EL CHIP CS8900
30
1.-Introducción
30
2.-Características principales
30
3.-Esquema principal del chip
30
4.-Arquitectura del CS8900
31
4.-Arquitectura del CS8900
32
5.-Pinouts del CS8900
33
6.-Ejemplo de diseño de una placa
34
7.-Aplicación con un CS8900A
35
Introducción
Conceptos a priori:
Antes de empezar a profundizar hay que tener claro algunos conceptos: la Internet y la Ethernet. Parecen lo
mismo, pero representan diferentes conceptos, así pues la Internet la podríamos definir como la red de redes o
la red que une todas las redes. La ethernet es diferente, pues es una capa de hardware o de nivel físico para las
redes, como todo el mundo sabe no es la única disponible, aunque si la más utilizada y extendida. El protocolo
de Internet (IP) normalmente incluye esta capa física, aunque no siempre: no se incluye por ejemplo en
conexiones PPP o punto a punto. La ethernet puede ser usada para trabajar con muchos tipos de protocolos
como puedan ser: TCP/IP, UDP/IP, IP/ICMP, IPX/SPX, etcétera. Esta tecnología es usada para intercambiar
datos entre PC’S y dispositivos, estos siempre podrán estar en modo servidor o esclavo respecto del PC. Los
protocolos soportados serán IP/UDP para el intercambio de datos y el IP/ICMP para hacer pings de
comprobación de la comunicación establecida entre ambos.
Antes de analizar los sistemas de conexión de dispositivos a redes ethernet, deberíamos comprender el porque
de la importancia de estos. Para eso vamos a contrastar este concepto y otro más antiguo, quizás de los
primeros, en tratar de controlar dispositivos, en particular mediante PCS.
1.-Los inicios del concepto de conexión de dispositivos
La conexión de dispositivos a un PC se remonta a los mismos orígenes de los PC. En aquellos momentos esta
tarea se realizaba mediante procedimientos más arcaicos; esto tenía sus consecuencias en diversos aspectos que
afectaban al conjunto.
Si nos pudiéramos remontar algunos años atrás, podríamos observar el concepto que se utilizaba normalmente
para la transmisión de datos entre un PC y un dispositivo cualquiera, por ejemplo una cámara tipo CCD. Este
concepto utilizaba un puerto paralelo como el de la impresora como capa física de transmisión de datos entre el
PC y la cámara. Este proceso de transmisión se producía de la siguiente manera: el PC enviaba los comandos a
través de la interfase del puerto paralelo a un microcontrolador donde estos eran procesados y enviaba devuelta
los datos o la información pedida. Este concepto fue fácilmente asentado, a pesar de que su software fue
desarrollado rápidamente y con carencias a nuestro día impensables; por ejemplo de drivers, clases, etcétera.
Este es el esquema de este viejo concepto para controlar dispositivos como una cámara CCD por un PC.
Las principales desventajas de este concepto son:
La corta distancia a la que deben estar dispositivo y PC.
Los datos se transfieren al PC muy despacio, incluso usando módulos específicos EPP/ECP.
Solamente un solo dispositivo puede ser conectado al puerto paralelo LPT1, el uso del segundo LPT2 acarrearía
una enorme fuente de posibles errores.
El software para los sistemas operativos es difícil de hacer porque requiere acceso a un nivel muy bajo.
Una alta sensibilidad a las interferencias eléctricas, pues es un paralelo funcionando en el suelo.
Como hemos visto, este concepto está obsoleto pues actualmente la conexión de dispositivos a un PC es una
cosa muy habitual y hay muchos sistemas incluidos con los PCS diseñados íntegramente para esa función y
muy perfeccionados; por ejemplo el USB2.
Ésta evolución, nos ha permitido conectar dispositivos más complejos de forma más sencilla, abriendo nuevos
horizontes en estos como el de los multimedia y en un futuro el de la realidad virtual.
¿Pero realmente es necesaria la dependencia del dispositivo con un ordenador, es decir, va a ser siempre
necesario tener que conectar el dispositivo a un ordenador directamente, para que a través de él sea controlado y
poder así extraer su información? ¿Por que no por varios ordenadores a la vez? ¿Que podríamos hacer para
dotar de más independencia a los dispositivos, para que por ejemplo, no tuviesen que estar conectados
directamente a un PC, y que al mismo tiempo realizaran su función propia? ¿O como podríamos mejorar el
rendimiento de transmisión independientemente del dispositivo y de los ordenadores a los que si pudiéramos lo
conectaríamos? ¿O porque no tener muchos ordenadores y muchos dispositivos todos conectados entre si?
En principio la respuesta parece sencilla; ya que si fuéramos capaces de conectarlos a la red, habríamos
conseguido todo esto debido al aprovechamiento de las características de las redes; además de abrir un nuevo
horizonte en la creación de dispositivos y en sus usos.
2.-Un nuevo: el concepto de conexión de dispositivos a redes ethernet
Si tenemos en cuenta que actualmente se usan redes de ordenadores en prácticamente todos los sitios, también
es razonable pensar que se debería contar con un método para poder pasar la información de cualquier
dispositivo a la red para que después se pudiera procesar la información en un servidor.
Ahora pues es el momento de abordar un nuevo concepto. Éste está basado en la técnica de montar un sistema
que controle la conexión del dispositivo a la Lan ethernet.
Estos nuevos sistemas que utilizaremos, están constituidos por una placa asíncrona de comunicación con
conexión 10baset. Esta placa habla con el PC usando el estándar IEEE 802.3 como capa física de la transmisión
y los protocolos UDP/IP. Por otra parte esta placa se comunica al microcontrolador de la cámara CCD a través
de un bus paralelo de 8 bits que puede rodar a más de 50 Mhz.
Nuevo esquema para controlar dispositivos como una cámara CCD por un PC.
Las principales ventajas que adquirimos con este concepto son:
Los datos pueden ser transferidos en modo full dúplex y además a una velocidad mucho más alta.
La longitud del cable ethernet puede ser superior a 200 metros, extendiéndose a 500 metros con hubs ethernet y
de kilómetros en caso de usar fibra óptica.
El software es más fácil de hacer, ya que existen muchas librerías con clases relacionadas con los protocolos
IP/UDP para los sistemas operativos WIN NT/2000/LINUX, y también porque no es necesario tener ningún
acceso a los recursos del PC de bajo nivel.
Baja sensibilidad a las interferencias eléctricas.
Muchos dispositivos, incluso de diferentes clases, pueden estar conectados junto con varios PCS y servidores;
esto facilita muchísimo el acceso a la información, así como su procesamiento y rendimiento general del
sistema.
Una muestra del últimos punto de las ventajas, se aprecia en el siguiente esquema; donde se aprecian un
numero de ordenadores conectados mediante un hub ethernet junto con un numero de dispositivos esclavos
conectados mediante ethernet. Cada dispositivo de la ethernet tendrá su propia dirección IP.
Una manera de asociar muchos tipos de dispositivos mediante una red ethernet, los PCS se comportan todos
como clientes, los dispositivos (la cámara CCD, la estación meteorológica,...) se comportan como servidores
debido a nuestra placa de comunicación ethernet.
Si tenemos en cuenta que en el año 2010 el 95% de los dispositivos conectados a la Internet no serán
ordenadores, sino que serán dispositivos conectados a la red de redes mediante sistemas de conexión, nos
podemos hacer una pequeña idea de la importancia de éstos.
3.-Una mirada general al funcionamiento de un sistema modelo
El siguiente dibujo muestra con más profundidad este nuevo concepto, de lo que sería una placa típica:
El director de orquesta de esta placa sería el microcontrolador SX52 scenix rodando a 50 Mhz; debido a que
controla el controlador ethernet CS8900, las 2K de SRAM y las dos FIFOs.
¿Cómo funcionaria?
Una trama ethernet es recibida por el CS8900, esto provoca que se envíe una interrupción al SX52. Este último
lee toda la trama ethernet y la graba en las 2K de SDRAM porque el SX25 solamente tiene 262 bytes de
memoria. El SX52 decodifica y destripa la trama extrayendo el MAC, la IP y la dirección de UDP destino. Si
estas direcciones apuntan al conjunto de direcciones internas del SX52, se procesa el mensaje como una orden
la cual es escrita en la FIFO del SX52. El controlador del dispositivo (por ejemplo el de la cámara CCD) mira la
FIFO del SX52, y si no está vacía, lee la orden y la procesa. Cuando la orden está completada, el controlador
del dispositivo devuelve un ACK a su FIFO. El SX52 lee esta FIFO y envía un ACK al controlador de ethernet
CS8900 como una trama ARP/IP/UDP. Finalmente se envía una trama ethernet a través del cable al ordenador
correspondiente.
Aquí tenemos algunas fotos de este modelo:
Parte de arriba de la placa, la entrada conectada es un conector RJ45.
Placa funcionando con el KIT usado para programar el microcontrolador SX52.
Vista de la parte trasera de la placa, donde se aprecia el SX52 en el centro.
4.-Visión general de los principales componentes de estas placas que se encuentran en el mercado
Hay muchas soluciones para estos sistemas (recordemos que nuestro trabajo esta orientado a la ethernet), las
más usadas y populares serían usar un microcontrolador de 8 bits como el Rabbit 2000, AVR o PIC y un
controlador MAC ethernet como el CS8900A o el RTL8029AS. Vamos a ver cuales son:
Los controladores MAC Ethernet más comunes:
Hay dos claros competidores en este tipo de componente: el controlador de Realtek, que es favorecido por su
generosa SDRAM interna que le ayuda con los paquetes cuando el micro al que lo conectamos tiene
limitaciones, y el controlador de Crystal que se ha echo popular en los circuitos de 3,3V.
Controlador de Ethernet RealTek RTL8019AS ISA Full-Duplex con función Plug and Play:
• 16Kbytes de SDRAM interna.
• 100-pines PQFP.
• Software compatible con NE2000 para puertos de 8 o 16 bits.
• Soporta 4 LEDS de diagnóstico con salidas programables.
Controlador ethernet 10Base-T CS8900A de Crystal Semiconductor:
• 4 Kbytes de memoria integrada en el chip para buffers dedicados a la transmisión y recibimiento de
paquetes.
• 100-pines TQFP.
• Opera a 3,3V o 5V con 55mA Máx.
Las placas de desarrollo más comunes:
A continuación se detallan algunas de estas placas.
Placa de desarrollo ethernet EDTP CS8900A-CQ a 10Mbps:
• Basada en el controlador de Crystal CS9800A.
• Incluye ranuras para una EEPROM de serie.
• Aproximadamente unos 40 euros.
Placa de desarrollo para el CS8900 de EmbeddedEthernet.com:
• Basada en el controlador de Crystal CS8900A.
• Es muy pequeña 31 x 48mm.
• Disponible en versiones de 3,3V y 5V.
• Aproximadamente unos 70 euros.
Placa de Ethernet EE-100 para el CS8900A:
• Basada en el chip de Crystal CS8900A.
• Tamaño pequeño 32x 64mm.
• Aproximadamente unos 50 euros.
Placa EDTP para el RTL8019AS:
• Basada en el chip de Realtek RTL8019AS.
• Aproximadamente unos 30 euros.
Soluciones para los procesadores:
Para este tipo de placas destacan dos tipos de soluciones para los procesadores.
Los micros de Microchip PICDEM.net TM:
• Las placas se basan en sus micros PIC16F877 o PIC18F452 a 19.608 Mhz para estas placas.
• Lo más utilizado junto a estos micros es el controlador MAC de Realtek en modo 8 bits.
Los micros de AVR:
• Este basa estas placas en su micro Atmega103 a 4.608 Mhz.
• Suelen utilizar el CS8900A en modo 8 bits.
APLICACIONES INDUSTRIALES ETHERNET
La evolución de las tecnologías de la información, unida a la existencia previa de los sistemas de comunicación
en planta, ha dado paso a la posibilidad de utilizar remotamente la información disponible del proceso
permitiendo que los sistemas de producción sean más abiertos y flexibles.
La irrupción de las tecnologías Internet en el mundo industrial ha abierto nuevas posibilidades en las
aplicaciones de diseño y producción industrial. Así, es clara la tendencia de los últimos años hacia la utilización
de sistemas distribuidos de control cada vez más flexibles, fiables y potentes. Esta tendencia es una de las
consecuencias de la introducción de las tecnologías de la información, ya que permiten incrementar la fiabilidad
y la calidad del producto a la vez que asegurarán una producción eficiente. La tendencia actual en el desarrollo
de los sistemas de control y supervisión de procesos industriales está orientada hacia una utilización cada vez
mayor de sistemas distribuidos de control.
La introducción de este tipo de tecnologías en los procesos industriales aporta una serie de ventajas como son:
· Proporcionan las ventajas tradicionales de la programación orientada a objetos, entre las que cabe destacar la
flexibilidad, modularidad, reusabilidad de código y escalabilidad de la aplicación.
· Permiten independizar la complejidad de la problemática de la comunicación de la funcionalidad de la
aplicación.
· Es posible re-utilizar objetos ya diseñados en otras aplicaciones de forma independiente a su implementación
concreta
· Es posible modelar dispositivos físicos, si bien éstos deberían poseer un relativo grado de inteligencia.
· Por lo general, aportan una serie de servicios que facilitan las tareas de implementación de la aplicación (como
pueden ser, por ejemplo, los servicios de seguridad en el caso de la arquitectura CORBA)
· Ofrecen mecanismos para implementar la tolerancia a fallos.
Las arquitecturas distribuidas que más implantación tienen hoy en día son CORBA y COM/DCOM. CORBA es
una arquitectura abierta apoyada por un conjunto de más de 800 empresas entre las que se encuentran algunas
tan representativas como Sun, IBM, Netscape y Oracle (Orfali et al 1998). Por otro lado encontramos la
arquitectura COM/DCOM (Emerald et al 1998). Esta arquitectura está apoyada fundamentalmente por
Microsoft y su implantación crece día a día.
Las aplicaciones industriales ethernet constituyen una potente herramienta para la gestión de la producción.
Debido al gran éxito que desde hace años goza Ethernet conjuntamente con las prestaciones de Switching
(Conmutación), Full Duplex y Autosensing (Auto detección). Permite adaptarse exactamente a los requisitos y
prestaciones de cualquier tipo de red, es por ello que esta herramienta puede ser utilizada prácticamente en
cualquier entorno industrial.
La interconexión de toda la red industrial se lleva a cabo con normas internacionales (IEEE 802.3, 802.11b) lo
que favorece la integración de la red industrial y la red de gestión de una empresa( Ej.- oficinas y producción).
Para que tal integración sea completa se necesitan de los siguientes requisitos:
Un juego de herramientas de Switching universales que soporten todas la fases de un proyecto desde la
selección del hardware a la programación, el empleo, el diagnostico y el mantenimiento.
Las herramientas deben acceder a una base de datos común.
Esto permite ahorrar introducciones de datos y asegura la coherencia en todo el proyecto.
Las prestaciones de comunicación son prácticamente ilimitadas ya que, si es preciso están disponibles unas
prestaciones escalables gracias a la tecnología de switching. La comunicación de toda la empresa está
garantizada gracias a las opciones de acoplamiento de las redes vía Wan, RDSI o Internet. Incluso es posible la
comunicación móvil, la cual puede integrarse a la perfección en una estructura de red industrial.
Debido a estas prestaciones de comunicación, la gestión de las redes industriales puede llevarse a cabo
remotamente con el software adecuado. La red industrial puede señalizar los fallos que pueda haber (Ej.mandando un correo electrónico al administrador del sistema fijado en la configuración).
Los autómatas programables (PLCs) tienen una importancia vital en el mundo de la comunicación. Y la
comunicación industrial constituye la parte más importante de la automatización.
1.-Redes en tecnología Switching
Ventajas de la funcionalidad switching:
• Es posible crear subredes y segmentos de red.
• La capacidad de transferencia de datos y, de este modo, las prestaciones de la red pueden aumentarse
notablemente gracias a la estructuración del intercambio de datos.
• Las reglas sobre la configuración de las redes son de fácil aplicación
• Aplicable a redes con hasta 150km sin preocuparse por los tiempos de propagación de las señales.
• Es posible ampliar de forma ilimitada la extensión de la red por interconexión de diferentes dominios
colisión / subredes.
• Mediante switches pueden ampliarse las redes existentes de manera sencilla y sin efectos retroactivos.
• Pueden continuar utilizándose los conocimientos tecnológicos existentes.
• Las redes existentes pueden integrarse y ampliarse paso a paso.
• Se puede migrar escalonadamente de la tecnología de 10 Mbit/s a la de 100 Mbit/s.
2.-Procesador de comunicaciones con microprocesador
Presenta las siguientes ventaja:
•
•
•
•
•
Una capacidad de transferencia de datos constante gracias al procesamiento de protocolos en el
controlador de comunicaciones.
Puede conectarse a cualquier red Ethernet.
Libera prestaciones de proceso para otras aplicaciones.
Se soporta el empleo de grandes configuraciones de red con una sola tarjeta gracias al alto numero de
puertos.
El controlador de comunicaciones puede utilizarse para la comunicación redundante.
3.-Procesadores de comunicaciones sin microprocesador
•
•
Los procesadores de comunicaciones están coordinados de manera óptima para los paquetes software.
Pueden utilizarse perfectamente en pequeños sistemas.
4.-Redundancia en la red
Es imprescindible para aplicaciones industriales un tiempo de reconfiguración cortísimo de la red después de un
fallo, ya que, de lo contrario, los terminales acoplados a la red cancelan las conexiones de comunicación
lógicas. Las redes redundantes aumentan la seguridad y reducen las paradas de la instalación. Si falla un
subsistema o se produce la interrupción de un cable, se cambia al sistema reserva o a la red reserva y, de esta
forma, se mantiene la comunicación.
El sistema de redundancia puede estar gestionado por software gracias a la integración de la red industrial con
PCS.
5.-Gestión de redes
La gestión de redes ofrece las siguientes funciones:
•
•
•
•
•
•
•
Acceso por marcación, protegido por contraseña, para “Administrador” ( con privilegios de escritura y
lectura) y “usuario” ( sólo privilegios de lectura).
Lectura de informaciones de versión y estado.
Configuración de pantalla de mensajes y de standby y de informaciones de direcciones.
Parametrización fija de puertos y tabla de filtros
Salida de información estadística
Diagnóstico de intercambio de datos a través de un puerto espejo parametrizable.
Carga de posibles actualizaciones a través de la red y envío de mensajes de error por su propia cuenta.
6.-El PC como elemento de comunicación
El PC desempeña un papel importante en la comunicación industrial. Conjuntamente con aplicaciones en
tiempo real como WinCC para el entorno Windows NT. Junto con el software desarrollado por cada fabricante,
el PC penetra en las aplicaciones de comunicaciones que hasta ahora sólo podían solucionarse con un PLC.
Los modernos procesadores de comunicaciones presentan nuevas ventajas:
•
•
•
Procesadores de comunicaciones para formato PCI o formato PCMCIA
Permiten una aplicación flexible, en función de la demanda de recursos en el PC: procesadores de
comunicaciones con o sin microprocesador incorporado.
Integración sencilla en el entorno del sistema y en aplicaciones Office gracias a las interfaces abiertas y
estandarizadas.
7.-Posibilidades de la comunicación inalámbrica
La comunicación inalámbrica constituye la solución ideal siempre que el acoplamiento
de estaciones a una infraestructura cableada resulte muy difícil. Entre éstas se incluyen, por ejemplo, la
adquisición móvil de datos en producción y logística, la transmisión de datos de servicio a terminales móviles o
la puesta en servicio de instalaciones complejas mediante equipos de programación acoplados por vía
inalámbrica.
Otro aspecto que habla a favor del uso de comunicaciones móviles es la sustitución de las soluciones cableadas
para, p. Ej. Resolver el problema de aislamiento de potencial de equipos de comunicaciones remotos.
Además, la comunicación móvil permite ahorrar una infraestructura cuya instalación requiere mucho tiempo y
dinero, pudiendo emplearse en instalaciones temporales o en sistemas de producción flexibles.
Los requisitos básicos para los equipos de comunicaciones móviles en el entorno industrial son, además del
acoplamiento inalámbrico a la red, también la robustez para soportar el severo entorno industrial, un manejo
sencillo y un diseño compacto.
8.-Objetivos conseguidos en las aplicaciones industriales Internet
· Desarrollo de gateways entre diferentes arquitecturas de red (MAP/MMS, PROFIBUS, TCP,...)
· Integración a través de red de dispositivos industriales de control (robots, CNs, APIs,...).
· Monitorización y Supervisión de Planta
· Buses de campo e instrumentación inteligente (PROFIBUS-PA, CAN)
9.-Objetivos generales de esta línea de investigación para los próximos años
· Establecer metodologías para el diseño de aplicaciones de monitorización y supervisión remotas utilizando
tecnologías internet / Intranet
· Modelado de plantas virtuales, utilizando tecnologías orientadas a objetos, que permitan describir de forma
abstracta la información de la planta real accesible remotamente
· Validar la aplicación de estas tecnologías en procesos industriales con requisitos de tiempo real.
· Evaluar la capacidad de los modernos lenguajes de modelado, basados en tecnologías orientadas a objetos,
para expresar los requisitos temporales de la aplicación.
10.-Ejemplos de aplicación de la industria de producción y de procesos
1.- Fabricación de automóviles
En l a fabricación de automóviles pueden implementarse líneas de producción con velocidades variables u
opciones de control del sistema en la explotación en marcha. Numerosas variables deben ser controlables de
manera flexible, para hacer posible una producción sin anomalías. La disponibilidad de las instalaciones es cada
vez más importante. Un tiempo de no-disponibilidad de un equipo, durante su reparación, suele resultar más
caro que una supervisión adecuada de las instalaciones para detectar posibles desgastes o fallos.
Con ayuda de potentes componentes integrados en la comunicación pueden, por ejemplo, localizarse y
señalizarse rápidamente los fallos.
2.- Sector alimenticio
En el sector alimenticio se puede controlar el flujo de transporte que previamente se ha programado y puede
modificarse en el ordenador host, dependiendo del grado de carga y de la demanda. Es posible supervisar y
controlar los estados operativos y los grupos de los sistemas de transporte. Igualmente se podría controlar la
ventilación automática individual de un determinado almacén.
3.-Automatización de edificios
Se podría realizar el control de un parking. Las plazas de aparcamiento libres se indicarían a la entrada y el
automovilista podría ser conducido hasta las mismas, mediante flechas indicadoras de sentido, por el camino
más corto. Un sensor sin contacto, montado en el techo, actúa de monitor de aparcamiento y palpa, por
ultrasonidos, con regularidad su plaza de aparcamiento.
Si se circula incorrectamente por la rampa de acceso o si se produce un atasco, se activa una alarma en el puesto
central de mando. Un potente procesador de comunicaciones recopila y coordina los datos, visualizándolos, p.
Ej. En un ordenador.
4.- Gestión de aguas residuales
La depuración de las aguas residuales requiere características especificas de los componentes de automatización
y comunicación, como p. Ej. La utilización dentro de intervalos de temperatura admisibles, inmunidad a
interferencias o señalizaciones rápidas en caso de averías. Las líneas de filtración, bombas o instrumentos de
medida pueden supervisarse y maniobrarse desde el puesto central de mando, de modo que pueda asegurarse el
perfecto flujo de la instalación. Un sistema de comunicaciones conduce los datos correspondientes de manera
fiable hasta e puesto central de mando. Un ordenador en dicho puesto permite visualizar y supervisar los datos
correspondientes.
Microchip PIC16F877 + Cirrus Logic CS8900A-CQ
PARTE 1: HARDWARE
En este apartado veremos como implementar el dispositivo de interconexión a un microcontrolador, con el fin
de aplicar las más diversas aplicaciones. Con el montaje de este dispositivo podremos realizar todo tipo de
funciones, en lo que en el ámbito de redes Ethernet se refiere.
1.-Introducción
Para realizar este proyecto se ha elegido el microcontrolador Microchip PIC16F877 debido a que puede ser
fácilmente programado usando un pequeño número de componentes externos.
El mecanismo de transporte es la red Ethernet estándar con el protocolo IP encapsulado en el nivel de datos de
la trama Ethernet. La funcionalidad del TCP/IP es inexistente en este montaje ya que en el firmware no está
implementada la pila TCP/IP. De manera que, todas las transferencias de datos que se describen en este
apartado están basadas en el formato UDP. Aunque también se pueden aplicar protocolos que uno mismo
desarrolle.
Los componentes que vamos a utilizar son los siguientes:
articulo
precio Imagen
CS8900A
DEV
BOARD
40€
PIC16F877
15€
and
Dev
Board
En la primera parte de este pequeño tutorial nos encargaremos de ensamblar la placa, y una vez montada
comenzaremos a programarla.
2.-Cola de Contacto
Empezaremos la construcción del EDB (Ethernet Development Board) poniendo una pequeña gota de
pegamento en el centro del área de pads del CS8900A-CQ, llevando mucho cuidado en no poner mucho,
porque cuando se apriete el chip se extenderá el pegamento. El objetivo de esta tarea es sujetar el CS8900A-CQ
al circuito impreso para después soldarlo.
Foto 1-Con una pequeña gota de adhesivo podemos
colocar el CS8900A en su lugar.
Es aconsejable utilizar algún tipo de lente de aumento, como una lupa o un microscopio, para asegurarse de que
el CS8900A está perfectamente acoplado a los caminos trazados en el circuito impreso.
HORA DE DESCANSAR?
El chip no se pegará instantáneamente, de manera que tenemos tiempo de alinearlo correctamente hasta que
coincida con el circuito impreso, como muestra la foto 2.
Foto 2—Pon mucha atención al arrastrar el
CS8900A porque sus pines pueden desalinearse.
La razón por la que debemos usar pegamento de madera es para después soldar los pines del Circuito Integrado
(IC) a los pads del circuito impreso con mayor facilidad.
3.-Software y Firmware
Como el pegamento todavía no se habrá secado del todo, y ya sabemos que el EDB está basado en un PIC y usa
un programa de PC para cargar al PIC16F877 el código, vamos a comentar un poco acerca de los componentes
Software y Firmware.
La aplicación que programa la EDB funciona sobre Windows98-XP. La aplicación de PC es un algoritmo ICSP
(in-circuit serial programming) que usa LVP (low-voltage programming) a través del puerto paralelo del PC.
Los botones y las expresiones de windows de la Foto 3 muestran las características del módulo ICSP.
Foto 3—En el caso de que se
programe erróneamente el
PIC16F877, se puede
recuperar con el botón
Erase.
ICSP Y LVP
Además de leer y escribir el PIC16F877, el programa usa el campo ID del dispositivo (localizado en el área de
configuración 0x2006) para, automáticamente, configurar las variables programadas. El reloj, los datos, el
modo de programa y el control MCLR son las únicas líneas requeridas para efectuar el ICSP en modo LVP para
las partes PIC16F877.
Fíjate bien y verás que no hay componentes de alto voltaje (13V) o voltajes en la figura 2 o en el EDB. El modo
LVP, que es provocado por un TTL de alto nivel, es aplicado por el pin RB3 del PIC16F877, y aplica 5V al pin
Vcc del PIC para generar el voltaje requerido para la programación, internamente. Como todos los pins de
control están trabajando a niveles TTL, el puerto paralelo del PC, es perfecto para este propósito.
Figura 2—El PIC16F877
se podrá programar con
un número mínimo de
componentes externos.
El firmware Ethernet se generará usando el programa de Microchip MPLAB. Después de que el código del PIC
esté configurado, el fichero .hex resultante se ha de cargar en la aplicación de PC de la EDB y transmitido por
el puerto paralelo al PIC. Aunque parezca un poco complicado, es un proceso realmente sencillo.
4.- Ensamblar la ethernet
Todavía quedan muchas cosas que decir sobre el software y el firmware, pero de momento, vamos a continuar
con poniendo el hardware Ethernet y el PIC16F877 juntos. Como el componente principal, el CS8900A-CQ,
está encapsulado usando tecnología surface-mount1(SMT).
NO FLOATING ALLOWED
Otra parte esencial de la construcción es la pasta de soldar. La pasta de soldar, además de ayudar in el proceso
de soldado, también mantiene los pequeños componentes en su lugar hasta que se les aplica calor. En la foto 4
se observa que sobre los pads no es necesario aplicar pasta.
1
Sistema de montaje de placas en el que los componentes no se incrustan, sino que se montan en la superficie.
Foto 4—No pasarse con la cantidad de pasta de
soldar, o los pequeños componentes “flotarán” y
será difícil su colocación.
5.-Instalar los condensadores
Ahora que hemos empezado a aprender a soldar en el campo SMT, vamos a montar los condensadores de
0.1µF (C11, C12 y C15) en la parte de la Ethernet de la placa. Como se puede observar en la foto 5, solo hay 3
condensadores. Las cápsulas del SMT no están marcadas, así que hay que tener cuidado en no confundir las
partes que hemos preparado para soldar. Antes de completar el montaje de los componentes más pequeños del
SMT en la parte Ethernet, vamos a comentar el por qué están esos componentes ahí.
Foto 5—Éstos componentes son una gran práctica.
La necesitaremos para la otra parte de la placa.
PIN POINT
Si echamos un vistazo a los componentes que acompañan al kit CS8900A-CQ, encontraremos un montón de
dispositivos que, de momento, no sabemos para que sirven. Pues bien, pongámonos manos a la obra. Para
polarizar adecuadamente estos módulos analógicos internos, una resistencia (R1) de 5-kilohm, 1% la
instalaremos tan cercano como nos sea posible al pin RES (93) y al pin de Tierra (94). La resistencia R2 (4.7kilohm, 1 %) la colocaremos para dormir el CS8900A-CQ en el pin 77. Realmente, esta resistencia no tiene que
ser muy precisa porque únicamente detiene al dispositivo a nivel lógico.
Las resistencias R3 y R4 las asociaremos a los LEDs. Estas también han de ser de 4.7-kilohm, 1%. La
resistencia R5 (100-ohm, 1%) es la terminación del cable de comunicaciones. Simplemente cambiando las
resistencias R6 y R7 junto con la capacidad del condensador C10, el CS8900A-CQ puede ser programado para
soportar un cable de comunicaciones de una impedancia de 100, 120 y 150 ohms.
El LINKLED es un LED verde manejado por el pin 99 del CS8900A-CQ. El bit HCE0 del control de registro
hace que el pin se apague cuando un pulso válido es detectado en el cable de comunicación.
El pin 100 maneja el LED rojo (LANLED). Este pin se activa durante una colisión cuando ocurre una colisión o
una operación transmisión / recepción.
6.-Acabando la instalación
Vamos a usar la foto 6 para completar el LED, las resistencias, condensadores,... Hay que poner especial
atención a la instalación del LED, detallada en la foto 7. Si seguimos las indicaciones de las fotografías, todo
marchará sobre ruedas.
Foto 6—Las líneas que apuntan a los LEDs,
normalmente denotan el cátodo de los dispositivos,
pero en el LED rojo señala el ánodo.
Foto 7—Vista ampliada de los LEDs.
7.-El resto del proyecto
Después de montar todo lo que hemos citado hasta ahora, hay que montar y soldar Q1, R8, R9 y R10. Usa la
foto 10 como guía. Cuando hallamos terminado con el transistor MCLR y sus resistencias, instalar el 74LS125
y su condensador C15. Ahora podemos instalar el cristal XTAL2 de 20 MHz, en cada cara del circuito impreso.
El pin del centro del XTAL2 es tierra, y los externos pueden ir a ambas partes de éste.
Foto 10—Asegurarse bien de montar el 2N2222 y
todas las resistencias circundantes antes de soldar el
enchufe PLCC de 44-pins. Algunas de las
resistencias quedan ocultas bajo el PLCC.
¿RELAX?
Foto 11—Esto no es tan difícil como parece.
Ahora lo deberíamos tener todo instalado excepto el conector hembra RJ-45 (J1), el conector DB-25, el
conector de encendido y el enchufe PLCC para el PIC16F877. Aquí es donde, realmente, un buen equipo de
soldadura destaca sobre un soldador normal y corriente. Vamos a alinear el enchufe PLCC sobre los pads. Sólo
necesitaremos un poco de soldadura para los pins del enchufe.
Es aconsejable soldar de arriba hacia abajo a lo largo de cada lado del PLCC e ir rotando el circuito impreso 90º
hasta tener las cuatro partes soldadas.
8.-PARA TERMINAR…
Después de haber puesto el PLCC, todo lo que queda por hacer limpiar la placa con un disolvente de pasta de
soldar. Después de que se seque la placa, deberíamos tener algo como lo que se muestra en las fotos 12 y 13.
Foto 12—En la figura se muestran el conector DB25, el RJ-45-45 y el de corriente. El cristal de 20MHz también va colocado en esta cara de la placa.
BUEN TRABAJO
Ahora toca sentarse y maravillarse con el trabajo que hemos hecho. En nuestras manos tenemos un motor para
las redes Ethernet, completamente funcional, respaldado por uno de los microcontroladores con memoria flash
más poderosos del arsenal de Microchip.
Foto 13—La parte de atrás del monstruito.
PARTE 2: SOFTWARE Y FIRMWARE
En esta parte del tutorial vamos a aprender a realizar una aplicación para nuestra placa.
1.-Los elementos básicos
Lo primero de todo es establecer una dirección IP a la EDB. Cualquier IP válida funcionará, y la elección
dependerá de la Ethernet en la que usaremos nuestra placa. Una dirección válida sería la 192.168.1.150, que es
una dirección reservada para las redes privadas. La IP de la placa está definida en el área de definición de la
dirección IP del código, como se muestra en el anexo 1.
El siguiente paso es asignarle una dirección MAC (Control de Acceso al Medio) a la placa. La dirección
hardware es una característica que, normalmente, está regulado por el IEEE. Si nuestro objetivo es usar nuestra
placa con un fin puramente comercial, necesitaremos adquirir un único identificador del hardware. El objetivo
es que no existan dos dispositivos con el mismo identificador.
Lo más común en los dispositivos comerciales es que la dirección MAC sea un combinado entre una ID
suministrada por IEEE a cada fabricante unido al número de serie del producto. Éstos números vienen impresos
en alguna parte visible de todos los dispositivos cuya función sea pertenecer a una red. La dirección MAC de
nuestra tarjeta de red, por ejemplo, la podemos conocer con el comando ARP, que ya veremos después.
La dirección MAC quedará almacenada en el registro de Dirección Individual (IA) en el CS8900A-CQ. El
diseño del registro IA hace necesario situar el octeto más significativo de la dirección MAC en el octeto menos
significativo del registro. Tendremos que definir tres variables MYMACXX que pongan los octetos MAC en el
orden correcto antes de que sean cargados en el registro IA del chip. En el anexo 2, está la dirección MAC y el
esquema de registros del CS8900A-CQ.
2.-Registros
Hay numerosos registros en el CS8900A-CQ. La mejor manera de trabajar con ellos es predefinirlos y usar
etiquetas que sean legibles. Empecemos con las definiciones PacketPage I/O; todos los registros internos del IC
están listados y definidos, tanto si son usados como sino.
Las etiquetas que empiezan con ‘pageport’ representan los 16 puertos base de I/O y quedan declaradas en el
anexo 3. Los registros internos PacketPage a los que se accede usando los puertos PacketPage I/O están
prefijados por ‘ppage.’. Aquí es donde se inicializan los registros. Los contadores y los estados de los registros
están agrupados como muestra el anexo 4.
Hay 5 eventos PacketPage y todos están definidos por sus nombres de la hoja de características. Alguno de los
registros del IC tienen nombres que son demasiado largos para ponerlos tal cual en el código. Aquí tienes un
listado con estos registros declarados con el nombre más legible posible:
• PacketPage self control
• PacketPage self status
• PacketPage bus control
• PacketPage bus status
• PacketPage line control
• PacketPage test control
• PacketPage receiver configuration
• PacketPage receiver event
• PacketPage receiver control
• PacketPage transmit configuration
• PacketPage transmit event
• PacketPage transmit command
• PacketPage buffer configuration
Los registros anteriormente citados junto a todos los registros, pueden ser agrupados en seis categorías más
grandes: Registros de bus, Estado y Control, Inicio de transmisión, Filtro de Dirección, Recibir Trama y
Enviar Trama.
Las seis categorías, además de sus subcategorías, las podemos encontrar en el área de 4K denominada
PacketPage.
REGISTROS DE BUS
El registro de bus lo usa el CS8900A-CQ. El ppageBaseIO forma parte del grupo del registro de bus, y su
dirección de I/O es la 0x300, de manera que en el código no la deberemos asignar. Podríamos usar el registro
ppagePID para determinar qué nivel del CS8900A-CQ está pegado en la EDB, pero eso sólo sería un
desperdicio de código, memoria y ciclos de reloj para esta aplicación.
El modo de 8-bits del CS8900A-CQ no permite el uso de interrupciones, EEPROM o DMA. Así es que
debemos consultar la línea INTRQX para detectar transmisiones, recepciones o errores. Para realizar la
consulta, debemos poner una de las líneas INTRQX en estado de transmisión. La aplicación usará la línea
INTRQ0, la cual está definida en el registro ppageINT usando la máscara para la INTRQ0 (0x00), como
muestra el anexo 5. Después de que la interrupción quede definida y activada, podemos encender el transmisor
y receptor del CS8900A-CQ.
REGISTROS DE ESTADO Y CONTROL
Estos registros están divididos en dos subgrupos –registros de configuración y control y registros de eventos y
estado. Los registros de configuración y control determinan cuántas tramas son transmitidas y recibidas.
Además, los éstos registros determinan qué tramas serán enviadas y recibidas y qué eventos causarán una
interrupción que será enviada al PIC16F877.
La EDB usa muchos registros de configuración y control al principio del código para establecer varias áreas
que se encargarán de las funciones de recepción y transmisión. Por ejemplo, en el anexo 6, la rutina InitChip
usa definiciones del ppageRxCFG y ppageTxCFG para generar una interrupción cuando:
• se reciba una trama sin errores (RXCFG_RX_OK_IE)
• un paquete se transmita correctamente (TXCFG_TX_OK_IE)
• ocurra una colisión ‘out-of-window’ (TXCFG_OUT_WIN_IE)
• una transmisión dure más de 26 ms (TXCFG_JABBER_IE)
• ocurra una colisión (TXCFG_ALL_IE bit 0x0B)
• ocurran 16 colisiones (TXCFG_16_COLL_IE)
Si tomamos aparte el registro de control (ppageRxCTL), encontramos que:
• El CS8900A-CQ sólo acepta tramas con el CRC y la longitud correctas (RXCTL_RX_OK_A).
• La dirección de destino de la cabecera del paquete debe coincidir con la dirección IA encontrada en el registro ppageA
(RXCTL_IND_A).
• Las tramas Broadcast con una dirección de destino de FFFFFFFFFFFF hexadecimal es aceptada (RXCTL_BCAST_A).
INITCHIP
Continuando con nuestro estudio de InitChip, es obvio que la ethernet será 10BaseT (LINECTL_10BASET), y el
CS8900A-QC enviará y recibirá bits codificados a la red en modo ‘full duplex’ (TESTCTL_FDX).
Las referencias a los registros de estado y control las podemos encontrar a lo largo de todo el código de la EDB
debido a que su función es informar sobre el estado de las tramas transmitidas y recibidas. La actividad del
registro de control y estado también existirá en situaciones donde se quiera saber el estado del IC. El anexo 7
muestra la secuencia de reset del CS8900A-CQ.
El bit de reset con el ppageSelfCTL tiene implementado un retraso de 10ms para permitir que el IC calibre sus
circuitos analógicos. El bit de Reset ppageSelfCTL (SELFCTL_RESET) actua una sola vez.
El SELFCTL_RESET también determina el comportamiento del LED. Después de 10ms, se realiza un análisis
del bit INITD en el registro de estado (SELFSTAT_INIT_DONE_BIT). Cuando se borra este bit, el reset del IC
finaliza.
La última área de control y estado que analizaremos será el registro de bus, ppageBusStatus. Para conseguir
transmitir el buffer, el host debe solicitar un espacio de transmisión en el CS8900A-CQ.
BUSSTA_RDY4TXNOW_BIT indica al host que el IC está listo para aceptar una trama. El código para esta
operación es un poco complejo, y está mostrado en el anexo 8.
REGISTROS DE INICIO DE TRANSMISIÓN
Estos registros le dicen al CS8900A-CQ, cómo transmitir el siguiente paquete. Las primeras cuatro definiciones
del anexo 9 son valores que pueden ser usados para dar la instrucción al IC de que empiece a transmitir después
de que un cierto número de bytes hayan sido transmitidos al buffer de transmisión del CS8900A-CQ. Por
ejemplo, TXCMD_AFTER_5 indica que empiece la transmisión después de que en el buffer del IC hayan 5
bytes. En el trozo de código que sigue a los defines, TXCMD_AFTER_ALL, lo que significa que debe esperar a
que cada byte enviado sea cargado en el buffer de transmisión del CS8900A-CQ antes de transmitir.
Vamos a hablar sobre el byte de mayor importancia del registro TXCMD. Si el bit TXCMD_NO_CRC está
incluido en la máscara, el valor CRC generado no se adjuntará a la transmisión. Como estamos adjuntando un
CRC y el bit TXCMD_NO_PAD no tiene ningún valor, cualquier paquete con menos de 60 bytes será rellenado
hasta alcanzar los 60 bytes y se adjuntará el CRC a la transmisión.
La razón del control es permitir que paquetes indebidos también sean transmitidos. Esta actividad ilegal podría
ser usada en el desarrollo o la fase de test de un diseño para testear otros dispositivos Ethernet o Software para
la captura de datos en una red como un Sniffer. El bit TXCMD_FORCE elimina cualquier trama que esté
esperando a ser transmitida y aborta la transmisión de cualquier trama que esté siendo transmitida.
REGISTROS DE FILTROS DE DIRECCIONES
El CS8900A-CQ viene equipado con un registro de dirección destino (DA). Este filtro de dirección determina
qué tramas pasarán el portal de recepción para ser colocadas buffer de recepción del CS8900A-CQ. El primer
bit de la dirección física (MAC) debería ser un 0. Esto es debido a que si el primer bit no fuera un cero, se
podría confundir con la dirección lógica. La IA de la trama que llega, debe coincidir con la dirección física del
registro IA del CS8900A-CQ (ver Anexo 2).
Si el primer bit del registro de la dirección de destino (DA) que recibimos, es un 1, entonces la trama es
multicast, y la dirección es lógica, no física. El CS8900A-CQ utiliza una técnica de hashing2 para determinar si
debe o no aceptar la trama multicast recibida. Echemos un vistazo al anexo 6 bajo la definición PacketPage
receiver control register bit, y veremos que el bit multicast (RXCTL_MCAST_A) no está definido. De manera
que, nuestra placa ignorará las direcciones multicast.
Con otro vistazo al anexo 6 vemos que, además de las direcciones físicas, la EDB también admite direcciones
broadcast. A menos que conozcamos cada dirección física o IP de cada host con el que nos queramos
comunicar y que cada uno de los host conozca nuestra dirección IP y MAC (muy improbable), lo mejor será
poder analizar un mensaje de broadcast.
COLOCACIÓN DE LAS TRAMAS A ENVIAR Y RECIBIR
Esta parte es la que se utiliza para transmitir tramas entre el CS8900A-CQ y el PIC16F877. Sólo se recibe y
transmite una trama si el PIC está disponible, y el espacio que ocupa cada trama está dinámicamente adjudicado
por el CS8900A-CQ. Por supuesto que, todos los datos son transmitidos entre la RAM del PIC y el buffer de
4K del CS8900A-CQ a través de los puertos PacketPage I/O.
2
Dividir un archivo en trozos más pequeños
3.-Operaciones de transmisión y recepción del CS8900A-CQ
Ahora vamos a ver el anexo 10 antes de continuar leyendo. Este anexo es una lista de los puertos del PIC y la
definición de cada pin. El puerto B del PIC16F877 se usa para programar el control de I/O del IC. El bus de
datos está contenido en el puerto C y el bus de dirección de 4 bits en la mitad de abajo del puerto D. Los
primeros 48 bytes de la RAM del PIC son los contadores, los flags, punteros y los registros scratch que
constituyen la mayoría de las aplicaciones del PIC. El buffer de datos empieza en la dirección de registro del
PIC 0x32.
El anexo 11 consiste en un bucle que analiza la línea INTRQ0 del CS8900A-CQ seguido de un código para
determinar si se ha recibido una petición ARP. ServiceISQ envía rutinas basadas en el protocolo contenido en
esas tramas.
Para recibir una trama, el IC debe aceptarla usando el registro IA y el filtrando la dirección destino. Después de
que el paquete sea aceptado, la introducción y el delimitador de principio-de-trama son ignorados y los bits que
siguen al SFD son cargados en el buffer de recepción del CS8900A-CQ. Para ayudar a comprender la diferencia
entre paquetes y tramas, se ha incluido la figura 1. RXCFG_RX_OK_IE (0x0100) se carga en el registro
RxCFG, y el bit BufferCRC (0x0800) se borra. Esto significa que no se incluye el CRC en el buffer de
recepción o el cálculo de la longitud.
Figura 1—Todo lo que hay en el área de la trama (frame),
a excepción del relleno (Padding) y del CRC, lo ponemos
nosotros.
LA SIGUIENTE LECTURA
La siguiente lectura requerida introduce la longitud de la trama, y será transmitida del IC al PIC. Esto es la
longitud total de bits que empiezan con el DA y terminan con el último byte antes del valor CRC de 4 bytes. El
valor de la longitud de la trama es almacenado al principio de dos ubicaciones del buffer del PIC (0x30 y 0x31).
El buffer de recepción del CS8900A-CQ pasa de ser un byte bajo a un byte alto en la RAM del PIC por la
longitud de la trama almacenada.
El buffer de la trama en el PIC va de 0x32 a 0x7F, o sea, 78 bytes. Sobra mucha memoria RAM en el PIC de
otros bancos que pueden ser usados para hacer más grande el buffer, pero para esta aplicación, 78 bytes son
suficientes. Esto significa que solo debemos aceptar tramas de 78 bytes o menos o únicamente rellenar el buffer
del PIC con 78 bytes, como máximo, e ignorar el resto.
Bien, no hay bits para limitar la longitud de la trama recibida, pero podemos despreciar cualquier byte que vaya
más allá de los 78 permitidos. En el anexo 12 bajo el nombre GetFrameData, hay un flag bit denominado
bitbucket. Si incrementamos el FSR (apuntará al siguiente registro disponible de la RAM del PIC) lo
pondremos por encima de 0x7F, el resto de los bytes que sobran son leídos desde el buffer de recepción del IC
y vaciado al cubo de bits.
En lugar de desechar los bytes que sobrepasen la dirección 0x7F en el buffer de recepción del CS8900A-CQ,
podríamos leer el registro RxEvent después de transmitir el byte 0x7F y hacer que el CS8900A-CQ mueva la
siguiente trama a su buffer. Pero como se está leyendo la trama entera, no es necesario hacer esto.
Foto 1—Imagen del
programa que usaremos
para programar el PIC.
(ampliar)
Vamos a suponer que un host envía una petición ARP a la EDB y todas las instrucciones del anexo 12 se
ejecuten con éxito. La foto 1 muestra cómo aparece dentro del PIC. En la foto 2 vemos que el Sniffer ve en la
misma situación y en la misma trama.
Foto 2—Hemos recibido
una trama con un tamaño
de 60 bytes. (ampliar)
La longitud de la trama está indicada en las direcciones 0x30 y 0x31 en el depósito del PIC. El Sniffer
simplemente indica el tamaño de la trama. Empieza en la dirección 0x32 en el depósito del PIC en la foto.
Echemos otro vistazo a la figura 1 y vayamos comparando los datos de la foto 1 y la foto 2.
4.-ARP
Si miramos al principio de la captura del Sniffer, nos daremos cuenta que el segundo evento es una transmisión
ARP, y el tercero es la respuesta ARP de la dirección física 00EDTP. La foto 3 parece similar a la captura de
pantalla de la respuesta ARP con la excepción de que se le ha agregado una dirección física suministrada por la
EDB (000045445450) y un Opcode 2 en la trama ARP define la trama como una respuesta ARP. El proceso
ARP es como un problema de álgebra. Usas algo conocido (direcciones IP) para obtener algo desconocido
(dirección física).
Foto 3—En esta captura se
muestra la respuesta ARP
que hemos recibido.
(ampliar)
Si empezamos en la DA y contamos el número total de bytes en la respuesta ARP, tendremos 42. Eso es el
total, 60 bytes, menos 18 de relleno. En el anexo 14, al Puerto C se le ordena sacar 0x2A y 42 bytes del buffer
de respuesta ARP del CS8900A-CQ. Después de que el IC asigne el espacio y fije el RDY4TXNOW_BIT, los
bits de la respuesta ARP salen de la RAM del PIC en el orden que se muestran en la figura 1 y la foto 3,
empezando con la DA. Después de que todos los bytes estén acumulados en el buffer de transmisión del
CS8900A-CQ, el IC genera una introducción a la que le sigue un SFD. Y suponiendo que no ocurre ninguna
colisión, la respuesta ARP alcanza la ethernet seguida de un CRC generado por el CS8900A-CQ.
SIN TRAMPAS
Si seguimos observando la foto 3, vemos que el cuarto evento es una transmisión UDP entre el PC llamado
SPEADY y la EDB. Ahora no vamos a entrar en detalle sobre lo que significa cada campo IP. Podemos
observar que los campos del Sniffer coinciden con los campos IP que se muestran en el anexo 15.
En la foto 4 se puntualiza el tipo de campo DLC en el contenedor hex. 0800, el cual denota una trama IP.
Siguiendo la lógica en el anexo 16, podemos ver que el 0806 crea una trama ARP repetida, y el 0800 envía el
código al path para procesar una trama IP.
Foto 4—Todo este trabajo
para transmitir un solo
byte! (ampliar)
El firmware de la EDB examina el puerto de destino UDP para determinar cómo manejar los datos UDP. En
este caso, el puerto destinatario es el 7. Cuando el puerto UDP esté direccionado en el firmware de la EDB, se
produce una operación de ‘eco’. Esto significa que, los datos, en este caso una “a” (0x61), son repetidos y
devueltos al puerto del host 5002. Lo podemos ver desde el quinto evento, en la parte de arriba de la foto 5, que
este intercambio implica al puerto emisor y al receptor, direcciones IP y direcciones físicas. Esta trama
intercambiada es devuelta al puerto emisor UDP con los datos UDP intactos. Vamos a comparar las fotos 5 y 6
para asimilar el concepto.
Foto 5—Y te vuelve un byte
de datos. (ampliar)
PINGING
ARP y UDP es el conjunto básico de protocolos que la EDB usa para mover los datos a través de la ethernet. El
ping es una aplicación basada en el protocolo ICMP que nos ayuda a determinar si un host remoto está online.
Las fotos 7 y 8 muestran el proceso más detalladamente, pero a nosotros no nos hace falta mucho más,
simplemente saber que el ping está incorporado en el firmware de la EDB. La foto 9 muestra el comando ping
usado bajo un PC sobre Windows 98 a la EDB bajo el control del PICMASTER.
Foto 6—La primera vez que
falla el ping es porque la
aplicación del PIC no estaba
ejecutándose. (ampliar)
5.-What’s the point
Bien, ya hemos visto como construir un aparato y trabajar en una Ethernet con un PIC y un puñado de
componentes.
A continuación se incluye un programa en Visual Basic que envía y recibe datos usando el protocolo UDP.
Podemos seleccionar la dirección IP y el puerto UDP y transmitir datos entre el PC y cualquier EDB en una red.
Este pequeño programa también tiene una función de eco dirigida al puerto UDP 7 y un simple mecanismo de
selección de IP y UDP, además de que puede enviar una señal de On/Off al dispositivo por el puerto A del PIC
de la EDB. Puedes hacerte una idea de la funcionalidad del programa mirando la foto 7.
Foto 7—La aplicación la puedes conseguir
aquí.
6.-Y para finalizar... los programas
No hemos hablado mucho sobre el código de programación del PIC16F877. El programa funciona con el .hex
generado con el entorno de programación MPLAB de Microchip. Sólo hay que escribir el código, ensamblarlo
y asegurarse de que la salida .hex y el código estén en el mismo directorio. Entonces, cargar el fichero .hex y
pulsar el botón Programar.
Foto 8—Captura del
programador del PIC16F877
(ampliar)
Con todo esto hemos conseguido la base para realizar cualquier tipo de aplicación en la que necesitemos enviar
datos a través de una red.
El chip CS8900
1.-Introducción
El CS8900 es un chip Ethernet, es decir un chip diseñado para ser incrustado en placas caseras para brindar un
interfaz completo Ethernet. El chip tiene incorporado un buffer que le permite conectar sistemas lentos a una
LAN de 10Mbit/s a través de un RJ45. Cuenta con un modo de ocho bits que le posibilita un interfaz usando
solo 14 pins de entrada / salida. Cualquier sistema que tenga dos puertos de 8 bits bidireccionales puede usar
este chip.
Usando microcontroladores actuales podemos implementarle funcionalidades básicas de TCP/IP. Otra de sus
muchas posibilidades es poder ser programado para comunicarse vía Windows Socket desde un Windows 98 o
un NT.
2.-Características principales
El CS8900 tiene 4K de memoria integrada permitiéndole recibir y enviar paquetes de manera asíncrona al
microcontrolador. Esto elimina cualquier problema temporal que normalmente aparece, permitiendo al lento
microcontrolador hablar en la ethernet.
El CS8900 junto con un microchip, es muchísimo más fácil de utilizar que los típicos receptores-transmisores
que se conectan directamente en un puerto ISA o PCI usando DMA para tener acceso a una RAM externa
utilizada para recibir los paquetes. Simplemente consta de un bus de direccionamiento de 4 bits, uno de 8 para
datos y 4 señales de control (/RD, /WR, /AEN e INTR) es todo lo que necesita esta placa (CS8900 con
microcontrolador) para comunicarse en la ethernet.
3.-Esquema principal del chip
Cosas a destacar sobre el esquema a simple vista es que no tiene condensadores ya que el CS8900 los
implementa en su interior.
La resistencia de 4.99K que necesita puede que sea algo bastante difícil de encontrar, esto se puede solucionar
con una tres resistencias una de 4.7K, otra de 254 Ohms y una de 51 Ohms.
4.-Arquitectura del CS8900
Como hemos dicho el chip es una solución ethernet, e incorpora toda la circuitería analógica y digital necesaria.
Los bloques principales que hacen posible esto son:
Interfaz ISA directo
Incluido en el CS8900 es un bus con 24 mA de capacidad. Sus opciones de configuración
cuatro interruptores y tres canales DMA (uno de ellos se selecciona durante la inicialización).
incluyen
Memoria integrada
Incorpora una pagina de 4-Kbyte de memoria incrustada en el chip eliminando así el coste y el espacio
que supondría tenerla externa, de este modo el chip es capaz de transmitir y recibir tramas el solo sin la
necesidad de manejar difíciles e ineficientes esquemas de memoria. Además puede operar con
controladores DMA proveyendo así al ingeniero de una gran flexibilidad.
Máquina ethernet MAC
La máquina MAC de este chip cumple completamente con la norma IEE 802.3 (ISO/IEC 8802-3, 1993),
y soporta operaciones bidireccionales. Maneja todos los aspectos de una transmisión-recepción de
tramas en ethernet incluyendo detección de colisión, preámbulo de generación y detección y generación
y test CRC (cyclic redundancy check). Los aspectos programables del MAC incluyen retrasmisión
automática cuando hay colisión y relleno automático de tramas transmitidas.
Interfaz EERPROM
El CS8900 nos provee de un simple y eficiente interfaz EEPROM que nos permite configurar la
información almacenada en una opcional EEPROM, y luego cargarla automáticamente al arrancar. Esto
elimina el uso de switches costosos y engorrosos jumpers.
Frontal completamente analógico
El frontal incorpora un codificador-decodificador analógico, un reloj para el recuperamiento del circuito,
un transceptor 10BASE-T y una completa AUI (Attachment Unit Interfase). Este frontal prevé de una
selección manual o automática entre 10BASE-T o AUI, y ofrece tres LED en el chip para indicar el
estado de la comunicación, el estado del bus y la actividad de la línea ethernet.
10BASE-T
El transceptor 10BASE-T incluye drivers, receptores y filtros analógicos permitiendo una conexión
directa a transformadores aislados eléctricamente de bajo coste. Soporta 100, 120 y 150 Ohm de cables
sin blindaje, cables largos, y recepción automática de polaridad inversa de detección y corrección.
5.-Pinouts del CS8900
Para poder montar cualquier chip necesitamos conocer el diagrama que describe el funcionamiento de cada pin
del chip:
8
3
2
1
4
7
6
5
1) Vcc
Entrada de corriente +5V DC (en continua)
2) GND
La toma a tierra (Ground)
3) D7-D0
Entrada/salida del bus de datos del CS8900A
4) /AEN
Adress Enable se activa a nivel bajo y esta también referido a Chip Select
5) /WR
Control de escritura (write)
6) /RD
Control de lectura (read)
7) /IRQ
Interrupciones simbolizadas con este pin cuando se pone a nivel alto
8) A3-A0
Estos se usan para el bus de direcciones
*Puse más o menos las correspondencias de los pins aunque no son totalmente exactas debido a que la
precisión de las flechas no me lo permitió.
6.-Ejemplo de diseño de una placa
Las piezas que nos harían falta serían las siguientes:
•
•
•
•
•
•
•
el chip de Crystal propiamente dicho
un HALO TG42-1406IN1
resistencias de 24, 51, 100, 240 y 680 Ohm y una de 4.7
además de dos condensadores de 68pf y 100nF
dos leds uno verde y uno amarillo
un cristal de cuarzo de 20Mhz
y un conector RJ45
Simplemente con esto podemos hacer nuestra pequeña placa conectada a una red ethernet, el diseño a seguir
sería el siguiente:
7.-Aplicación con un CS8900A
Un ejemplo de lo que podemos hacer con esta este chip, es un pequeño pero efectivo sniffer. Un sniffer es
explicado rápidamente un programa que captura paquetes en una red los analiza y los interpreta para poder
mostrarlos en pantalla.
Una placa con este chip presenta un aspecto fantástico (solo hemos de usar 15 puertos de entrada salida) para
ser usado como sniffer, simplemente tenemos que adquirir una placa muy barata de la casa Jameco, más
exactamente el modelo “Jameco #162536” sobre la cual conectaremos nuestro chip CS8900 del siguiente
modo:
•
•
•
•
•
•
•
Los pins a0 a a3 a los p0 a p3 de la placa de Jameco
Conectaremos el /RD del chip al p4
Conectamos el /WR al p5
El AEN (es decir el /CHIPSEL) al p6
Dejaremos colgado el INTR, porque no lo vamos a usar
Conectaremos el bus de datos “d0-d8” a los pines “p8-p15” de la placa de Jameco
El p7 de la placa de Jameco no lo usaremos
Gráfico de la placa de Jameco:
*Nota: la verdad es que la placa para ser con fines educacionales es un poco cara cuesta unos 56€, se puede
comprar en la página de Jameco ( http://www.jameco.com )
Una vez hecho esto solo nos queda programar el chip, el código fuente del sniffer lo podéis encontrar en
http://embeddedethernet.com . Cuando ya tenemos programado el chip solo nos queda enchufar nuestro
pequeño experimento a nuestro PC mediante el puerto COM, una de las facilidades que nos da la placa de
Jameco Electronics, como podemos ver en el gráfico del pie de esta página. Nos conectaremos a la placa a
través de una sesión Hyperterminal en Windows; por ejemplo.
Cosas a tener en cuento al programar el chip son poner una IP de nuestra red y tener muchísimo cuidado al
programar la MAC ya que esto es algo muy delicado, debido a que la MAC es un número que se compra y esta
estandarizado por la IEE. Este número tiene la finalidad de hacernos posible la comunicación. El mayor
problema que podemos tener es que nuestra MAC coincida con alguna de la red, hemos de evitar esto, y en el
caso que fuéramos a poner esta placa en una red comercial entonces si que tendríamos que comprar una MAC
buena.
Un ejemplo de lo que devolverá nuestro sniffer se encuentra en la siguiente página:
Este ejemplo es una solicitud de un ping (ICMP) a la dirección 192.168.1.2 la cual fue capturada. El autor fue
192.168.100.1 y su MAC la 006008DFD9A3, todo esto lo podemos ver en el cuadro de arriba que es lo que ha
capturado nuestro sniffer. Bien, si seguimos observando también podemos ver que el destino de esta petición es
la dirección 192.168.1.2 que tiene de MAC 000000123456. El paquete completo fue de tamaño 74 menos doce
de la cabecera ethernet. Podemos sacar mucha más información del paquete capturado para ello solo hemos de
entender la trama ethernet, para lo cual podemos apoyarnos en los numerosos libros que podemos encontrar en
el mercado.
Código del sniffer
Signature=3124
EISA=630E
ProdID=0700
ppSelfCtl=0015
ppSelfSt=0896
CS8900 RESET
Init complete
Recv packet length=74
Dest MAC=$000000123456
Src MAC=$006008DFD9A3
Packet type=$0800
IP Ver 4, HDR Length=20, TOS=$00
Packet Length=60
Datagram ID=$6F01
Fragment Offset=0
TTL=32
Protocol=ICMP
Checksum=$0218
Source IP Address=192.168.100.1
Destination IP Address=192.168.1.2
Packet Data:
0800 3E5C 0200 0D00 6162 6364 6566 6768
696A 6B6C 6D6E 6F70 7172 7374 7576 7761
6263 6465 6667 6869 0000