Comunicacion en Microcontroladores PIC

ISTP IDAT ELECTRÓNICA COMUNICACIÓN EN MICROCONTROLADORES PIC A continuación se presentan los tipos de comunicación en

Views 254 Downloads 5 File size 346KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

ISTP IDAT

ELECTRÓNICA

COMUNICACIÓN EN MICROCONTROLADORES PIC A continuación se presentan los tipos de comunicación en Microcontroladores PIC. 

UART O USART (TRANSMISOR Y RECEPTOR SÍNCRONO ASÍNCRONO UNIVERSAL)

Se diseñaron para convertir las señales que maneja el microcontrolador compatibles con el protocolo RS232 y transmitirlas al exterior. La USART del PIC puede ser configurada para operar en tres modos: •

Modo Asíncrono (full duplex (transmisión y recepción simultáneas)),



Modo Síncrono – Maestro (half duplex)



Modo Síncrono – Esclavo (half duplex)

El módulo Asíncrono de la USART consta de 4 módulos fundamentales: •

El circuito de muestreo



El generador de frecuencia de transmisión (Baud Rate)



El transmisor asíncrono



El receptor asíncrono.



EL RS-232

También conocido como Electronic Industries Alliance RS-232C, es una interfaz que designa una norma para el intercambio serie de datos binarios entre un DTE (Equipo terminal de datos) y un DCE (Data Communication Equipment, Equipo de Comunicación de datos). La interfaz RS-232 está diseñada para distancias cortas, de unos 15 metros o menos, y para velocidades de comunicación bajas, de no más de 20 [Kb/s]. A pesar de ello, muchas veces se utiliza a mayores velocidades con un resultado aceptable. Para la conversión de voltajes aceptables para el protocolo RS232 se utilizan convertidores de niveles RS232 a TTL y viceversa. A continuación se presenta un ejemplo del circuito de comunicación por RS232 del PIC16F628A y una PC:

[NOMBRE DEL AUTOR]

1

ISTP IDAT 

ELECTRÓNICA

PUERTO PARALELO

Esta conformado por un conjunto de líneas de entrada y salida los cuales conforman una puerta paralela esclava para poder conectarse con los buses de otros dispositivos, Microcontroladores y/o microprocesadores. En este tipo de comunicación los datos se transmiten byte por byte en el bus conformado, en contraposición al puerto serie, que envía los datos bit a bit por el mismo hilo.



USB (UNIVERSAL SERIAL BUS)

Es un moderno protocolo de comunicación para el cual Microchip tiene soporte con una serie de PICs USB. Estos Microcontroladores tienen implementado el hardware para el control del protocolo USB en el cual se dio mucha importancia a la velocidad de procesamiento de estos PIC. Mediante un complejo sistema de multiplicación de frecuencia de oscilación mediante PLL se obtiene un clock de 96MHz el cual se divide y se asigna 48Mhz para el funcionamiento del USB, y mediante otro divisor se puede asignar también otro clock para el funcionamiento del microcontrolador. El protocolo USB tiene múltiples aplicaciones y modos de funcionamiento, en la siguiente imagen se presenta la Pila de Firmware de Microchip USB:

Estos Microcontroladores presentan los siguientes tipos de aplicaciones: •

Propósito General (USB Hardware Driver)



HID (Human Interface Device)



CDC (Emulación RS232)



USB Mass Storage

En el caso de aplicaciones de propósito general Microchip brinda el software necesario para el desarrollo de estos. Por ejemplo para aplicaciones en Windows existe una librería dinámica “mpusbapi.dll” el cual implementa funciones para aplicaciones en Ordenador el cual junto con el driver “mchpusb” y el firmware desarrollado en el PIC se tiene comunicación USB eficiente.

[NOMBRE DEL AUTOR]

2

ISTP IDAT

ELECTRÓNICA

El modo de transmisión de datos se puede realizar de tres maneras: •

Control transfer



Interrupt Bulk



Isochronous



I2C (INTER-INTEGRATED CIRCUIT)

I²C es un bus de comunicaciones serie. La velocidad es de 100Kbits por segundo en el modo estándar, aunque también permite velocidades de 3.4 Mbit/s. Es un bus muy usado para comunicar Microcontroladores y sus periféricos en sistemas integrados (Embedded Systems) y generalizando más para comunicar circuitos integrados entre si que normalmente residen en un mismo circuito impreso. La principal característica de I²C es que utiliza dos líneas para transmitir la información y una de referencia : SDA: datos SCL: reloj GND: masa Las dos primeras líneas son drenador abierto, por lo que necesitan resistencias de pull-up. Los dispositivos conectados al bus I²C tienen una dirección única para cada uno. También pueden ser maestros o esclavos. El dispositivo maestro inicia la transferencia de datos y además genera la señal de reloj, pero no es necesario que el maestro sea siempre el mismo dispositivo, esta característica se la pueden ir pasando los dispositivos que tengan esa capacidad. Esta característica hace que al bus I²C se le denomine bus multimaestro.



SPI (SERIAL PERIPHERAL INTERFACE)

El Bus SPI es un estándar de comunicaciones, usado principalmente para la transferencia de información entre circuitos integrados en equipos electrónicos. El bus de interface de periféricos serie o bus SPI es un estándar para controlar casi cualquier electrónica digital que acepte un flujo de bits serie regulado por un reloj

[NOMBRE DEL AUTOR]

3

ISTP IDAT

ELECTRÓNICA

Incluye una línea de reloj, dato entrante, dato saliente y un pin de chip select, que conecta o desconecta la operación del dispositivo con el que uno desea comunicarse. De esta forma, este estándar permite multiplexar las líneas de reloj.



CAN (CONTROLLER AREA NETWORK)

CAN es un protocolo de comunicaciones desarrollado por la firma alemana Robert Bosch GmbH, basado en una topología bus para la transmisión de mensajes en ambientes distribuidos, además ofrece una solución a la gestión de la comunicación entre múltiples CPUs (unidades centrales de proceso). Características: • Es un protocolo de comunicaciones normalizado, con lo que se simplifica y economiza la tarea de comunicar subsistemas de diferentes fabricantes sobre una red común o bus. • El procesador anfitrión (host) delega la carga de comunicaciones a un periférico inteligente, por lo tanto el procesador anfitrión dispone de mayor tiempo para ejecutar sus propias tareas. • Al ser una red multiplexada, reduce considerablemente el cableado y elimina las conexiones punto a punto, excepto en los enganches. El protocolo de comunicaciones CAN proporciona los siguientes beneficios: • Es un protocolo de comunicaciones normalizado, con lo que se simplifica y economiza la tarea de comunicar subsistemas de diferentes fabricantes sobre una red común o bus. • El procesador anfitrión (host) delega la carga de comunicaciones a un periférico inteligente, por lo tanto el procesador anfitrión dispone de mayor tiempo para ejecutar sus propias tareas. • Al ser una red multiplexada, reduce considerablemente el cableado y elimina las conexiones punto a punto, excepto en los enganches.

CAN es un protocolo de comunicaciones serie que soporta control distribuido en tiempo real con un alto nivel de seguridad y multiplexación. El establecimiento de una red CAN para interconectar los dispositivos electrónicos internos de un vehículo tiene la finalidad de sustituir o eliminar el cableado. Las ECU, sensores, sistemas antideslizantes, etc. se conectan mediante una red CAN a velocidades de transferencia de datos de hasta 1 Mbps. De acuerdo al modelo de referencia OSI (Open Systems Interconnection, Modelo de interconexión de sistemas abiertos), la arquitectura de protocolos CAN incluye tres capas: física, de enlace de datos y aplicación, además de una capa especial para gestión y control del nodo llamada capa de supervisor. • Capa física: define los aspectos del medio físico para la transmisión de datos entre nodos de una red CAN, los más importantes son niveles de señal, representación, sincronización y tiempos en los que los bits se transfieren al bus. La especificación del protocolo CAN no define una capa física, sin embargo, los estándares ISO 11898 establecen las características que deben cumplir las aplicaciones para la transferencia en alta y baja velocidad. • Capa de enlace de datos: define las tareas independientes del método de acceso al medio, además debido a que una red CAN brinda soporte para procesamiento en tiempo real a todos los sistemas que la integran, el intercambio de mensajes que demanda dicho procesamiento requiere de un sistema de transmisión a frecuencias altas y retrasos mínimos. En redes multimaestro, la técnica de acceso al medio es muy importante ya que todo nodo activo tiene los derechos para controlar la red y acaparar los recursos. Por lo tanto la capa de enlace de

[NOMBRE DEL AUTOR]

4

ISTP IDAT

ELECTRÓNICA

datos define el método de acceso al medio así como los tipos de tramas para el envío de mensajes Cuando un nodo necesita enviar información a través de una red CAN, puede ocurrir que varios nodos intenten transmitir simultáneamente. CAN resuelve lo anterior al asignar prioridades mediante el identificador de cada mensaje, donde dicha asignación se realiza durante el diseño del sistema en forma de números binarios y no puede modificarse dinámicamente. El identificador con el menor número binario es el que tiene mayor prioridad. El método de acceso al medio utilizado es el de Acceso Múltiple por Detección de Portadora, con Detección de Colisiones y Arbitraje por Prioridad de Mensaje (CSMA/CD+AMP, Carrier Sense Multiple Access with Collision Detection and Arbitration Message Priority). De acuerdo con este método, los nodos en la red que necesitan transmitir información deben esperar a que el bus esté libre (detección de portadora); cuando se cumple esta condición, dichos nodos transmiten un bit de inicio (acceso múltiple). Cada nodo lee el bus bit a bit durante la transmisión de la trama y comparan el valor transmitido con el valor recibido; mientras los valores sean idénticos, el nodo continúa con la transmisión; si se detecta una diferencia en los valores de los bits, se lleva a cabo el mecanismo de arbitraje. CAN establece dos formatos de tramas de datos (data frame) que difieren en la longitud del campo del identificador, las tramas estándares (standard frame) con un identificador de 11 bits definidas en la especificación CAN 2.0A, y las tramas extendidas (extended frame) con un identificador de 29 bits definidas en la especificación CAN 2.0B. Para la transmisión y control de mensajes CAN, se definen cuatro tipos de tramas: de datos, remota (remote frame), de error (error frame) y de sobrecarga (overload frame). Las tramas remotas también se establecen en ambos formatos, estándar y extendido, y tanto las tramas de datos como las remotas se separan de tramas precedentes mediante espacios entre tramas (interframe space). En cuanto a la detección y manejo de errores, un controlador CAN cuenta con la capacidad de detectar y manejar los errores que surjan en una red. Todo error detectado por un nodo, se notifica inmediatamente al resto de los nodos. • Capa de supervisor: La sustitución del cableado convencional por un sistema de bus serie presenta el problema de que un nodo defectuoso puede bloquear el funcionamiento del sistema completo. Cada nodo activo transmite una bandera de error cuando detecta algún tipo de error y puede ocasionar que un nodo defectuoso pueda acaparar el medio físico. Para eliminar este riesgo el protocolo CAN define un mecanismo autónomo para detectar y desconectar un nodo defectuoso del bus, dicho mecanismo se conoce como aislamiento de fallos. • Capa de aplicación: Existen diferentes estándares que definen la capa de aplicación; algunos son muy específicos y están relacionados con sus campos de aplicación. Entre las capas de aplicación más utilizadas cabe mencionar CAL, CANopen,DeviceNet, SDS (Smart Distributed System), OSEK, CANKingdom.



CODIGO MANCHESTER

La codificación Manchester es una técnica de codificación sincrónica que se utiliza para codificar el clock y los datos de un flujo de bits sincrónico. En esta técnica, los datos binarios que se transmiten no se envían como una secuencia de 1 y 0 lógicos (conocida como de no retorno a cero, NRZ). En cambio, los bits se convierten en un formato ligeramente diferente que tiene una serie de ventajas sobre el uso directo de codificación binaria. Existen dos convenciones empleadas para la codificación Manchester.

[NOMBRE DEL AUTOR]

5

ISTP IDAT

ELECTRÓNICA

La primera de ellas fue publicada por primera vez por Thomas G.E. en 1949 y es seguido por numerosos autores (por ejemplo, Tanenbaum). Especifica que para representar un 0 lógico la señal debe cambiar del nivel Bajo a Alto (suponiendo una amplitud física de codificación de los datos), manteniendo el nivel bajo en la primera mitad del período del bit, y un nivel alto en la segunda mitad. Para un 1 lógico los niveles de la señal deberá cambiar de Alto a Bajo. La segunda convención es también seguida por numerosos autores (por ejemplo, Stallings), así como por las normas IEEE 802.4 (token bus) y IEEE 802.3 (Ethernet). Afirma que un 0 lógico es representado por una secuencia de señales Alto-Bajo y un 1 lógico está representado por una secuencia de señal Bajo-Alto. Como puede apreciarse si a una señal codificada en Manchester la invertimos, hemos pasado de una convención a la otra. Entonces, las reglas de codificación según la primera convención son: • Si el dato original es un 0, el código Manchester es: 01 • Si el dato original es un 1, el código Manchester es: 10 • Cada bit se transmite en un tiempo fijo (el “periodo”). • Las transiciones que significan O o 1 se producen en el punto medio de un período. El proceso para realizar la codificación es muy simple y solo es necesario efectuar un X-OR entre los datos y el clock para obtener la señal codificada. La decodificación es mucho más compleja y necesita un post aparte. Datos XOR clock

Manchester

0

0

0

0

1

1

1

0

1

1

1

0

En los siguientes ejemplos podemos ver la 2 convenciones de codificación:

Codificación Manchester Norma IEEE

[NOMBRE DEL AUTOR]

6

ISTP IDAT

ELECTRÓNICA

Codificación Manchester Norma Thomas GE. El patrón de 8-bits: "0 1 1 1 1 0 0 1" se codifica como "01 10 10 10 10 01 01 10". Bit LSB a la izq. La codificación puede ser alternativamente considerada como una codificación de fase, donde cada bit es codificado por una transición de fase de 90º, o 270º grados. Por lo tanto, es común encontrar que se refiera a ella como un Código Biphase. A su vez la codificación Manchester es un caso especial de binary phase-shift keying (BPSK), donde los datos controlan la fase de una onda cuadrada cuya frecuencia portadora es la velocidad de transmisión de datos. Lo que significa, que es self-cloking, por lo tanto la señal de reloj (clock) puede ser recuperada de los datos codificados. Códigos Ilegales Dado que un ’0′ codifica en 01 y un ’1′ codifica a 10 (o viceversa), se desprende que códigos Manchester 00 y 11 son secuencias ilegales. Estos códigos ilegales se utilizan para comprobar errores en los datos. También es posible tener el código ilegal de 4 bits “00 00 11 11″, el cual es un suceso poco probable. Este “código ilegal” tiene la propiedad de tener un componente de DC de cero y no tiene transiciones de 1 a 0, esa secuencia se la suele utilizar como un patrón único de inicio/fin para identificar los límites de nuestra transmisión de bits de datos codificada en Manchester. 

Desventajas

Se puede observar que hay dos bits de datos codificados en Manchester por cada bit de datos originales. Por lo tanto, la contra de usar una codificación Manchester es que los datos codificados requieren el doble de ancho de banda. 

Ventajas

1. Transmisión serial de bits con componente nula de DC. 2. Detección de errores fácil de aplicar. 

Usos

El codigo Manchester es utilizado en la capa física de la comunicación LAN ETHERNET donde el ancho de banda adicional no es un impedimento para el cable coaxial. También suele utilizarse cuando se realiza una comunicación por medio de RF para evitar el ruido. Existen unos integrados denominados RF800 que son encoder/decoder para transmisiones por RF codificando los datos en Manchester, y agregando un chequeo de error RCR.

[NOMBRE DEL AUTOR]

7

ISTP IDAT 

ELECTRÓNICA

APLICACIONES CON MANCHESTER CODE

Compilado en PIC CCS Este código permite conectar mediante UART 02 microcontroladores por puerto serie en donde el transmisor envía los datos del ADC y el receptor muestra los datos de ADC, sin convertirlo a float.

///////////////////////////////////////////////////////////////////////////RECEPTOR/////////////////////////////////////// #include #FUSES NOWDT #FUSES HS

//No Watch Dog Timer //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)

#use standard_io(b) #use delay(clock=20000000) #use rs232(baud=2400,parity=N,xmit=PIN_A3,rcv=PIN_A2,bits=8)//,invert) #include

int i=0; ////////////////////////////////DECODE MANCHESTER///////////////////////////////

int Recibir_dato(int dato) {

int i=0,dec=0,x=0,enc=0,band=0; enc = dato; x=0; for(i=3; i>0; i--) {band=0; band=enc&0b11000000;

//corroboro que bit estan en 1 y 0, y voy haciendolo de 2 bit a

//dos bit if(band==0b10000000) //1 {bit_set(dec,x); //coloco un 1 en la posicion i } if(band==0b01000000) //0 {bit_clear(dec,x); //coloco un 0 en la pocicion i } if((band==0b00)||(band==0b11)) //como el codigo manchester no acepta que se repitan los 00 ni los 11 devuelve un valor error.

[NOMBRE DEL AUTOR]

8

ISTP IDAT

{return 0xff;

ELECTRÓNICA

//lo uso para ver si trabaja bien el coder y decoder

} enc0 {bit_set(me,x); x++; bit_clear(me,x); x++; } } putc(me); } } void main() {setup_adc_ports(AN0); setup_adc(ADC_CLOCK_INTERNAL);

lcd_init(); int q;

while(true) { set_adc_channel(0); delay_us(20); q=read_adc(); Enviar_dato(q);

[NOMBRE DEL AUTOR]

1 1

ISTP IDAT

ELECTRÓNICA

} }

Otra consulta puede ser que cuando se transmite en RS232 el receptor reciba los datos invertidos ejemplo.

Transmitido==> 0b10100101 Recibido ===>0b01011010 Relacion TX

RX

bit 0

bit6

bit 1

bit7

bit 2

bit4

bit 3

bit5

bit 4

bit2

bit 5

bit3

bit 6

bit0

bit7

bit1

[NOMBRE DEL AUTOR]

1 2