Selaa lähdekoodia

main file updated for interrupts

namrota ghosh 7 kuukautta sitten
vanhempi
commit
9170f732b5
2 muutettua tiedostoa jossa 12 lisäystä ja 17 poistoa
  1. 11 16
      main.c
  2. 1 1
      src/config.h

+ 11 - 16
main.c

@@ -33,14 +33,17 @@ void I2C_1_INST_IRQHandler(void)
             while(DL_I2C_isControllerRXFIFOEmpty(I2C_1_INST) != true) {
                 if(rxPacket.rxCount < rxPacket.rxLen){
                      //Get byte from the I2C RX FIFO of the target
-                    rxPacket.rxBuffer[rxPacket.rxCount]= DL_I2C_receiveControllerData(I2C_1_INST);
-                    rxPacket.rxCount++;
+                    rxPacket.rxBuffer[rxPacket.rxCount++]= DL_I2C_receiveControllerData(I2C_1_INST);
+                    //rxPacket.rxCount++;
                 }else{
                     DL_I2C_receiveControllerData(I2C_1_INST);
+
                 }
             }
            
             if(rxPacket.rxCount >= rxPacket.rxLen){
+                //rxPacket.rxComplete= true;
+                DL_I2C_enableInterrupt(I2C_1_INST, DL_I2C_INTERRUPT_CONTROLLER_STOP);
                 rxPacket.rxComplete= true;
             }
             break;
@@ -48,29 +51,21 @@ void I2C_1_INST_IRQHandler(void)
         case DL_I2C_IIDX_CONTROLLER_TXFIFO_TRIGGER:
             /* Fill TX FIFO with bytes to send */
             mcuSendCommand = true;
-            txPacket.txBuffer[0] = (0<<4) | (CMD_GET_MEASUREMENT & 0x0F);
-            DL_I2C_fillControllerTXFIFO(I2C_1_INST, (uint8_t *)&txPacket.txBuffer[0], 1); 
-            /*if(!txCommandSent){
-                txPacket.txBuffer[0]= (0<<4) | (CMD_GET_MEASUREMENT & 0x0F);
-                DL_I2C_fillControllerTXFIFO(I2C_1_INST, (uint8_t *)&txPacket.txBuffer[0], 1); 
-                txPacket.txComplete= true;
-                mcuSendCommand = true;
-                txCommandSent= true;
-            }*/
-            /*else{
-                while (DL_I2C_getControllerStatus(I2C_1_INST) & DL_I2C_CONTROLLER_STATUS_BUSY);
-                DL_I2C_startControllerTransfer(I2C_1_INST, 0x49, DL_I2C_CONTROLLER_DIRECTION_RX, 8);
-                txCommandSent= false;
-            } */          
+            txPacket.txBuffer[0] = (0<<4) | (CMD_GET_MEASUREMENT & 0x0F);  
+            DL_I2C_fillControllerTXFIFO(I2C_1_INST, (uint8_t *)&txPacket.txBuffer[0], 1);      
+            txPacket.txComplete= true;   
             break;
 
         case DL_I2C_IIDX_CONTROLLER_STOP:
             mcuSendCommand = true;
             rxPacket.rxComplete= true;
             txPacket.txComplete= true;
+            DL_I2C_flushControllerRXFIFO(I2C_INST);
+            DL_I2C_flushControllerTXFIFO(I2C_INST);
             break;
 
         case DL_I2C_IIDX_CONTROLLER_ARBITRATION_LOST:
+            break;
         case DL_I2C_IIDX_CONTROLLER_NACK:
             break; 
         default:

+ 1 - 1
src/config.h

@@ -3,7 +3,7 @@
 #ifndef CONFIG_H_
 #define CONFIG_H_
 #define I2C_TX_MAX_PACKET_SIZE  (8)
-#define I2C_RX_MAX_PACKET_SIZE  (12)
+#define I2C_RX_MAX_PACKET_SIZE  (8)
 #define BATTERY_THRESHOLD (50)
 #define TEMPERATURE_MAX_C (60)
 #define MAX_CYCLES (2)