Juan Agustin Otero
/
CodificacionAMIv2
EJN°2: Codificacion AMI de un mensaje
main.cpp
- Committer:
- JAgustinOtero
- Date:
- 2018-06-05
- Revision:
- 0:ef66ab16c9c3
File content as of revision 0:ef66ab16c9c3:
#include "mbed.h" #define bps 9600 #define V 1/9600 #define BSTOP 2 #define CBITS 8 DigitalOut LEDR(LED1); DigitalOut LEDV(LED2); DigitalOut VposTx(PTB0); DigitalOut VnegTx(PTB1); DigitalOut DatoO(PTB2); AnalogOut OUT (PTE30); unsigned char var_aux=0; unsigned char var_pol=0; unsigned char dato[12]= {'T','R','A','N','S','M','I','S','I','O','N','\0'}; unsigned char i=0,n=0,hab=1; void transmisionAMI(unsigned char dato[]); //void recepcionAMI(unsigned char dato[]); void TxAMI(void); void Hab (void); Ticker Tx; enum{UnoPositivo,UnoNegativo,Cero}; enum{Positivo,Negativo}; unsigned char ME_Polaridad_estado=0; unsigned char ME_Dato_estado=0; void ME_Polaridad(void); void Dato(void); int main() { Tx.attach(&TxAMI,V); while(1) { } } void TxAMI(void) { transmisionAMI(dato); } void transmisionAMI(unsigned char dato[]) { if(i < 12) { var_aux = (dato[i] >> n) & 1; DatoO = var_aux; ME_Polaridad();//esta funcion se encarga de variar la polaridad de los "1" logicos Dato();//esta funcion se encarga de variar la salida en funcion a la polaridad que determina la funcion anterior y a una variable que depende de el estado logico de cada bit del mensaje original n++; if(n==CBITS) { n=0; i++; } } else if(i>=12){ n=0; i=0; } } void ME_Polaridad(){ switch(ME_Polaridad_estado){ case Positivo: var_pol = 1; ME_Polaridad_estado=Negativo; case Negativo: var_pol = 0; ME_Polaridad_estado=Positivo; } } void Dato(){ switch(ME_Dato_estado){ case UnoPositivo: if(var_aux==0){ ME_Dato_estado=Cero; OUT=0.5;} if(var_aux==1 && var_pol == 0){ ME_Dato_estado=UnoNegativo; OUT=0;} case UnoNegativo: if(var_aux==0){ ME_Dato_estado=Cero; OUT=0.5;} if(var_aux==1 && var_pol == 1){ ME_Dato_estado=UnoPositivo; OUT=1;} case Cero: OUT=0.5; if(var_aux==1 && var_pol == 1){ ME_Dato_estado=UnoPositivo; OUT=1;} if(var_aux==1 && var_pol == 0){ ME_Dato_estado=UnoNegativo; OUT=0;} } }