aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-07-25 14:21:17 +0300
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-07-25 14:21:17 +0300
commitd5a855a3980a835460befab0acc36caa7f0230b7 (patch)
treed6f8219bc0fd0e9177ab72b09a7afc2e05e8a019 /Software/Embedded_SW/Embedded/Modules
parentf98fc42ef7f1fc1d5570ebfed71d65894fafe1d5 (diff)
parent9a26f7781835548d70657f6904c5e0fb6d5fcd2b (diff)
downloadTango-d5a855a3980a835460befab0acc36caa7f0230b7.tar.gz
Tango-d5a855a3980a835460befab0acc36caa7f0230b7.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c13
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/control.c10
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c11
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c170
4 files changed, 135 insertions, 69 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
index 754c4c197..2a23dd87c 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
+++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
@@ -86,8 +86,8 @@ uint32_t Control_Delta_Position_Pass(uint32_t Current_Read,uint32_t Previous_Rea
//**********************************************************************
/******************** CODE ********************************************/
//**********************************************************************
-uint32_t MSBacklog[1000]={0};
-uint8_t Motor_Id[1000]={0};
+uint32_t MSBacklog[200]={0};
+uint8_t Motor_Id[200]={0};
uint16_t MsecLogindex = 0;
void MillisecInit(void)
@@ -144,13 +144,17 @@ void OneMilliSecondMillisecInterrupt(UArg arg0)
{
MillisecMessageStruc Message;
ROM_IntMasterDisable();
+ ROM_TimerIntClear(Millisec_timerBase, TIMER_TIMA_TIMEOUT); // Clear the timer interrupt
if (MillisecRestart == true)
{
ROM_TimerLoadSet(Millisec_timerBase, TIMER_A,120000/*one millisecond*/);
}
else
+ {
ROM_TimerDisable(Millisec_timerBase,TIMER_A);
-
+ ROM_IntMasterEnable();
+ return;
+ }
//send message to the Millisec task
Message.messageId = OneMillisec;
Message.tick = msec_millisecondCounter++;;
@@ -158,7 +162,6 @@ void OneMilliSecondMillisecInterrupt(UArg arg0)
if (MillisecMsgQ != NULL)
Mailbox_post(MillisecMsgQ , &Message, BIOS_NO_WAIT);
- ROM_TimerIntClear(Millisec_timerBase, TIMER_TIMA_TIMEOUT); // Clear the timer interrupt
//
// Enable all interrupts.
//
@@ -187,7 +190,7 @@ int32_t MillisecSetMotorSpeed(TimerMotors_t MotorId, unsigned long Data, int Len
MSBacklog[MsecLogindex]=Data;
Motor_Id[MsecLogindex]=MotorId;
MsecLogindex++;
- if (MsecLogindex>=999)
+ if (MsecLogindex>=199)
MsecLogindex = 0;
//==========================
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/control.c b/Software/Embedded_SW/Embedded/Modules/Control/control.c
index b7e063a87..60322b4d7 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/control.c
+++ b/Software/Embedded_SW/Embedded/Modules/Control/control.c
@@ -255,12 +255,19 @@ void OneMilliSecondControlInterrupt(UArg arg0)
{
ControlMessageStruc Message;
ROM_IntMasterDisable();
+ ROM_TimerIntClear(Control_timerBase, TIMER_TIMA_TIMEOUT); // Clear the timer interrupt
+
if (ControlRestart == true)
{
ROM_TimerLoadSet(Control_timerBase, TIMER_A,120000/*one millisecond*/);
}
else
- ROM_TimerDisable(Control_timerBase, TIMER_A);
+ {
+ ROM_IntDisable(INT_TIMER0A);
+ ROM_IntMasterEnable();
+ //ROM_TimerDisable(Control_timerBase, TIMER_A);
+ return;
+ }
//send message to the control task
Message.messageId = OneMillisec;
@@ -270,7 +277,6 @@ void OneMilliSecondControlInterrupt(UArg arg0)
Mailbox_post(ControlMsgQ , &Message, BIOS_NO_WAIT);
if (millisecondCounter == 1000000000)
millisecondCounter = 0;
- ROM_TimerIntClear(Control_timerBase, TIMER_TIMA_TIMEOUT); // Clear the timer interrupt
//
// Enable all interrupts.
//
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
index c12066eee..7cd70067d 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
@@ -47,8 +47,8 @@ uint32_t ControlIdtoHeaterId [MAX_HEATERS_NUM] = {0xFF,0xFF,0xFF,0xFF,0xFF,0x
uint32_t DryerHeaterMaxTempControl = 0xFF;
#warning the PT100 id for the dryer control is number2 - dryer internal ambient sensor.
-uint32_t HeaterId2PT100Id[MAX_HEATERS_NUM] = {TEMP_SENSE_ANALOG_DRYER_TEMP2,TEMP_SENSE_ANALOG_DRYER_TEMP1,TEMP_SENSE_ANALOG_DRYER_TEMP3,TEMP_SENSE_ANALOG_DYEINGH_TEMP1,TEMP_SENSE_ANALOG_DYEINGH_TEMP2,TEMP_SENSE_ANALOG_DYEINGH_TEMP3,TEMP_SENSE_ANALOG_DYEINGH_TEMP4,TEMP_SENSE_ANALOG_DYEINGH_TEMP5,TEMP_SENSE_ANALOG_MIXCHIP_TEMP,TEMP_SENSE_ANALOG_MIXCHIP_TEMP};
-uint32_t DryerInternalPT100Id = TEMP_SENSE_ANALOG_DRYER_TEMP1;
+uint32_t HeaterId2PT100Id[MAX_HEATERS_NUM] = {TEMP_SENSE_ANALOG_DRYER_TEMP1,TEMP_SENSE_ANALOG_DRYER_TEMP1,TEMP_SENSE_ANALOG_DRYER_TEMP3,TEMP_SENSE_ANALOG_DYEINGH_TEMP1,TEMP_SENSE_ANALOG_DYEINGH_TEMP2,TEMP_SENSE_ANALOG_DYEINGH_TEMP3,TEMP_SENSE_ANALOG_DYEINGH_TEMP4,TEMP_SENSE_ANALOG_DYEINGH_TEMP5,TEMP_SENSE_ANALOG_MIXCHIP_TEMP,TEMP_SENSE_ANALOG_MIXCHIP_TEMP};
+uint32_t DryerInternalPT100Id = TEMP_SENSE_ANALOG_DRYER_TEMP2;
bool HeatersRestart = false;
bool HeaterMaxTempFlag[MAX_HEATERS_NUM] = {false,false,false,false,false,false,false,false,false,false};
@@ -523,7 +523,7 @@ void EightMilliSecondHeatersInterrupt(UArg arg0)
ROM_TimerIntClear(Heater_timerBase, TIMER_TIMA_TIMEOUT); // Clear the timer interrupt
- //ROM_IntMasterDisable();
+ ROM_IntMasterDisable();
HeatersControlMessageStruc Message;
//bool retcode = false;
@@ -539,12 +539,13 @@ void EightMilliSecondHeatersInterrupt(UArg arg0)
ROM_TimerLoadSet(Heater_timerBase, TIMER_A,OutputProportionalSingleStep);
}
else
+ {
TimerDisable(Heater_timerBase, TIMER_A);
-
+ }
//
// Enable all interrupts.
//
- //ROM_IntMasterEnable();
+ ROM_IntMasterEnable();
return ;
}
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c
index eb58c48ac..f7152b21b 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c
@@ -41,7 +41,7 @@ void Stub_ExtFlashWriteRequest(MessageContainer* requestContainer)
StubExtFlashWriteRequest* request = stub_ext_flash_write_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
-
+
WriteBuf[0] = request->wordtowrite1;
WriteBuf[1] = request->wordtowrite2;
WriteBuf[2] = request->wordtowrite3;
@@ -54,7 +54,7 @@ void Stub_ExtFlashWriteRequest(MessageContainer* requestContainer)
writeFloat(request->wordtowrite2);
writeString(", ");
writeFloat(request->wordtowrite3);
- writeString(", ");
+ writeString(", ");
writeFloat(request->wordtowrite4);
writeString(", ");
writeFloat(request->wordtowrite5);
@@ -62,7 +62,7 @@ void Stub_ExtFlashWriteRequest(MessageContainer* requestContainer)
Ext_Flash_Operation(0X00,TX, Max_words, WriteBuf, NULL );
StubExtFlashWriteResponse response = STUB_EXT_FLASH_WRITE_RESPONSE__INIT;
-
+
status_response(status,&response.status, &response.statusword ,&response.has_statusword);
responseContainer = createContainer(MESSAGE_TYPE__StubExtFlashWriteResponse, requestContainer->token, true, &response, &stub_ext_flash_write_response__pack, &stub_ext_flash_write_response__get_packed_size);
@@ -110,42 +110,42 @@ void Stub_ExtFlashReadRequest(MessageContainer* requestContainer)
StubExtFlashReadResponse response = STUB_EXT_FLASH_READ_RESPONSE__INIT;
-
+
status_response(status,&response.status, &response.statusword ,&response.has_statusword);
- response.has_readword_5 = false;
- response.has_readword_4 = false;
- response.has_readword_3 = false;
- response.has_readword_2 = false;
- response.has_readword_1 = false;
+ response.has_readword_5 = false;
+ response.has_readword_4 = false;
+ response.has_readword_3 = false;
+ response.has_readword_2 = false;
+ response.has_readword_1 = false;
- switch(No_Words)
- {
- case 5:
- response.readword_5 = ReadBuf[4];
- response.has_readword_5 = true;
- case 4:
- response.readword_4 = ReadBuf[3];
- response.has_readword_4 = true;
- case 3:
- response.readword_3 = ReadBuf[2];
- response.has_readword_3 = true;
- case 2:
- response.readword_2 = ReadBuf[1];
- response.has_readword_2 = true;
- case 1:
- response.readword_1 = ReadBuf[0];
- response.has_readword_1 = true;
- break;
- default:
- break;
- }
+ switch(No_Words)
+ {
+ case 5:
+ response.readword_5 = ReadBuf[4];
+ response.has_readword_5 = true;
+ case 4:
+ response.readword_4 = ReadBuf[3];
+ response.has_readword_4 = true;
+ case 3:
+ response.readword_3 = ReadBuf[2];
+ response.has_readword_3 = true;
+ case 2:
+ response.readword_2 = ReadBuf[1];
+ response.has_readword_2 = true;
+ case 1:
+ response.readword_1 = ReadBuf[0];
+ response.has_readword_1 = true;
+ break;
+ default:
+ break;
+ }
responseContainer = createContainer(MESSAGE_TYPE__StubExtFlashReadResponse, requestContainer->token, true, &response, &stub_ext_flash_read_response__pack, &stub_ext_flash_read_response__get_packed_size);
//clear();
- writeLine("Sending Response: ");
+ writeLine("Sending Response: ");
- Write_status_response(status);
+ Write_status_response(status);
writeString(", ");
writeFloat(response.readword_1);
writeString(", ");
@@ -169,8 +169,9 @@ void Stub_ExtFlashReadRequest(MessageContainer* requestContainer)
}
//-------------------------------------------------------------------------------------
-#define MaxFlashWords 1024
-#define MaxFlashBytes MaxFlashWords*4
+/*
+#define MaxFlashWords 1024 //1K
+#define MaxFlashBytes MaxFlashWords*4 //4K Byte
typedef union
{
@@ -179,23 +180,20 @@ typedef union
}Flash_Union;
Flash_Union Flash_RW;
-//Flash_Union Flash_R;
uint32_t WriteBuf[MaxFlashBytes];
uint32_t ReadBuf[MaxFlashBytes];
-#define MaxBytesForAddress 256;// The addresses to be programmed must not span a 256-byte boundary
+#define MaxBytesForAddress 256 //The addresses to be programmed must not span a 256-byte boundary
+*/
+/*
//---------------------------------------------------------------------------------------------
void Stub_ExtFlashWriteWordsRequest(MessageContainer* requestContainer)
{
-
-
uint32_t status = PASSED;
-
-
uint32_t i;
uint32_t No_Words,No_Bytes;
@@ -218,24 +216,23 @@ void Stub_ExtFlashWriteWordsRequest(MessageContainer* requestContainer)
Flash_RW.DWords[i] = request->wordtwrite[i];
}
-
for(i = 0; i < No_Bytes;i++)
{
WriteBuf[i] = Flash_RW.Bytes[i];
}
- if(No_Bytes >256)
+ if(No_Bytes >MaxBytesForAddress)
{
- uint32_t number = No_Bytes / 256;
- uint32_t Remainder = No_Bytes % 256;
+ uint32_t number = No_Bytes / MaxBytesForAddress;
+ uint32_t Remainder = No_Bytes % MaxBytesForAddress;
for(i=0;i<number;i++)
{
- Ext_Flash_Operation(0X00 + (0X100*i) , TX, 256 , WriteBuf+ (256*i), NULL );
+ Ext_Flash_Operation(0X00 + (0X100*i) , TX, MaxBytesForAddress , WriteBuf+ (MaxBytesForAddress*i), NULL );
}
if(Remainder)
{
- Ext_Flash_Operation(0X00 + (0X100*i) , TX, Remainder , WriteBuf+ (256*i), NULL );
+ Ext_Flash_Operation(0X00 + (0X100*i) , TX, Remainder , WriteBuf+ (MaxBytesForAddress*i), NULL );
}
}
else
@@ -258,38 +255,35 @@ void Stub_ExtFlashWriteWordsRequest(MessageContainer* requestContainer)
SendChars((char*)container_buffer, container_size);
stub_ext_flash_write_words_request__free_unpacked(request,NULL);
-
}
void Stub_ExtFlashReadWordsRequest(MessageContainer* requestContainer)
{
uint32_t status = PASSED;
+ uint32_t i;
+ uint32_t No_Words,No_Bytes;
+
MessageContainer responseContainer;
memset(&Flash_RW,0,sizeof(Flash_RW));
- uint32_t i;
-
StubExtFlashReadWordsRequest* request = stub_ext_flash_read_words_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
- uint32_t No_Words,No_Bytes;
-
-
No_Words = request->number_of_words;
No_Bytes = request->number_of_words *4;
- if(No_Bytes >256)
+ if(No_Bytes >MaxBytesForAddress)
{
- uint32_t number = No_Bytes / 256;
- uint32_t Remainder = No_Bytes % 256;
+ uint32_t number = No_Bytes / MaxBytesForAddress;
+ uint32_t Remainder = No_Bytes % MaxBytesForAddress;
for(i=0;i<number;i++)
{
- Ext_Flash_Operation(0X00 + (0X100*i), RX, 256, NULL, ReadBuf + (256*i) );
+ Ext_Flash_Operation(0X00 + (0X100*i), RX, MaxBytesForAddress, NULL, ReadBuf + (MaxBytesForAddress*i) );
}
if(Remainder)
{
- Ext_Flash_Operation(0X00 + (0X100*i), RX, Remainder, NULL, ReadBuf + (256*i) );
+ Ext_Flash_Operation(0X00 + (0X100*i), RX, Remainder, NULL, ReadBuf + (MaxBytesForAddress*i) );
}
}
else
@@ -319,5 +313,67 @@ void Stub_ExtFlashReadWordsRequest(MessageContainer* requestContainer)
stub_ext_flash_read_words_request__free_unpacked(request,NULL);
}
+*/
+
+
+//---------------------------------------------------------------------------------------------
+void Stub_ExtFlashWriteWordsRequest(MessageContainer* requestContainer)
+{
+
+ uint32_t status = PASSED;
+
+ MessageContainer responseContainer;
+
+ StubExtFlashWriteWordsRequest* request = stub_ext_flash_write_words_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
+
+ StubExtFlashWriteWordsResponse response = STUB_EXT_FLASH_WRITE_WORDS_RESPONSE__INIT;
+
+ response.address = request->address;
+ response.has_address = true;
+
+ ExtFlashWriteBuf(0,request->n_wordtwrite, request->wordtwrite);
+
+ status_response(status,&response.status, &response.statusword ,&response.has_statusword);
+
+ responseContainer = createContainer(MESSAGE_TYPE__StubExtFlashWriteWordsResponse, requestContainer->token, true, &response, &stub_ext_flash_write_words_response__pack, &stub_ext_flash_write_words_response__get_packed_size);
+
+ writeLine("Sending Response: ");
+
+ Write_status_response(status);
+
+ //-------------------------------------------------------------------------------------------
+ uint8_t* container_buffer = malloc(message_container__get_packed_size(&responseContainer));
+ size_t container_size = message_container__pack(&responseContainer, container_buffer);
+ free(responseContainer.data.data);
+ SendChars((char*)container_buffer, container_size);
+
+ stub_ext_flash_write_words_request__free_unpacked(request,NULL);
+}
+
+void Stub_ExtFlashReadWordsRequest(MessageContainer* requestContainer)
+{
+ uint32_t status = PASSED;
+
+ MessageContainer responseContainer;
+
+ StubExtFlashReadWordsRequest* request = stub_ext_flash_read_words_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
+
+ StubExtFlashReadWordsResponse response = STUB_EXT_FLASH_READ_WORDS_RESPONSE__INIT;
+ response.readbytes = ExtFlashReadBuf(0,request->number_of_words);
+ response.n_readbytes = request->number_of_words;
+
+ status_response(status,&response.status, &response.statusword ,&response.has_statusword);
+
+ responseContainer = createContainer(MESSAGE_TYPE__StubExtFlashReadWordsResponse, requestContainer->token, true, &response, &stub_ext_flash_read_words_response__pack, &stub_ext_flash_read_words_response__get_packed_size);
+
+ //-------------------------------------------------------------------------------------------
+ uint8_t* container_buffer = malloc(message_container__get_packed_size(&responseContainer));
+ size_t container_size = message_container__pack(&responseContainer, container_buffer);
+ free(responseContainer.data.data);
+ SendChars((char*)container_buffer, container_size);
+ stub_ext_flash_read_words_request__free_unpacked(request,NULL);
+}
+
+