EJN°2: Codificacion AMI de un mensaje

Dependencies:   mbed

Files at this revision

API Documentation at this revision

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