i still don't understand why MPlab don't commit this shit !

This commit is contained in:
Rémi Heredero 2023-03-10 16:06:17 +01:00
parent 9b271afdb2
commit 2c949062dc
10 changed files with 137 additions and 62 deletions

26
main.c
View File

@ -50,12 +50,8 @@
/* /*
Main application Main application
*/ */
void resetTMR0(void);
void endFrame(void);
uint8_t nRxByte = 0;
extern uint8_t rx_buf[256];
extern uint16_t input_registers[2];
void main(void) void main(void)
{ {
// Initialize the device // Initialize the device
@ -84,13 +80,13 @@ void main(void)
// Disable the Peripheral Interrupts // Disable the Peripheral Interrupts
//INTERRUPT_PeripheralInterruptDisable(); //INTERRUPT_PeripheralInterruptDisable();
uint16_t foo = 512; uint16_t foo = 512;
EUSART1_SetRxInterruptHandler(resetTMR0);
TMR0_SetInterruptHandler(endFrame);
while (1) while (1)
{ {
foo = ++foo%1023; foo = ++foo%1023;
EPWM1_LoadDutyValue(foo); EPWM1_LoadDutyValue(foo);
uint16_t valueV = measure_voltage(); input_registers[0] = measure_voltage();
uint16_t valueV = input_registers[0];
uint16_t valueI = measure_current(offsetCurrent); uint16_t valueI = measure_current(offsetCurrent);
char msg[MAX_COL+1]; char msg[MAX_COL+1];
@ -106,20 +102,6 @@ void main(void)
} }
void resetTMR0(void){
rx_buf[nRxByte++] = RCREG1;
TMR0_Reload();
TMR0_StartTimer();
}
void endFrame(void){
INTCONbits.TMR0IF = 0;
nRxByte = 0;
TMR0_StopTimer();
modbus_analyse_and_answer();
// TODO
}
/** /**
End of File End of File
*/ */

View File

@ -93,8 +93,8 @@ void EUSART1_Initialize(void)
// SPEN enabled; RX9 9-bit; CREN enabled; ADDEN disabled; SREN disabled; // SPEN enabled; RX9 9-bit; CREN enabled; ADDEN disabled; SREN disabled;
RCSTA1 = 0xD0; RCSTA1 = 0xD0;
// TX9 9-bit; TX9D 0; SENDB sync_break_complete; TXEN enabled; SYNC asynchronous; BRGH hi_speed; CSRC master_mode; // TX9 9-bit; TX9D 1; SENDB sync_break_complete; TXEN enabled; SYNC asynchronous; BRGH hi_speed; CSRC master_mode;
TXSTA1 = 0xE4; TXSTA1 = 0xE5;
// //
SPBRG1 = 0x8A; SPBRG1 = 0x8A;

View File

@ -90,8 +90,8 @@ void TMR0_Initialize(void)
// Set Default Interrupt Handler // Set Default Interrupt Handler
TMR0_SetInterruptHandler(TMR0_DefaultInterruptHandler); TMR0_SetInterruptHandler(TMR0_DefaultInterruptHandler);
// T0PS 1:2; T08BIT 16-bit; T0SE Increment_hi_lo; T0CS FOSC/4; TMR0ON enabled; PSA not_assigned; // T0PS 1:2; T08BIT 16-bit; T0SE Increment_hi_lo; T0CS FOSC/4; TMR0ON disabled; PSA not_assigned;
T0CON = 0x98; T0CON = 0x18;
} }
void TMR0_StartTimer(void) void TMR0_StartTimer(void)

View File

@ -43,15 +43,17 @@ void modbus_timer(void)
extern uint16_t measure_voltage(); extern uint16_t measure_voltage();
uint8_t modbus_analyse_and_answer(void) { uint8_t modbus_analyse_and_answer(void) {
// TODO -> complete the modbus analyse and answer // TODO -> complete the modbus analyse and answer
uint8_t length = 0;
if(rx_buf[0] == modbusAddress){ if(rx_buf[0] == modbusAddress){
tx_buf[0] = rx_buf[0]; tx_buf[0] = rx_buf[0]; // Adress
tx_buf[1] = rx_buf[1]; tx_buf[1] = rx_buf[1]; // Function
switch(rx_buf[1]){ switch(rx_buf[1]){
case READ_INPUT_REGISTERS: case READ_INPUT_REGISTERS:
tx_buf[2] = 2; tx_buf[2] = 2; // Data length
tx_buf[4] = input_registers[0]; tx_buf[4] = input_registers[0]; // LSB Data
tx_buf[3] = input_registers[0]>>8; tx_buf[3] = input_registers[0]>>8; // MSB Data
length = 5;
// todo choose register // todo choose register
break; break;
case READ_HOLDING_REGISTERS: case READ_HOLDING_REGISTERS:
@ -66,8 +68,7 @@ uint8_t modbus_analyse_and_answer(void) {
} }
rx_buf[0] = 0; rx_buf[0] = 0;
modbus_send(length);
//
} }
@ -80,10 +81,11 @@ void modbus_char_recvd(void)
void modbus_send(uint8_t length) void modbus_send(uint8_t length)
{ {
uint16_t temp16; uint16_t temp16;
uint8_t i; uint8_t i;
// TODO -> complete modbus RCR calculation // TODO -> complete modbus crc calculation
length += 2; // add 2 CRC bytes for total size length += 2; // add 2 CRC bytes for total size
// For all the bytes to be transmitted // For all the bytes to be transmitted

View File

@ -45,10 +45,10 @@ void modbus_send(uint8_t length);
* This function will be called every time a character has been received on the * This function will be called every time a character has been received on the
* Modbus serial port. It is called from the interrupt hander. * Modbus serial port. It is called from the interrupt hander.
* *
* @param c : the received char * @param c : the received char // removed !
* @see interrupts.c. * @see interrupts.c.
*/ */
void modbus_char_recvd(uint8_t c); void modbus_char_recvd(void);
/** /**
* Modbus timer finished. This function is called by the interrupt handler * Modbus timer finished. This function is called by the interrupt handler

View File

@ -1,11 +1,11 @@
# #
#Thu Mar 09 15:57:40 CET 2023 #Fri Mar 10 16:03:22 CET 2023
default.languagetoolchain.version=2.40 default.languagetoolchain.version=2.40
default.Pack.dfplocation=C\:\\Program Files\\Microchip\\MPLABX\\v6.00\\packs\\Microchip\\PIC18F-J_DFP\\1.5.44 default.Pack.dfplocation=C\:\\Program Files\\Microchip\\MPLABX\\v6.00\\packs\\Microchip\\PIC18F-J_DFP\\1.5.44
conf.ids=default conf.ids=default
default.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc8\\v2.40\\bin default.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc8\\v2.40\\bin
host.id=3awj-afwq-rl host.id=3awj-afwq-rl
configurations-xml=5e78976b44c48e5125d650f70012f653 configurations-xml=fddef5f935cc83784d98c896c2327263
default.com-microchip-mplab-mdbcore-snap-SnapToolImpl.md5=eaa336cefb7fc46db8b50b7b2b6e54ca default.com-microchip-mplab-mdbcore-snap-SnapToolImpl.md5=eaa336cefb7fc46db8b50b7b2b6e54ca
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=6e02ca5e9f5042ffd365b42ab82d3a9b com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=6e02ca5e9f5042ffd365b42ab82d3a9b
user-defined-mime-resolver-xml=none user-defined-mime-resolver-xml=none

View File

@ -188,7 +188,56 @@
<property key="remove-unused-sections" value="true"/> <property key="remove-unused-sections" value="true"/>
</HI-TECH-LINK> </HI-TECH-LINK>
<Tool> <Tool>
<property key="AutoSelectMemRanges" value="auto"/>
<property key="Freeze Peripherals" value="true"/>
<property key="ToolFirmwareFilePath"
value="Press to browse for a specific firmware version"/>
<property key="ToolFirmwareOption.UpdateOptions"
value="ToolFirmwareOption.UseLatest"/>
<property key="ToolFirmwareToolPack"
value="Press to select which tool pack to use"/>
<property key="communication.interface"
value="${communication.interface.default}"/>
<property key="communication.interface.jtag" value="2wire"/>
<property key="communication.speed" value="${communication.speed.default}"/>
<property key="debugoptions.debug-startup" value="Use system settings"/>
<property key="debugoptions.reset-behaviour" value="Use system settings"/>
<property key="debugoptions.simultaneous.debug" value="false"/>
<property key="debugoptions.useswbreakpoints" value="true"/> <property key="debugoptions.useswbreakpoints" value="true"/>
<property key="freeze.timers" value="false"/>
<property key="memories.aux" value="false"/>
<property key="memories.bootflash" value="true"/>
<property key="memories.configurationmemory" value="true"/>
<property key="memories.configurationmemory2" value="true"/>
<property key="memories.dataflash" value="true"/>
<property key="memories.eeprom" value="true"/>
<property key="memories.exclude.configurationmemory" value="true"/>
<property key="memories.flashdata" value="true"/>
<property key="memories.id" value="true"/>
<property key="memories.instruction.ram.ranges"
value="${memories.instruction.ram.ranges}"/>
<property key="memories.programmemory" value="true"/>
<property key="memories.programmemory.ranges" value="0-1fff7"/>
<property key="programmerToGoFilePath"
value="C:/Users/remi/MPLABXProjects/solar_panel/debug/default/default_ptg"/>
<property key="programoptions.donoteraseauxmem" value="false"/>
<property key="programoptions.eraseb4program" value="true"/>
<property key="programoptions.pgmentry.voltage" value="low"/>
<property key="programoptions.pgmspeed" value="Min"/>
<property key="programoptions.preservedataflash" value="false"/>
<property key="programoptions.preservedataflash.ranges"
value="${memories.dataflash.default}"/>
<property key="programoptions.preserveeeprom" value="false"/>
<property key="programoptions.preserveeeprom.ranges" value=""/>
<property key="programoptions.preserveprogram.ranges" value=""/>
<property key="programoptions.preserveprogramrange" value="false"/>
<property key="programoptions.programcalmem" value="false"/>
<property key="programoptions.programuserotp" value="false"/>
<property key="programoptions.testmodeentrymethod" value="VDDFirst"/>
<property key="toolpack.updateoptions"
value="toolpack.updateoptions.uselatestoolpack"/>
<property key="toolpack.updateoptions.packversion"
value="Press to select which tool pack to use"/>
</Tool> </Tool>
<XC8-CO> <XC8-CO>
<property key="coverage-enable" value=""/> <property key="coverage-enable" value=""/>
@ -210,7 +259,54 @@
<property key="wpo-lto" value="false"/> <property key="wpo-lto" value="false"/>
</XC8-config-global> </XC8-config-global>
<snap> <snap>
<property key="AutoSelectMemRanges" value="auto"/>
<property key="Freeze Peripherals" value="true"/>
<property key="ToolFirmwareFilePath"
value="Press to browse for a specific firmware version"/>
<property key="ToolFirmwareOption.UpdateOptions"
value="ToolFirmwareOption.UseLatest"/>
<property key="ToolFirmwareToolPack"
value="Press to select which tool pack to use"/>
<property key="communication.interface"
value="${communication.interface.default}"/>
<property key="communication.interface.jtag" value="2wire"/>
<property key="communication.speed" value="${communication.speed.default}"/>
<property key="debugoptions.debug-startup" value="Use system settings"/>
<property key="debugoptions.reset-behaviour" value="Use system settings"/>
<property key="debugoptions.simultaneous.debug" value="false"/>
<property key="debugoptions.useswbreakpoints" value="true"/> <property key="debugoptions.useswbreakpoints" value="true"/>
<property key="freeze.timers" value="false"/>
<property key="memories.aux" value="false"/>
<property key="memories.bootflash" value="true"/>
<property key="memories.configurationmemory" value="true"/>
<property key="memories.configurationmemory2" value="true"/>
<property key="memories.dataflash" value="true"/>
<property key="memories.eeprom" value="true"/>
<property key="memories.exclude.configurationmemory" value="true"/>
<property key="memories.flashdata" value="true"/>
<property key="memories.id" value="true"/>
<property key="memories.instruction.ram.ranges"
value="${memories.instruction.ram.ranges}"/>
<property key="memories.programmemory" value="true"/>
<property key="memories.programmemory.ranges" value="0-1fff7"/>
<property key="programoptions.donoteraseauxmem" value="false"/>
<property key="programoptions.eraseb4program" value="true"/>
<property key="programoptions.pgmentry.voltage" value="low"/>
<property key="programoptions.pgmspeed" value="Min"/>
<property key="programoptions.preservedataflash" value="false"/>
<property key="programoptions.preservedataflash.ranges"
value="${memories.dataflash.default}"/>
<property key="programoptions.preserveeeprom" value="false"/>
<property key="programoptions.preserveeeprom.ranges" value=""/>
<property key="programoptions.preserveprogram.ranges" value=""/>
<property key="programoptions.preserveprogramrange" value="false"/>
<property key="programoptions.programcalmem" value="false"/>
<property key="programoptions.programuserotp" value="false"/>
<property key="programoptions.testmodeentrymethod" value="VDDFirst"/>
<property key="toolpack.updateoptions"
value="toolpack.updateoptions.uselatestoolpack"/>
<property key="toolpack.updateoptions.packversion"
value="Press to select which tool pack to use"/>
</snap> </snap>
</conf> </conf>
</confs> </confs>

View File

@ -4,7 +4,7 @@
<defaultConf>0</defaultConf> <defaultConf>0</defaultConf>
<confs> <confs>
<conf name="default" type="2"> <conf name="default" type="2">
<platformToolSN>:=MPLABComm-USB-Microchip:=&lt;vid>04D8:=&lt;pid>9018:=&lt;rev>0100:=&lt;man>Microchip Technology Incorporated:=&lt;prod>MPLAB Snap ICD:=&lt;sn>BUR190971772:=&lt;drv>x:=&lt;xpt>b:=end</platformToolSN> <platformToolSN>:=MPLABComm-USB-Microchip:=&lt;vid>04D8:=&lt;pid>9018:=&lt;rev>0100:=&lt;man>Microchip Technology Incorporated:=&lt;prod>MPLAB Snap ICD:=&lt;sn>BUR190971815:=&lt;drv>x:=&lt;xpt>b:=end</platformToolSN>
<languageToolchainDir>C:\Program Files\Microchip\xc8\v2.40\bin</languageToolchainDir> <languageToolchainDir>C:\Program Files\Microchip\xc8\v2.40\bin</languageToolchainDir>
<mdbdebugger version="1"> <mdbdebugger version="1">
<placeholder1>place holder 1</placeholder1> <placeholder1>place holder 1</placeholder1>

View File

@ -3,15 +3,10 @@
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/> <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2"> <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group> <group>
<file>file:/C:/Users/remi/Downloads/MCU/solar_panel/solar_panel.X/modbus.c</file> <file>file:/C:/Users/remi/MPLABXProjects/solar_panel/mcc_generated_files/interrupt_manager.c</file>
<file>file:/C:/Users/remi/Downloads/MCU/solar_panel/solar_panel.X/measure.c</file> <file>file:/C:/Users/remi/MPLABXProjects/solar_panel/main.c</file>
<file>file:/C:/Users/remi/Downloads/MCU/solar_panel/solar_panel.X/modbus.h</file> <file>file:/C:/Users/remi/MPLABXProjects/solar_panel/modbus.c</file>
<file>file:/C:/Users/remi/Downloads/MCU/solar_panel/solar_panel.X/main.c</file> <file>file:/C:/Users/remi/MPLABXProjects/solar_panel/mcc_generated_files/tmr0.c</file>
<file>file:/C:/Program%20Files/Microchip/xc8/v2.40/pic/sources/c99/common/lwmod.c</file>
<file>file:/C:/Users/remi/Downloads/MCU/solar_panel/solar_panel.X/mcc_generated_files/interrupt_manager.c</file>
<file>file:/C:/Program%20Files/Microchip/xc8/v2.40/pic/sources/c99/common/aomod.c</file>
<file>file:/C:/Users/remi/Downloads/MCU/solar_panel/solar_panel.X/mcc_generated_files/tmr0.c</file>
<file>file:/C:/Users/remi/Downloads/MCU/solar_panel/solar_panel.X/mcc_generated_files/eusart1.c</file>
</group> </group>
</open-files> </open-files>
</project-private> </project-private>

View File

@ -1004,7 +1004,7 @@
</entry> </entry>
<entry> <entry>
<key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="EUSART1" registerAlias="TXSTA"/> <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="EUSART1" registerAlias="TXSTA"/>
<value>228</value> <value>229</value>
</entry> </entry>
<entry> <entry>
<key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="BAUDCON" settingAlias="ABDEN"/> <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="BAUDCON" settingAlias="ABDEN"/>
@ -1124,7 +1124,7 @@
</entry> </entry>
<entry> <entry>
<key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="TX9D"/> <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="TX9D"/>
<value>0</value> <value>1</value>
</entry> </entry>
<entry> <entry>
<key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="TXEN"/> <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="EUSART1" registerAlias="TXSTA" settingAlias="TXEN"/>
@ -5648,7 +5648,7 @@
</entry> </entry>
<entry> <entry>
<key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR0" name="timerstart"/> <key class="com.microchip.mcc.core.tokenManager.CustomKey" moduleName="TMR0" name="timerstart"/>
<value>enabled</value> <value>disabled</value>
</entry> </entry>
<entry> <entry>
<key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="PS" alias="1:128"/> <key class="com.microchip.mcc.core.tokenManager.OptionKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="PS" alias="1:128"/>
@ -5724,7 +5724,7 @@
</entry> </entry>
<entry> <entry>
<key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="TMR0" registerAlias="T0CON"/> <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="TMR0" registerAlias="T0CON"/>
<value>152</value> <value>24</value>
</entry> </entry>
<entry> <entry>
<key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="TMR0" registerAlias="TMR0H"/> <key class="com.microchip.mcc.core.tokenManager.RegisterKey" moduleName="TMR0" registerAlias="TMR0H"/>
@ -5748,7 +5748,7 @@
</entry> </entry>
<entry> <entry>
<key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="TMR0ON"/> <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="TMR0ON"/>
<value>enabled</value> <value>disabled</value>
</entry> </entry>
<entry> <entry>
<key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="TMRCS"/> <key class="com.microchip.mcc.core.tokenManager.SettingKey" moduleName="TMR0" registerAlias="T0CON" settingAlias="TMRCS"/>
@ -6000,25 +6000,25 @@
<file>mcc_generated_files\tmr2.h</file> <file>mcc_generated_files\tmr2.h</file>
<hash>9c49623fe191eb686818b525571464bbc0f83e271367728272f8bce53b917f55</hash> <hash>9c49623fe191eb686818b525571464bbc0f83e271367728272f8bce53b917f55</hash>
</entry> </entry>
<entry>
<file>mcc_generated_files\tmr2.c</file>
<hash>05c23c08bae910023f51fd801fa4b4107358a34dbad1624e66d9a30249d1fe86</hash>
</entry>
<entry> <entry>
<file>mcc_generated_files\pin_manager.h</file> <file>mcc_generated_files\pin_manager.h</file>
<hash>87e93cc6f9494828e660861178e9a299efbe16d73a441d92e3dca2a1cf6d54ed</hash> <hash>87e93cc6f9494828e660861178e9a299efbe16d73a441d92e3dca2a1cf6d54ed</hash>
</entry> </entry>
<entry>
<file>mcc_generated_files\tmr2.c</file>
<hash>05c23c08bae910023f51fd801fa4b4107358a34dbad1624e66d9a30249d1fe86</hash>
</entry>
<entry> <entry>
<file>mcc_generated_files\adc.h</file> <file>mcc_generated_files\adc.h</file>
<hash>58eb4471903133ed806f7edbfce9c3cc4e0af3536917c8f81ad1cbdb72d919fc</hash> <hash>58eb4471903133ed806f7edbfce9c3cc4e0af3536917c8f81ad1cbdb72d919fc</hash>
</entry> </entry>
<entry> <entry>
<file>mcc_generated_files\epwm1.h</file> <file>mcc_generated_files\tmr0.c</file>
<hash>e1dacec839b43c4ec99f1710c3a7872ce32d2ea6dfe3856eb466e690b7ea75c9</hash> <hash>5999b6142463be670db096db3ffefc4be674ac36a27ce3d5bc69c9811eb5c55f</hash>
</entry> </entry>
<entry> <entry>
<file>mcc_generated_files\tmr0.c</file> <file>mcc_generated_files\epwm1.h</file>
<hash>f8a9d57b93e4810bdf2401ef043ce48c9d645ba81f2241dee96977286f6fb164</hash> <hash>e1dacec839b43c4ec99f1710c3a7872ce32d2ea6dfe3856eb466e690b7ea75c9</hash>
</entry> </entry>
<entry> <entry>
<file>mcc_generated_files\pin_manager.c</file> <file>mcc_generated_files\pin_manager.c</file>
@ -6042,7 +6042,7 @@
</entry> </entry>
<entry> <entry>
<file>mcc_generated_files\eusart1.c</file> <file>mcc_generated_files\eusart1.c</file>
<hash>d8ed730bd093892491a853d1821faa71f3a66365e71b5728f5d34612524be6ec</hash> <hash>4b28289ec5a9f1dd41eb4000a98bdf15a60c73701c716add6c562a154a431809</hash>
</entry> </entry>
</generatedFileHashHistoryMap> </generatedFileHashHistoryMap>
</config> </config>