Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ELECTRNICA
Se disearon para convertir las seales 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:
El circuito de muestreo
El transmisor asncrono
El receptor asncrono.
EL RS-232
Tambin 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 Comunicacin de datos).
La interfaz RS-232 est diseada para distancias cortas, de unos 15 metros o menos, y para
velocidades de comunicacin bajas, de no ms de 20 [Kb/s]. A pesar de ello, muchas veces se
utiliza a mayores velocidades con un resultado aceptable.
Para la conversin de voltajes aceptables para el protocolo RS232 se utilizan convertidores de
niveles RS232 a TTL y viceversa.
A continuacin se presenta un ejemplo del circuito de comunicacin por RS232 del
PIC16F628A y una PC:
ISTP IDAT
ELECTRNICA
PUERTO PARALELO
Esta conformado por un conjunto de lneas 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 comunicacin los datos se transmiten byte por byte en el bus conformado, en
contraposicin al puerto serie, que enva los datos bit a bit por el mismo hilo.
Es un moderno protocolo de comunicacin 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 multiplicacin de frecuencia de oscilacin 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 tambin otro clock para el funcionamiento del
microcontrolador.
El protocolo USB tiene mltiples aplicaciones y modos de funcionamiento, en la siguiente
imagen se presenta la Pila de Firmware de Microchip USB:
ISTP IDAT
ELECTRNICA
Control transfer
Interrupt Bulk
Isochronous
ISTP IDAT
ELECTRNICA
Incluye una lnea de reloj, dato entrante, dato saliente y un pin de chip select, que conecta o
desconecta la operacin del dispositivo con el que uno desea comunicarse. De esta forma, este
estndar permite multiplexar las lneas de reloj.
CAN es un protocolo de comunicaciones serie que soporta control distribuido en tiempo real
con un alto nivel de seguridad y multiplexacin.
El establecimiento de una red CAN para interconectar los dispositivos electrnicos internos de
un vehculo 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
interconexin de sistemas abiertos), la arquitectura de protocolos CAN incluye tres capas:
fsica, de enlace de datos y aplicacin, adems de una capa especial para gestin y control del
nodo llamada capa de supervisor.
Capa fsica: define los aspectos del medio fsico para la transmisin de datos entre nodos de
una red CAN, los ms importantes son niveles de seal, representacin, sincronizacin y
tiempos en los que los bits se transfieren al bus. La especificacin del protocolo CAN no define
una capa fsica, sin embargo, los estndares ISO 11898 establecen las caractersticas que
deben cumplir las aplicaciones para la transferencia en alta y baja velocidad.
Capa de enlace de datos: define las tareas independientes del mtodo de acceso al medio,
adems 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 transmisin a frecuencias altas y retrasos mnimos. En redes
multimaestro, la tcnica 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
ISTP IDAT
ELECTRNICA
datos define el mtodo de acceso al medio as como los tipos de tramas para el envo de
mensajes
Cuando un nodo necesita enviar informacin a travs de una red CAN, puede ocurrir que varios
nodos intenten transmitir simultneamente. CAN resuelve lo anterior al asignar prioridades
mediante el identificador de cada mensaje, donde dicha asignacin se realiza durante el diseo
del sistema en forma de nmeros binarios y no puede modificarse dinmicamente. El
identificador con el menor nmero binario es el que tiene mayor prioridad.
El mtodo de acceso al medio utilizado es el de Acceso Mltiple por Deteccin de Portadora,
con Deteccin 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 mtodo, los nodos en la red que necesitan transmitir informacin deben esperar a que
el bus est libre (deteccin de portadora); cuando se cumple esta condicin, dichos nodos
transmiten un bit de inicio (acceso mltiple). Cada nodo lee el bus bit a bit durante la
transmisin de la trama y comparan el valor transmitido con el valor recibido; mientras los
valores sean idnticos, el nodo contina con la transmisin; 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 estndares (standard frame) con un identificador de 11 bits
definidas en la especificacin CAN 2.0A, y las tramas extendidas (extended frame) con un
identificador de 29 bits definidas en la especificacin CAN 2.0B.
Para la transmisin 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 tambin se establecen en ambos formatos, estndar 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 deteccin 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 sustitucin 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 algn tipo de error
y puede ocasionar que un nodo defectuoso pueda acaparar el medio fsico. Para eliminar este
riesgo el protocolo CAN define un mecanismo autnomo para detectar y desconectar un nodo
defectuoso del bus, dicho mecanismo se conoce como aislamiento de fallos.
Capa de aplicacin: Existen diferentes estndares que definen la capa de aplicacin; algunos
son muy especficos y estn relacionados con sus campos de aplicacin. Entre las capas de
aplicacin ms utilizadas cabe mencionar CAL, CANopen,DeviceNet, SDS (Smart Distributed
System), OSEK, CANKingdom.
CODIGO MANCHESTER
ISTP IDAT
ELECTRNICA
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 lgico la
seal debe cambiar del nivel Bajo a Alto (suponiendo una amplitud fsica de codificacin de los
datos), manteniendo el nivel bajo en la primera mitad del perodo del bit, y un nivel alto en la
segunda mitad. Para un 1 lgico los niveles de la seal deber cambiar de Alto a Bajo.
La segunda convencin es tambin 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 lgico
es representado por una secuencia de seales Alto-Bajo y un 1 lgico est representado por
una secuencia de seal Bajo-Alto.
Como puede apreciarse si a una seal codificada en Manchester la invertimos, hemos pasado
de una convencin a la otra.
Entonces, las reglas de codificacin segn la primera convencin son:
Si el dato original es un 0, el cdigo Manchester es: 01
Si el dato original es un 1, el cdigo 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 perodo.
El proceso para realizar la codificacin es muy simple y solo es necesario efectuar un X-OR
entre los datos y el clock para obtener la seal codificada. La decodificacin es mucho ms
compleja y necesita un post aparte.
Datos XOR clock
Manchester
ISTP IDAT
ELECTRNICA
Codificacin Manchester Norma Thomas GE. El patrn 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 codificacin puede ser alternativamente considerada como una codificacin de fase, donde
cada bit es codificado por una transicin de fase de 90, o 270 grados. Por lo tanto, es comn
encontrar que se refiera a ella como un Cdigo Biphase.
A su vez la codificacin 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 transmisin de datos. Lo que significa, que es self-cloking, por lo tanto la seal de
reloj (clock) puede ser recuperada de los datos codificados.
Cdigos Ilegales
Dado que un 0 codifica en 01 y un 1 codifica a 10 (o viceversa), se desprende que cdigos
Manchester 00 y 11 son secuencias ilegales. Estos cdigos ilegales se utilizan para comprobar
errores en los datos.
Tambin es posible tener el cdigo ilegal de 4 bits 00 00 11 11, el cual es un suceso poco
probable. Este cdigo 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 patrn nico de inicio/fin
para identificar los lmites de nuestra transmisin 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 codificacin Manchester es que los datos
codificados requieren el doble de ancho de banda.
Ventajas
Usos
ISTP IDAT
ELECTRNICA
///////////////////////////////////////////////////////////////////////////RECEPTOR///////////////////////////////////////
#include <16f877a.h>
#FUSES NOWDT
#FUSES HS
#use standard_io(b)
#use delay(clock=20000000)
#use rs232(baud=2400,parity=N,xmit=PIN_A3,rcv=PIN_A2,bits=8)//,invert)
#include <flex_lcd.c>
int i=0;
////////////////////////////////DECODE MANCHESTER///////////////////////////////
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;
//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.
ISTP IDAT
{return 0xff;
ELECTRNICA
}
enc<<=2;
que multiplicarlo en 4
x++;
}
return dec;
dato=0;
}
Void main (void)
{ lcd_init();
int valor=0,low=0,high=0,datomanch=0,status=0,dato=0,valorfinal=0;
float p;
while(true)
{valor=0;
low=0;
high=0;
datomanch=0;
dato=0;
valor = getc();
datomanch=recibir_dato(valor);
if(status==0)
trabajo con los bit 0 al 3,
{status=1;
low=datomanch;
valorfinal=0;
//utilizo esta bandera para que no me imprima el valor del ADC
hasta que no tenga completo el el valor enviado del ADC
}
else
{status=0;
high=datomanch;
high<<=4;
dato=(high | low);
ISTP IDAT
ELECTRNICA
valorfinal=1;
}
if(datomanch==0xff)
{printf(lcd_putc,"\fERROR");
}
else
{if(valorfinal==1)
{p=(dato*5/(256-1));
/////////////////////////////////////////////////////////////////////////Transmisor/////////////////////////////////////////////////
#include <16f877A.h>
#device adc=8
#FUSES NOWDT
#FUSES HS
#use standard_io(b)
#use delay(clock=20000000)
#use rs232(baud=2400,parity=N,xmit=PIN_A3,rcv=PIN_A2,bits=8)//,invert)
#include <flex_lcd.c>
/////////////////////////////////CODE MANCHESTER////////////////////////////////
void Enviar_dato(int dato)
{
int i,j,b,me,x;
b=dato;
for (i=0; i<2; i++)
1
0
ISTP IDAT
{ me = 0;
ELECTRNICA
x=0;
for (j=0 ; j<4; j++)
{ if (bit_test(b,j))
// si en la posicion j del Byte b hay un 1 entonces pongo en el bit
x===>0 y en el bitx++==>1
{bit_clear(me,x);
x++;
bit_set(me,x);
x++;
}
else
// si en la posicion j del Byte b hay un 0 entonces pongo en el bit
x===>1 y en el bitx++==>0
{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);
1
1
ISTP IDAT
ELECTRNICA
}
}
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
1
2