diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-07-25 14:21:17 +0300 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-07-25 14:21:17 +0300 |
| commit | d5a855a3980a835460befab0acc36caa7f0230b7 (patch) | |
| tree | d6f8219bc0fd0e9177ab72b09a7afc2e05e8a019 /Software/Embedded_SW/Embedded/Modules | |
| parent | f98fc42ef7f1fc1d5570ebfed71d65894fafe1d5 (diff) | |
| parent | 9a26f7781835548d70657f6904c5e0fb6d5fcd2b (diff) | |
| download | Tango-d5a855a3980a835460befab0acc36caa7f0230b7.tar.gz Tango-d5a855a3980a835460befab0acc36caa7f0230b7.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
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); +} + + |
