Juan Agustin Otero
/
CodificacionAMIv2
EJN°2: Codificacion AMI de un mensaje
Revision 0:ef66ab16c9c3, committed 2018-06-05
- Comitter:
- JAgustinOtero
- Date:
- Tue Jun 05 23:28:54 2018 +0000
- Commit message:
- Ejercicio N?2:; Codificacion AMI de un mensaje
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r ef66ab16c9c3 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Jun 05 23:28:54 2018 +0000 @@ -0,0 +1,95 @@ +#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;} + } +}
diff -r 000000000000 -r ef66ab16c9c3 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue Jun 05 23:28:54 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/5aab5a7997ee \ No newline at end of file