diff options
| author | Avi Levkovich <avi@twine-s.com> | 2020-01-14 14:55:18 +0200 |
|---|---|---|
| committer | Avi Levkovich <avi@twine-s.com> | 2020-01-14 14:55:18 +0200 |
| commit | 2f253ebabf81ed0ac62e8d12d91bf626e0995f80 (patch) | |
| tree | 78fe6d1cfca7bda26187f44d8d5b1f063b893bb9 /Software/Embedded_SW/Embedded | |
| parent | b8f7eaccfcd714a99dd71446150887691d066a2a (diff) | |
| download | Tango-2f253ebabf81ed0ac62e8d12d91bf626e0995f80.tar.gz Tango-2f253ebabf81ed0ac62e8d12d91bf626e0995f80.zip | |
Add function to read the Head Type from the head card EEPROM
Diffstat (limited to 'Software/Embedded_SW/Embedded')
4 files changed, 55 insertions, 0 deletions
diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h index 179a8677c..bea8547c7 100644 --- a/Software/Embedded_SW/Embedded/DataDef.h +++ b/Software/Embedded_SW/Embedded/DataDef.h @@ -365,6 +365,14 @@ typedef union //#define INVERSION_POLARITY_LIMIT 1 // Limit Switch //#define INVERSION_POLARITY_NO_LIMIT 0 +//Dyeing head types +typedef enum +{ + HEAD_TYPE_UNKNOWN, + HEAD_TYPE_SYLKO_WITHOUT_CARD, + HEAD_TYPE_SYLKO, + HEAD_TYPE_STAPLE_SPUN, +}HEAD_TYPE; typedef enum { diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.c index aaa299c54..8664d9911 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.c @@ -8,6 +8,9 @@ #include "Head_EEPROM.h" #include <Drivers/I2C_Communication/I2C.h> #include "../I2C_Head_Mux.h" +#include "driverlib/i2c.h" + +uint8_t Head_Type = HEAD_TYPE_UNKNOWN; //EEPROM M24M01-DFMN6TP uint32_t I2C_HEAD_EEPROM_SLAVE_ADD = 0xA0; @@ -96,3 +99,42 @@ uint32_t Test_Head_EEPROM() return status; } + +uint32_t Check_Head_Type_Via_EEPROM() +{ + uint32_t status = OK; + + uint8_t Read_Buf[2] = {0,0}; + uint8_t Write_Buf[2] = {0,0}; + + status |= Select_Main_Head_Mux_Channel(); + status |= I2C_Write(I2C_ID_HEAD_CARD, I2C_HEAD_EEPROM_SLAVE_ADD, Write_Buf, 2); + + delayUs(10);//TODO - check the delay + + status |= I2C_Read(I2C_ID_HEAD_CARD, I2C_HEAD_EEPROM_SLAVE_ADD + 1, Read_Buf, 2); + + if(I2CMasterErr(I2C_ID_HEAD_CARD) == I2C_MASTER_ERR_NONE) + { + + Head_struct.Read_Head_EEPROM.bytes.SN = Read_Buf[0]; + Head_struct.Read_Head_EEPROM.bytes.HeadType = Read_Buf[1]; //HEAD_TYPE_SYLKO / HEAD_TYPE_STAPLE_SPUN + + Head_Type = Head_struct.Read_Head_EEPROM.bytes.HeadType; + } + else + { + Head_Type = HEAD_TYPE_SYLKO_WITHOUT_CARD; + } + + //temporary + #ifdef Use_Head_Card + Head_Type = HEAD_TYPE_SYLKO; + #else + Head_Type = HEAD_TYPE_SYLKO_WITHOUT_CARD; + #endif + + //TODO to test and replace #ifdef Use_Head_Card with if(Head_Type != HEAD_TYPE_SYLKO_WITHOUT_CARD) + + return status; +} diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.h index e6295d3d5..2de443094 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.h @@ -8,10 +8,12 @@ #ifndef DRIVERS_I2C_COMMUNICATION_HEAD_CARD_EEPROM_HEAD_EEPROM_H_ #define DRIVERS_I2C_COMMUNICATION_HEAD_CARD_EEPROM_HEAD_EEPROM_H_ +extern uint8_t Head_Type; typedef struct { uint32_t SN; + uint8_t HeadType; uint32_t Uint32_Spare[5]; double Double_Spare[5]; }HEAD_EEPROM_BYTES; @@ -36,5 +38,6 @@ uint32_t Head_I2C_EEprom_Write_Ch(); uint32_t Head_I2C_EEprom_Set_for_Read_Ch(); uint32_t Head_I2C_EEprom_Read_Ch(); uint32_t Test_Head_EEPROM(); +uint32_t Check_Head_Type_Via_EEPROM(); #endif /* DRIVERS_I2C_COMMUNICATION_HEAD_CARD_EEPROM_HEAD_EEPROM_H_ */ diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index ea588fe2a..fc1f1452d 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -79,6 +79,7 @@ #include "Drivers/I2C_Communication/Main_Board_EEPROM/Main_EEPROM.h" #include "delay.h" #include "Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h" +#include "Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.h" //***************************************************************************** @@ -239,6 +240,7 @@ int main(void) Init_All_I2C(); Block_Main_MUX_TCA9548A_0xE4();//unused, same i2c as head and whs cards + Check_Head_Type_Via_EEPROM(); #ifndef EVALUATION_BOARD STATUS_RED_LED_ON; |
