I2C BAE standalone hardware testing

Dependencies:   FreescaleIAP mbed-rtos mbed

Fork of ACS_Flowchart_BAE_1 by Team Fox

Files at this revision

API Documentation at this revision

Comitter:
Bragadeesh153
Date:
Wed Apr 13 18:34:28 2016 +0000
Parent:
11:1fdb94ae6563
Child:
13:fb7facaf308b
Commit message:
Working

Changed in this revision

BCN.cpp Show annotated file Show diff for this revision Revisions of this file
BCN.h Show annotated file Show diff for this revision Revisions of this file
TCTM.cpp Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/BCN.cpp	Wed Apr 13 17:00:25 2016 +0000
+++ b/BCN.cpp	Wed Apr 13 18:34:28 2016 +0000
@@ -1,43 +1,47 @@
+
 #include "BCN.h"
 #include <stdio.h>
 #include "pin_config.h"
+//Check the pin names
+//Takes max 4.3 sec in void FCTN_BCN_TX_MAIN() (temp.calc. + long_beacon + short_beacon) 
 
 Serial pc_bcn(USBTX, USBRX);        //tx,rx
-SPI spi(PIN16, PIN17, PIN15);              // mosi, miso, sclk
-DigitalOut cs(PIN6);                //slave select or chip select
-Timer t;
+SPI spi(PIN16, PIN17, PIN15);              // mosi, miso, sclk 
+DigitalOut cs(PIN87);                //slave select or chip select
 Timer t_i;
+Timeout rf_sl_timeout;
 Ticker loop;
 
 
 //GLOBAL VARIABLES
-uint8_t BCN_INIT_STATUS;
-uint8_t BCN_TX_MAIN_STATUS;
-uint8_t BCN_TX_STATUS;
+uint8_t BCN_INIT_STATUS = 0;
+uint8_t BCN_TX_MAIN_STATUS = 0;
+uint8_t BCN_TX_STATUS = 0;
 uint8_t BCN_TX_EN = 1;              //hardcoding for now    //check where is this variable toggled??
-uint8_t BCN_FEN = 1;                //write this to non-erasable memory.
+uint8_t BCN_FEN = 0;                //hardcoding for now    //write this value to flash
 uint8_t BCN_STANDBY = 0;            //hardcoding for now    //check where is this variable toggled??
-uint8_t BCN_TS_BUFFER;              // For Temperature 
+uint8_t BCN_TS_BUFFER = 0;              // For Temperature 
+uint8_t BCN_FAIL_COUNT=0;
 
-uint8_t BCN_FAIL_COUNT=0;           //bcn fail count added
-
-void P_BCN_INIT()
+void FCTN_BCN_INIT()
 {
-    pc_bcn.printf("P_BCN_INIT\n");
+    pc_bcn.printf("FCTN_BCN_INIT\n");
     BCN_INIT_STATUS = 1;
+    if(BCN_FEN == 0)
+        rf_sl_timeout.attach(&FCTN_BCN_FEN, 30);
     Init_BEACON_HW();
-    if (BCN_FEN == 0)
-        t.start();//Start the timer for RF_Silence
     BCN_INIT_STATUS = 0;
 }
-void P_BCN_FEN()
+void FCTN_BCN_FEN()
 {
-    pc_bcn.printf("P_FEN\n");
+    pc_bcn.printf("FCTN_FEN\n");
     BCN_FEN = 1;//write this value to flash
 }
-void P_BCN_TX_MAIN()
+void FCTN_BCN_TX_MAIN()
 {
-    pc_bcn.printf("P_BCN_TX_MAIN\n");
+    pc_bcn.printf("FCTN_BCN_TX_MAIN\n");
+    t_i.start();
+    int begin = t_i.read_us();
     BCN_TX_MAIN_STATUS = 1;
     
     if(BCN_FEN == 1)
@@ -58,13 +62,8 @@
             else
             {       
                     //transmit short beacon and long beacon
-                    t_i.start();
-                    int begin = t_i.read_us();
-                    SHORT_BCN_TX();
+                    //SHORT_BCN_TX();
                     LONG_BCN_TX();
-                    t_i.stop();
-                    int end = t_i.read_us();
-                    pc_bcn.printf("The time required for short and long is %d seconds\r\n", end-begin);
                     
                     if(Check_ACK_RECEIVED() == 1)
                     {
@@ -91,6 +90,10 @@
         Set_BCN_TX_STATUS(BCN_RF_SILENCE);  //Window of RF Silence: None of the Txs should be on.
         BCN_TX_MAIN_STATUS = 0;
     }
+    t_i.stop();
+    int end = t_i.read_us();
+    pc_bcn.printf("The time required for FCTN_BCN_TX_MAIN is %d useconds\r\n", end-begin);
+    
 }
 
 void Set_BCN_TX_STATUS(uint8_t STATUS)
@@ -101,9 +104,10 @@
 uint8_t check_Temperature()
 {   
     uint8_t temperature;
-    writereg(RF22_REG_0F_ADC_CONFIGURATION,0x80);            
+    writereg(RF22_REG_0F_ADC_CONFIGURATION,0x00);            
     writereg(RF22_REG_12_Temperature_Sensor_Calibration,0x20);
-    wait(1);
+    writereg(RF22_REG_0F_ADC_CONFIGURATION,0x80);
+    wait(0.1);
     temperature = readreg(RF22_REG_11_ADC_Value);
     temperature = (float)temperature*0.5 - 64;
     return temperature;
@@ -112,18 +116,13 @@
 void SHORT_BCN_TX()
 {
     writereg(RF22_REG_6E_TX_DATA_RATE,0x01);
-    writereg(RF22_REG_6F_TX_DATA_RATE,0x4F);//160bps
-    writereg(RF22_REG_3E_PACKET_LENGTH,SHORT_TX_DATA); //short packet length
-    /*
-    init();
-    //init complete
-    pc_bcn.printf("init complete.....press t to send\n");
-    while(pc_bcn.getc()=='t')
-    {   */
-    //button.rise(&interrupt_func);         //interrupt enabled ( rising edge of pin 9)
-    wait(0.02);                                                           // pl. update this value  or even avoid it!!!                  
-    int i=0;
+    writereg(RF22_REG_6F_TX_DATA_RATE,0x50);//160bps
+    writereg(RF22_REG_3E_PACKET_LENGTH,SHORT_TX_DATA); //short packet length 
+    wait(0.02);      
+                                                                           
+    uint32_t timeout_count = 10e5;
     //extract values from short_beacon[]
+    
     struct Short_beacon
     {
         uint8_t Voltage[1];
@@ -136,20 +135,13 @@
     //filling hk data
     //uint8_t short_beacon[] = { 0xAB, 0x8A, 0xE2, 0xBB, 0xB8, 0xA2, 0x8E,Shortbeacon.Voltage[0],Shortbeacon.AngularSpeed[0], Shortbeacon.AngularSpeed[1],Shortbeacon.SubsystemStatus[0],Shortbeacon.Temp[0],Shortbeacon.Temp[1],Shortbeacon.Temp[2],Shortbeacon.ErrorFlag[0]};
     uint8_t short_beacon[] = { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,Shortbeacon.Voltage[0],Shortbeacon.AngularSpeed[0], Shortbeacon.AngularSpeed[1],Shortbeacon.SubsystemStatus[0],Shortbeacon.Temp[0],Shortbeacon.Temp[1],Shortbeacon.Temp[2],Shortbeacon.ErrorFlag[0]};
-    
-    //uint8_t short_beacon[15];
-//    for(int i = 0;i<15;i++)
-//    {
-//        short_beacon[i] = 0xAA;
-//    }
-    
-    //writereg(RF22_REG_07_OPERATING_MODE1,0x01);        //ready mode       ??    
+           
     clearTxBuf();     
     //writing data first time
     int byte = 0;
     cs = 0;
     spi.write(0xFF);   
-    pc_bcn.printf("line 151");
+
     for (int byte_counter = 0; byte_counter <15 ; byte_counter++)
     {
         for(int j = 3; j >= 0 ; j--)
@@ -175,43 +167,42 @@
     }   
     
     cs = 1;
-    pc_bcn.printf("line 177\n");
+    
     //Set to Tx mode
-    writereg(RF22_REG_07_OPERATING_MODE1,0x09);
-      
+    writereg(RF22_REG_07_OPERATING_MODE1,0x08);//*
+    wait(0.1);  
     //Check for fifoThresh
-    while((readreg(RF22_REG_03_INTERRUPT_STATUS1) & 0x20) != 0x20);
-    //pc_bcn.printf("fifothresh1?\n");
-    pc_bcn.printf("line 184\n");
-    //rf22.waitPacketSent();
-    while((readreg(RF22_REG_03_INTERRUPT_STATUS1) & 0x04) != 0x04);
-        //pc_bcn.printf(" chk pkt sent!\r\n");     
-    pc_bcn.printf("Short packet sent\r\n");
+    while(timeout_count--)if((readreg(RF22_REG_03_INTERRUPT_STATUS1) & 0x20) == 0x20)break;
+    timeout_count=10e5;
+    
+    //Check for packet_sent
+    while(timeout_count--)if((readreg(RF22_REG_03_INTERRUPT_STATUS1) & 0x04) == 0x04)break;
+    
+    //pc_bcn.printf("Short packet sent\r\n");
     
     writereg(RF22_REG_07_OPERATING_MODE1,0x00);        //standby mode
     
 }
 void LONG_BCN_TX()
 {
-    writereg(RF22_REG_6E_TX_DATA_RATE,0x04);
-    writereg(RF22_REG_6F_TX_DATA_RATE,0xEA);//600 bps
+    writereg(RF22_REG_6E_TX_DATA_RATE,0x08);
+    writereg(RF22_REG_6F_TX_DATA_RATE,0x31);//1000 bps
     writereg(RF22_REG_3E_PACKET_LENGTH,LONG_TX_DATA); //long packet length
     wait(0.02);                                                           
-   
+    uint32_t timeout_count=10e5;
    
     //get long_beacon array
     
-    uint8_t Long_beacon[75];
-    for(int i = 0;i<75;i++)
+    uint8_t Long_beacon[125];
+    for(int i = 0;i<125;)
     {
-        Long_beacon[i] = 0xA0;
+        Long_beacon[i++] = 0xAA;
     }
    
    
    
     
     //setModeIdle();
-    writereg(RF22_REG_07_OPERATING_MODE1,0x01);        //ready mode    
     clearTxBuf();     
     //writing data first time
     cs = 0;
@@ -223,32 +214,35 @@
     cs = 1;
     
     //Set to Tx mode
-    writereg(RF22_REG_07_OPERATING_MODE1,0x09);
-
+    writereg(RF22_REG_07_OPERATING_MODE1,0x08);//*
+    wait(0.1);
+    
     //Check for fifoThresh
-    while((readreg(RF22_REG_03_INTERRUPT_STATUS1) & 0x20) != 0x20);
+    while(timeout_count--)if((readreg(RF22_REG_03_INTERRUPT_STATUS1) & 0x20) == 0x20)break;
+    timeout_count=10e5;
     
     cs = 0;
     spi.write(0xFF);   
-    for(int i=60; i<75;i++)
+    for(int i=60; i<125;i++)
     {
         spi.write(Long_beacon[i]);
     }
     cs = 1;
-    wait(0.01);
+    wait(0.1);
     //Check for fifoThresh
-    while((readreg(RF22_REG_03_INTERRUPT_STATUS1) & 0x20) != 0x20);
+    while(timeout_count--)if((readreg(RF22_REG_03_INTERRUPT_STATUS1) & 0x20) == 0x20)break;
+    timeout_count=10e5;
     
     //Check for packetsent interrupt
-    while((readreg(RF22_REG_03_INTERRUPT_STATUS1) & 0x04) != 0x04);
+    while(timeout_count--)if((readreg(RF22_REG_03_INTERRUPT_STATUS1) & 0x04) == 0x04)break;
          
-    pc_bcn.printf("Long packet sent\r\n");
+    //pc_bcn.printf("Long packet sent\r\n");
     
     writereg(RF22_REG_07_OPERATING_MODE1,0x00);        //standby mode
 }
-void reset_uC()
+void reset_rfm()
 {
-    P_BCN_INIT();
+    FCTN_BCN_INIT();
 }
 void writereg(uint8_t reg,uint8_t val)
 {
@@ -265,7 +259,7 @@
             }
             else if(count == 5)
             {
-                reset_uC(), printf("reg = 0x%X\n",reg);break;
+                reset_rfm(), printf("reg = 0x%X\n",reg);break;
             }
         }
         else
@@ -281,19 +275,13 @@
     writereg(RF22_REG_08_OPERATING_MODE2,0x01);
     writereg(RF22_REG_08_OPERATING_MODE2,0x00);
 }
-uint8_t setFrequency(double centre,float afcPullInRange)
+uint8_t setFrequency(double centre)
 {
     uint8_t fbsel = 0x40;
-    uint8_t afclimiter;
     if (centre >= 480.0) {
         centre /= 2;
         fbsel |= 0x20;
-        afclimiter = afcPullInRange * 1000000.0 / 1250.0;
-    } else {
-        if (afcPullInRange < 0.0 || afcPullInRange > 0.159375)
-            return false;
-        afclimiter = afcPullInRange * 1000000.0 / 625.0;
-    }
+    } 
     centre /= 10.0;
     double integerPart = floor(centre);
     double fractionalPart = centre - integerPart;
@@ -306,14 +294,15 @@
     writereg(RF22_REG_75_FREQUENCY_BAND_SELECT, fbsel);
     writereg(RF22_REG_76_NOMINAL_CARRIER_FREQUENCY1, fc >> 8);
     writereg(RF22_REG_77_NOMINAL_CARRIER_FREQUENCY0, fc & 0xff);
-    writereg(RF22_REG_2A_AFC_LIMITER, afclimiter);
     return 0;
 }
 
 
 void Init_BEACON_HW()
 {
+    wait(0.1);
     cs=1;                          // chip must be deselected
+    wait(0.1);
     spi.format(8,0);
     spi.frequency(10000000);       //10MHz SCLK
     
@@ -322,11 +311,11 @@
         pc_bcn.printf("spi connection valid\r\n");
     else
         {pc_bcn.printf("error in spi connection\r\n");
-        reset_uC();
+        reset_rfm();
         }
     
     writereg(RF22_REG_07_OPERATING_MODE1,0x80);        //sw_reset
-    wait(1);                    //takes time to reset                                  
+    wait(0.1);                    //takes time to reset                                  
 
     clearTxBuf();                                                                                                                        
     
@@ -344,28 +333,28 @@
     writereg(RF22_REG_0B_GPIO_CONFIGURATION0,0x15); // TX state                        
     writereg(RF22_REG_0C_GPIO_CONFIGURATION1,0x12); // RX state                        
 
-    setFrequency(435.0,05);
+    setFrequency(435.0);
 
     if((readreg(RF22_REG_02_DEVICE_STATUS)& 0x08)!= 0x00)
         {
-            //pc_bcn.printf("frequency not set properly\r\n");
-            reset_uC();
+            pc_bcn.printf("frequency not set properly\r\n");
+            reset_rfm();
         }
 
     //set Modem Configuration
-    writereg(RF22_REG_1C_IF_FILTER_BANDWIDTH,0xdf);
-    writereg(RF22_REG_1F_CLOCK_RECOVERY_GEARSHIFT_OVERRIDE,0x03);
-    writereg(RF22_REG_20_CLOCK_RECOVERY_OVERSAMPLING_RATE,0x39);
-    writereg(RF22_REG_21_CLOCK_RECOVERY_OFFSET2,0x20);                     
-    writereg(RF22_REG_22_CLOCK_RECOVERY_OFFSET1,0x68);           //updated 20 to 25 reg values from excel sheet for 1.2 Khz freq. deviation,fsk
-    writereg(RF22_REG_23_CLOCK_RECOVERY_OFFSET0,0xdc);
-    writereg(RF22_REG_24_CLOCK_RECOVERY_TIMING_LOOP_GAIN1,0x00);
-    writereg(RF22_REG_25_CLOCK_RECOVERY_TIMING_LOOP_GAIN0,0x6B);
-    writereg(RF22_REG_2C_OOK_COUNTER_VALUE_1,0x2C);
-    writereg(RF22_REG_2D_OOK_COUNTER_VALUE_2,0x11);    //not required for fsk (OOK counter value)
-    writereg(RF22_REG_2E_SLICER_PEAK_HOLD,0x2A);         //??
+    //writereg(RF22_REG_1C_IF_FILTER_BANDWIDTH,0xdf);
+    //writereg(RF22_REG_1F_CLOCK_RECOVERY_GEARSHIFT_OVERRIDE,0x03);
+    //writereg(RF22_REG_20_CLOCK_RECOVERY_OVERSAMPLING_RATE,0x39);
+    //writereg(RF22_REG_21_CLOCK_RECOVERY_OFFSET2,0x20);                     
+    //writereg(RF22_REG_22_CLOCK_RECOVERY_OFFSET1,0x68);           //updated 20 to 25 reg values from excel sheet for 1.2 Khz freq. deviation,fsk
+    //writereg(RF22_REG_23_CLOCK_RECOVERY_OFFSET0,0xdc);
+    //writereg(RF22_REG_24_CLOCK_RECOVERY_TIMING_LOOP_GAIN1,0x00);
+    //writereg(RF22_REG_25_CLOCK_RECOVERY_TIMING_LOOP_GAIN0,0x6B);
+    //writereg(RF22_REG_2C_OOK_COUNTER_VALUE_1,0x2C);
+    //writereg(RF22_REG_2D_OOK_COUNTER_VALUE_2,0x11);    //not required for fsk (OOK counter value)
+    //writereg(RF22_REG_2E_SLICER_PEAK_HOLD,0x2A);         //??
     writereg(RF22_REG_58,0x80);
-    writereg(RF22_REG_69_AGC_OVERRIDE1,0x60);
+    //writereg(RF22_REG_69_AGC_OVERRIDE1,0x60);
     
     //Data rate set later
       
@@ -390,16 +379,3 @@
         return 0;
     }
 }
-/*int main()
-{
-    P_BCN_INIT(); 
-    
-    loop.attach(&P_BCN_TX_MAIN, 10.0);
-    
-    while(t.read() < RF_SILENCE_TIME);
-        
-    P_BCN_FEN();
-    
-    while(1);
-    
-}*/
\ No newline at end of file
--- a/BCN.h	Wed Apr 13 17:00:25 2016 +0000
+++ b/BCN.h	Wed Apr 13 18:34:28 2016 +0000
@@ -9,15 +9,15 @@
 
 //Size of tx data
 #define SHORT_TX_DATA 60    //in bytes
-#define LONG_TX_DATA 75    //in bytes      
+#define LONG_TX_DATA 125    //in bytes      
 
-//#define RF_SILENCE_TIME 5   //in seconds
-#define RF_SILENCE_TIME 10
+//#define RF_SILENCE_TIME 35*60
+#define RF_SILENCE_TIME 5 //changed for testing
 
 //FUNCTION PROTOTYPING
-void P_BCN_INIT();
-void P_BCN_FEN();
-void P_BCN_TX_MAIN();
+void FCTN_BCN_INIT();
+void FCTN_BCN_FEN();
+void FCTN_BCN_TX_MAIN();
 void Set_BCN_TX_STATUS(uint8_t);
 uint8_t check_Temperature();
 void SHORT_BCN_TX();
@@ -26,9 +26,9 @@
 void writereg(uint8_t,uint8_t);
 uint8_t readreg(uint8_t);
 void clearTxBuf();
-uint8_t setFrequency(double,float);
+uint8_t setFrequency(double);
 bool Check_ACK_RECEIVED();
-void reset_uC();
+void reset_rfm();
 
 #define RF22_MAX_MESSAGE_LEN 255
 
--- a/TCTM.cpp	Wed Apr 13 17:00:25 2016 +0000
+++ b/TCTM.cpp	Wed Apr 13 18:34:28 2016 +0000
@@ -166,15 +166,15 @@
                            /*to be fixed*/
                            uint16_t P_BAE_I2CRX_COUNTER=0;
                            uint16_t P_ACS_MAIN_COUNTER=0;
-                           uint16_t P_BCN_TX_MAIN_COUNTER=0;
+                           uint16_t FCTN_BCN_TX_MAIN_COUNTER=0;
                            uint16_t P_EPS_MAIN_COUNTER=0;
                            
                            tm[18] = P_BAE_I2CRX_COUNTER>>8;
                            tm[19] = P_BAE_I2CRX_COUNTER;
                            tm[20] = P_ACS_MAIN_COUNTER>>8;
                            tm[21] = P_ACS_MAIN_COUNTER;
-                           tm[22] = P_BCN_TX_MAIN_COUNTER>>8;
-                           tm[23] = P_BCN_TX_MAIN_COUNTER;
+                           tm[22] = FCTN_BCN_TX_MAIN_COUNTER>>8;
+                           tm[23] = FCTN_BCN_TX_MAIN_COUNTER;
                            tm[24] = P_EPS_MAIN_COUNTER>>8;
                            tm[25] = P_EPS_MAIN_COUNTER;
                            
@@ -752,7 +752,7 @@
                         case 0x06:
                         {
                             F_BCN();
-                          /*  printf("Run P_BCN_INIT\r\n");
+                          /*  printf("Run FCTN_BCN_INIT\r\n");
                             //ACK_L234_TM
                             tm[0]=0xB0;
                             tm[1]=tc[0];
@@ -774,7 +774,7 @@
                         /*
                         case 0x07:
                         {
-                            printf("Run P_BCN_TX_MAIN\r\n");
+                            printf("Run FCTN_BCN_TX_MAIN\r\n");
                             //ACK_L234_TM
                             tm[0]=0xB0;
                             tm[1]=tc[0];
--- a/main.cpp	Wed Apr 13 17:00:25 2016 +0000
+++ b/main.cpp	Wed Apr 13 18:34:28 2016 +0000
@@ -412,7 +412,7 @@
   
           pc.printf("\n\rEntered BCN   %f\n",t_start.read());
           
-          P_BCN_TX_MAIN();
+          FCTN_BCN_TX_MAIN();
     
 }
 
@@ -623,7 +623,7 @@
     }
     if(schedcount%3==0)
     { 
-       // F_BCN();
+       F_BCN();
     }
     schedcount++;
     printf("\n\r exited scheduler");
@@ -752,7 +752,7 @@
     //............................//
     FCTN_ACS_INIT();
     FCTN_EPS_INIT();
-    //P_BCN_INIT();
+    FCTN_BCN_INIT();
 
     
     FLAG();
@@ -765,7 +765,7 @@
    /* if (BCN_FEN == 0)                       //dummy implementation
     {
         pc.printf("\n\r RF silence ");
-        P_BCN_FEN();
+        FCTN_BCN_FEN();
         t_rfsilence.start();//Start the timer for RF_Silence
         while(t_rfsilence.read() < RF_SILENCE_TIME); 
     }