diff --git a/picamp-potentiometer.X/nbproject/Makefile-default.mk b/picamp-potentiometer.X/nbproject/Makefile-default.mk index 794984b..4348a4e 100644 --- a/picamp-potentiometer.X/nbproject/Makefile-default.mk +++ b/picamp-potentiometer.X/nbproject/Makefile-default.mk @@ -19,7 +19,7 @@ endif endif # Environment -MKDIR=gnumkdir -p +MKDIR=mkdir -p RM=rm -f MV=mv CP=cp @@ -92,7 +92,7 @@ ${OBJECTDIR}/picamp-potentiometer.p1: picamp-potentiometer.c nbproject/Makefile @${MKDIR} "${OBJECTDIR}" @${RM} ${OBJECTDIR}/picamp-potentiometer.p1.d @${RM} ${OBJECTDIR}/picamp-potentiometer.p1 - ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=none -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -mno-default-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto -o ${OBJECTDIR}/picamp-potentiometer.p1 picamp-potentiometer.c + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=none -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -mno-default-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto -o ${OBJECTDIR}/picamp-potentiometer.p1 picamp-potentiometer.c @-${MV} ${OBJECTDIR}/picamp-potentiometer.d ${OBJECTDIR}/picamp-potentiometer.p1.d @${FIXDEPS} ${OBJECTDIR}/picamp-potentiometer.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ @@ -101,7 +101,7 @@ ${OBJECTDIR}/picamp-potentiometer.p1: picamp-potentiometer.c nbproject/Makefile @${MKDIR} "${OBJECTDIR}" @${RM} ${OBJECTDIR}/picamp-potentiometer.p1.d @${RM} ${OBJECTDIR}/picamp-potentiometer.p1 - ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -mno-default-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto -o ${OBJECTDIR}/picamp-potentiometer.p1 picamp-potentiometer.c + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -mno-default-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto -o ${OBJECTDIR}/picamp-potentiometer.p1 picamp-potentiometer.c @-${MV} ${OBJECTDIR}/picamp-potentiometer.d ${OBJECTDIR}/picamp-potentiometer.p1.d @${FIXDEPS} ${OBJECTDIR}/picamp-potentiometer.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ diff --git a/picamp-potentiometer.X/nbproject/Makefile-genesis.properties b/picamp-potentiometer.X/nbproject/Makefile-genesis.properties index 23f895c..ee414cb 100644 --- a/picamp-potentiometer.X/nbproject/Makefile-genesis.properties +++ b/picamp-potentiometer.X/nbproject/Makefile-genesis.properties @@ -1,13 +1,13 @@ # -#Wed Mar 06 12:04:54 CET 2024 -default.languagetoolchain.version=2.45 -default.Pack.dfplocation=C\:\\Program Files\\Microchip\\MPLABX\\v6.15\\packs\\Microchip\\PIC16Fxxx_DFP\\1.4.149 +#Wed Mar 06 15:56:03 CET 2024 +default.languagetoolchain.version=2.46 +default.Pack.dfplocation= conf.ids=default -default.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc8\\v2.45\\bin -host.id=2cdp-lqgb-i2 +default.languagetoolchain.dir=/home/burhan/.local/share/microchip/xc8/v2.46/bin +host.id=1odb-89vf-4o default.platformTool.md5=null -configurations-xml=ef0dab023007462dba333f99adb47e89 -com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=e62346c0c0ecee2637e613b49cb7b7fa -default.com-microchip-mplab-nbide-toolchain-xc8-XC8LanguageToolchain.md5=486b02ed36e5bdffb1f797e38fa058e5 -proj.dir=C\:\\Users\\wesse\\Downloads\\PICAMP-bbcdff189bdb53bccc968032c5cc010f25c24f1c\\picamp-potentiometer.X -host.platform=windows +configurations-xml=f54ead1af12c297ec1625d582980ea99 +com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=f612087c95360c842296d189edfe3321 +default.com-microchip-mplab-nbide-toolchain-xc8-XC8LanguageToolchain.md5=bf89cdcdd6c0a49174fe4b605ef2b42d +proj.dir=/home/burhan/Desktop/PICAMP-main/picamp-potentiometer.X +host.platform=linux diff --git a/picamp-potentiometer.X/nbproject/Makefile-local-default.mk b/picamp-potentiometer.X/nbproject/Makefile-local-default.mk index 2ac66a5..305de11 100644 --- a/picamp-potentiometer.X/nbproject/Makefile-local-default.mk +++ b/picamp-potentiometer.X/nbproject/Makefile-local-default.mk @@ -14,24 +14,22 @@ # You can invoke make with the values of the macros: # $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ... # -SHELL=cmd.exe -PATH_TO_IDE_BIN=C:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/ +PATH_TO_IDE_BIN=/home/burhan/.local/share/microchip/mplabx/v6.20/mplab_platform/platform/../mplab_ide/modules/../../bin/ # Adding MPLAB X bin directory to path. -PATH:=C:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/:$(PATH) +PATH:=/home/burhan/.local/share/microchip/mplabx/v6.20/mplab_platform/platform/../mplab_ide/modules/../../bin/:$(PATH) # Path to java used to run MPLAB X when this makefile was created -MP_JAVA_PATH="C:\Program Files\Microchip\MPLABX\v6.15\sys\java\zulu8.64.0.19-ca-fx-jre8.0.345-win_x64/bin/" +MP_JAVA_PATH="/home/burhan/.local/share/microchip/mplabx/v6.20/sys/java/zulu8.64.0.19-ca-fx-jre8.0.345-linux_x64/bin/" OS_CURRENT="$(shell uname -s)" -MP_CC="C:\Program Files\Microchip\xc8\v2.45\bin\xc8-cc.exe" +MP_CC="/home/burhan/.local/share/microchip/xc8/v2.46/bin/xc8-cc" # MP_CPPC is not defined # MP_BC is not defined -MP_AS="C:\Program Files\Microchip\xc8\v2.45\bin\xc8-cc.exe" -MP_LD="C:\Program Files\Microchip\xc8\v2.45\bin\xc8-cc.exe" -MP_AR="C:\Program Files\Microchip\xc8\v2.45\bin\xc8-ar.exe" -DEP_GEN=${MP_JAVA_PATH}java -jar "C:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/extractobjectdependencies.jar" -MP_CC_DIR="C:\Program Files\Microchip\xc8\v2.45\bin" +MP_AS="/home/burhan/.local/share/microchip/xc8/v2.46/bin/xc8-cc" +MP_LD="/home/burhan/.local/share/microchip/xc8/v2.46/bin/xc8-cc" +MP_AR="/home/burhan/.local/share/microchip/xc8/v2.46/bin/xc8-ar" +DEP_GEN=${MP_JAVA_PATH}java -jar "/home/burhan/.local/share/microchip/mplabx/v6.20/mplab_platform/platform/../mplab_ide/modules/../../bin/extractobjectdependencies.jar" +MP_CC_DIR="/home/burhan/.local/share/microchip/xc8/v2.46/bin" # MP_CPPC_DIR is not defined # MP_BC_DIR is not defined -MP_AS_DIR="C:\Program Files\Microchip\xc8\v2.45\bin" -MP_LD_DIR="C:\Program Files\Microchip\xc8\v2.45\bin" -MP_AR_DIR="C:\Program Files\Microchip\xc8\v2.45\bin" -DFP_DIR=C:/Program Files/Microchip/MPLABX/v6.15/packs/Microchip/PIC16Fxxx_DFP/1.4.149 +MP_AS_DIR="/home/burhan/.local/share/microchip/xc8/v2.46/bin" +MP_LD_DIR="/home/burhan/.local/share/microchip/xc8/v2.46/bin" +MP_AR_DIR="/home/burhan/.local/share/microchip/xc8/v2.46/bin" diff --git a/picamp-rotary.X/nbproject/Makefile-default.mk b/picamp-rotary.X/nbproject/Makefile-default.mk index 0fba5a6..b9c4628 100644 --- a/picamp-rotary.X/nbproject/Makefile-default.mk +++ b/picamp-rotary.X/nbproject/Makefile-default.mk @@ -19,7 +19,7 @@ endif endif # Environment -MKDIR=gnumkdir -p +MKDIR=mkdir -p RM=rm -f MV=mv CP=cp @@ -92,7 +92,7 @@ ${OBJECTDIR}/picamp-rotary.p1: picamp-rotary.c nbproject/Makefile-${CND_CONF}.m @${MKDIR} "${OBJECTDIR}" @${RM} ${OBJECTDIR}/picamp-rotary.p1.d @${RM} ${OBJECTDIR}/picamp-rotary.p1 - ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=none -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -mno-default-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto -o ${OBJECTDIR}/picamp-rotary.p1 picamp-rotary.c + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=none -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -mno-default-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto -o ${OBJECTDIR}/picamp-rotary.p1 picamp-rotary.c @-${MV} ${OBJECTDIR}/picamp-rotary.d ${OBJECTDIR}/picamp-rotary.p1.d @${FIXDEPS} ${OBJECTDIR}/picamp-rotary.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ @@ -101,7 +101,7 @@ ${OBJECTDIR}/picamp-rotary.p1: picamp-rotary.c nbproject/Makefile-${CND_CONF}.m @${MKDIR} "${OBJECTDIR}" @${RM} ${OBJECTDIR}/picamp-rotary.p1.d @${RM} ${OBJECTDIR}/picamp-rotary.p1 - ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -mno-default-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto -o ${OBJECTDIR}/picamp-rotary.p1 picamp-rotary.c + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -mno-default-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto -o ${OBJECTDIR}/picamp-rotary.p1 picamp-rotary.c @-${MV} ${OBJECTDIR}/picamp-rotary.d ${OBJECTDIR}/picamp-rotary.p1.d @${FIXDEPS} ${OBJECTDIR}/picamp-rotary.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ diff --git a/picamp-rotary.X/nbproject/Makefile-genesis.properties b/picamp-rotary.X/nbproject/Makefile-genesis.properties index 29223f4..1a80cbf 100644 --- a/picamp-rotary.X/nbproject/Makefile-genesis.properties +++ b/picamp-rotary.X/nbproject/Makefile-genesis.properties @@ -1,13 +1,13 @@ # -#Wed Mar 06 12:04:57 CET 2024 -default.languagetoolchain.version=2.45 -default.Pack.dfplocation=C\:\\Program Files\\Microchip\\MPLABX\\v6.15\\packs\\Microchip\\PIC16Fxxx_DFP\\1.4.149 +#Wed Mar 06 15:56:01 CET 2024 +default.languagetoolchain.version=2.46 +default.Pack.dfplocation= conf.ids=default -default.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc8\\v2.45\\bin -host.id=2cdp-lqgb-i2 +default.languagetoolchain.dir=/home/burhan/.local/share/microchip/xc8/v2.46/bin +host.id=1odb-89vf-4o default.platformTool.md5=null -configurations-xml=43b07172340b3eaea269a3aff96aed06 -com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=e62346c0c0ecee2637e613b49cb7b7fa -default.com-microchip-mplab-nbide-toolchain-xc8-XC8LanguageToolchain.md5=486b02ed36e5bdffb1f797e38fa058e5 -proj.dir=C\:\\Users\\wesse\\Downloads\\PICAMP-bbcdff189bdb53bccc968032c5cc010f25c24f1c\\picamp-rotary.X -host.platform=windows +configurations-xml=897136f155860b209772fd08ad017bce +com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=f612087c95360c842296d189edfe3321 +default.com-microchip-mplab-nbide-toolchain-xc8-XC8LanguageToolchain.md5=bf89cdcdd6c0a49174fe4b605ef2b42d +proj.dir=/home/burhan/Desktop/PICAMP-main/picamp-rotary.X +host.platform=linux diff --git a/picamp-rotary.X/nbproject/Makefile-local-default.mk b/picamp-rotary.X/nbproject/Makefile-local-default.mk index 2ac66a5..305de11 100644 --- a/picamp-rotary.X/nbproject/Makefile-local-default.mk +++ b/picamp-rotary.X/nbproject/Makefile-local-default.mk @@ -14,24 +14,22 @@ # You can invoke make with the values of the macros: # $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ... # -SHELL=cmd.exe -PATH_TO_IDE_BIN=C:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/ +PATH_TO_IDE_BIN=/home/burhan/.local/share/microchip/mplabx/v6.20/mplab_platform/platform/../mplab_ide/modules/../../bin/ # Adding MPLAB X bin directory to path. -PATH:=C:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/:$(PATH) +PATH:=/home/burhan/.local/share/microchip/mplabx/v6.20/mplab_platform/platform/../mplab_ide/modules/../../bin/:$(PATH) # Path to java used to run MPLAB X when this makefile was created -MP_JAVA_PATH="C:\Program Files\Microchip\MPLABX\v6.15\sys\java\zulu8.64.0.19-ca-fx-jre8.0.345-win_x64/bin/" +MP_JAVA_PATH="/home/burhan/.local/share/microchip/mplabx/v6.20/sys/java/zulu8.64.0.19-ca-fx-jre8.0.345-linux_x64/bin/" OS_CURRENT="$(shell uname -s)" -MP_CC="C:\Program Files\Microchip\xc8\v2.45\bin\xc8-cc.exe" +MP_CC="/home/burhan/.local/share/microchip/xc8/v2.46/bin/xc8-cc" # MP_CPPC is not defined # MP_BC is not defined -MP_AS="C:\Program Files\Microchip\xc8\v2.45\bin\xc8-cc.exe" -MP_LD="C:\Program Files\Microchip\xc8\v2.45\bin\xc8-cc.exe" -MP_AR="C:\Program Files\Microchip\xc8\v2.45\bin\xc8-ar.exe" -DEP_GEN=${MP_JAVA_PATH}java -jar "C:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/extractobjectdependencies.jar" -MP_CC_DIR="C:\Program Files\Microchip\xc8\v2.45\bin" +MP_AS="/home/burhan/.local/share/microchip/xc8/v2.46/bin/xc8-cc" +MP_LD="/home/burhan/.local/share/microchip/xc8/v2.46/bin/xc8-cc" +MP_AR="/home/burhan/.local/share/microchip/xc8/v2.46/bin/xc8-ar" +DEP_GEN=${MP_JAVA_PATH}java -jar "/home/burhan/.local/share/microchip/mplabx/v6.20/mplab_platform/platform/../mplab_ide/modules/../../bin/extractobjectdependencies.jar" +MP_CC_DIR="/home/burhan/.local/share/microchip/xc8/v2.46/bin" # MP_CPPC_DIR is not defined # MP_BC_DIR is not defined -MP_AS_DIR="C:\Program Files\Microchip\xc8\v2.45\bin" -MP_LD_DIR="C:\Program Files\Microchip\xc8\v2.45\bin" -MP_AR_DIR="C:\Program Files\Microchip\xc8\v2.45\bin" -DFP_DIR=C:/Program Files/Microchip/MPLABX/v6.15/packs/Microchip/PIC16Fxxx_DFP/1.4.149 +MP_AS_DIR="/home/burhan/.local/share/microchip/xc8/v2.46/bin" +MP_LD_DIR="/home/burhan/.local/share/microchip/xc8/v2.46/bin" +MP_AR_DIR="/home/burhan/.local/share/microchip/xc8/v2.46/bin" diff --git a/picamp.X/include/HCMS2913.h b/picamp.X/include/HCMS2913.h new file mode 100644 index 0000000..fb10b6d --- /dev/null +++ b/picamp.X/include/HCMS2913.h @@ -0,0 +1,45 @@ +#ifndef HCMS2913_H +#define HCMS2913_H + +#include "./HCMS2913.h" +#include "./config.h" + +typedef enum { + MST_OSC_DIV_04, // 0x0: 0000 + MST_OSC_DIV_16, // 0x1: 0001 + MST_OSC_DIV_64, // 0x2: 0010 + MST_OSC_DIV_T2, // 0x3: 0011 + SLV_SS_EN, // 0x4: 0100 - not used in this version of our lib ... + SLV_SS_DIS // 0x5: 0101 +} sspmode; + +// Datasheet SMP (Sample Timing) behavior in (SPI MASTER MODE ONLY): +// 1 = Input data sampled (received) at end of data output time +// 0 = Input data sampled (recieved) at middle of data output time + +typedef enum { + SMP0_SDI_MIDDLE, SMP1_SDI_END +} rxsmpmoment; + +// Datasheet CKP (Clock Polarity) select bit behavior (SPI mode): +// 1 = Idle state for clock is a high level +// 0 = Idle state for clock is a low level + +typedef enum { + CKP0_CPOL0_IDLE_LOW, CKP1_CPOL1_IDLE_HIGH +} clkpol; + +// Datasheet CKE (Clock Edge) select bit behavior (SPI mode): +// 1 = Transmit occurs on transition from active to Idle clock state +// 0 = Transmit occurs on transition from Idle to active clock state +// ! NOTE: Microchip CKE bit is always the inverse of Motorola CPHA bit! + +typedef enum { + CKE0_CPHA1_TRSMIT_IDL2ACT, CKE1_CPHA0_TRSMIT_ACT2IDL +} txclkedge; + +void HCMS_init(volatile unsigned char *port, uint8_t _RESET, uint8_t _CENABLE, uint8_t _RSELECT); +void HCMS_load_word(const char *_string, char *bufferSelected, volatile unsigned char *port, uint8_t _CENABLE); +void HCMS_spi_init(sspmode mst_slv_oscdiv, rxsmpmoment sdi_rx_smp, clkpol clock_pol, txclkedge sdo_tx_edge); + +#endif \ No newline at end of file diff --git a/picamp.X/include/ascii.h b/picamp.X/include/ascii.h new file mode 100755 index 0000000..729bade --- /dev/null +++ b/picamp.X/include/ascii.h @@ -0,0 +1,151 @@ +#ifndef ASCII_H +#define ASCII_H + +// characters taken from "HCMS-29xx/HCMS-39xx LED Displays Character Set (ASCII and Katakana)" +// cherry picked and ordered by Burhan Topaloglu +// item 6 is for lookup. +const char ascii[128][6] = { + // debug + {0x00, 0x00, 0x00, 0x00, 0x00, ' '}, // 0 space/empty + {0x2A, 0x55, 0x2A, 0x55, 0x2A, 0xD7}, // 1 checker, using the ascii for x cross + + // numbers + {0x3E, 0x51, 0x49, 0x45, 0x3E, '0'}, // 2 0 + {0x00, 0x42, 0x7F, 0x40, 0x00, '1'}, // 3 1 + {0x62, 0x51, 0x49, 0x49, 0x46, '2'}, // 4 2 + {0x22, 0x41, 0x49, 0x49, 0x36, '3'}, // 5 3 + {0x18, 0x14, 0x12, 0x7F, 0x10, '4'}, // 6 4 + {0x27, 0x45, 0x45, 0x45, 0x39, '5'}, // 7 5 + {0x3C, 0x4A, 0x49, 0x49, 0x30, '6'}, // 8 6 + {0x01, 0x71, 0x09, 0x05, 0x03, '7'}, // 9 7 + {0x36, 0x49, 0x49, 0x49, 0x37, '8'}, // 10 8 + {0x06, 0x49, 0x49, 0x29, 0x1E, '9'}, // 11 9 + + // lowercase letters + {0x38, 0x44, 0x44, 0x3C, 0x40, 'a'}, // 12 a + {0x7F, 0x48, 0x44, 0x44, 0x38, 'b'}, // 13 b + {0x38, 0x44, 0x44, 0x44, 0x44, 'c'}, // 14 c + {0x38, 0x44, 0x44, 0x48, 0x7F, 'd'}, // 15 d + {0x38, 0x54, 0x54, 0x54, 0x08, 'e'}, // 16 e + {0x08, 0x7E, 0x09, 0x02, 0x00, 'f'}, // 17 f + {0x08, 0x14, 0x54, 0x54, 0x3C, 'g'}, // 18 g + {0x7F, 0x08, 0x04, 0x04, 0x78, 'h'}, // 19 h + {0x00, 0x44, 0x7D, 0x40, 0x00, 'i'}, // 20 i + {0x20, 0x40, 0x44, 0x3D, 0x00, 'j'}, // 21 j + {0x00, 0x7F, 0x10, 0x28, 0x44, 'k'}, // 22 k + {0x00, 0x41, 0x7F, 0x40, 0x00, 'l'}, // 23 l + {0x78, 0x04, 0x18, 0x04, 0x78, 'm'}, // 24 m + {0x7C, 0x08, 0x04, 0x04, 0x78, 'n'}, // 25 n + {0x38, 0x44, 0x44, 0x44, 0x38, 'o'}, // 26 o + {0x7C, 0x14, 0x24, 0x24, 0x18, 'p'}, // 27 p + {0x18, 0x24, 0x14, 0x7C, 0x40, 'q'}, // 28 q + {0x00, 0x7C, 0x08, 0x04, 0x04, 'r'}, // 29 r + {0x48, 0x54, 0x54, 0x54, 0x20, 's'}, // 30 s + {0x04, 0x3E, 0x44, 0x20, 0x00, 't'}, // 31 t + {0x3C, 0x40, 0x40, 0x20, 0x7C, 'u'}, // 32 u + {0x1C, 0x20, 0x40, 0x20, 0x1C, 'v'}, // 33 v + {0x3C, 0x40, 0x30, 0x40, 0x3C, 'w'}, // 34 w + {0x44, 0x28, 0x10, 0x28, 0x44, 'x'}, // 35 x + {0x04, 0x48, 0x30, 0x08, 0x04, 'y'}, // 36 y + {0x44, 0x64, 0x54, 0x4C, 0x44, 'z'}, // 37 z + + // uppercase letters + {0x7E, 0x09, 0x09, 0x09, 0x7E, 'A'}, // 38 A + {0x7E, 0x49, 0x49, 0x49, 0x36, 'B'}, // 39 B + {0x3E, 0x41, 0x41, 0x41, 0x22, 'C'}, // 40 C + {0x7F, 0x41, 0x41, 0x41, 0x3E, 'D'}, // 41 D + {0x7F, 0x49, 0x49, 0x49, 0x41, 'E'}, // 42 E + {0x7F, 0x09, 0x09, 0x09, 0x01, 'F'}, // 43 F + {0x3E, 0x41, 0x41, 0x51, 0x32, 'G'}, // 44 G + {0x7F, 0x08, 0x08, 0x08, 0x7F, 'H'}, // 45 H + {0x00, 0x41, 0x7F, 0x41, 0x00, 'I'}, // 46 I + {0x20, 0x40, 0x40, 0x40, 0x3F, 'J'}, // 47 J + {0x7F, 0x08, 0x14, 0x22, 0x41, 'K'}, // 48 K + {0x7F, 0x40, 0x40, 0x40, 0x40, 'L'}, // 49 L + {0x7F, 0x02, 0x0C, 0x02, 0x7F, 'M'}, // 50 M + {0x7F, 0x04, 0x08, 0x10, 0x7F, 'N'}, // 51 N + {0x3E, 0x41, 0x41, 0x41, 0x3E, 'O'}, // 52 O + {0x7F, 0x09, 0x09, 0x09, 0x06, 'P'}, // 53 P + {0x3E, 0x41, 0x51, 0x21, 0x5E, 'Q'}, // 54 Q + {0x7F, 0x09, 0x19, 0x29, 0x46, 'R'}, // 55 R + {0x26, 0x49, 0x49, 0x49, 0x32, 'S'}, // 56 S + {0x01, 0x01, 0x7F, 0x01, 0x01, 'T'}, // 57 T + {0x3F, 0x40, 0x40, 0x40, 0x3F, 'U'}, // 58 U + {0x07, 0x18, 0x60, 0x18, 0x07, 'V'}, // 59 V + {0x7F, 0x20, 0x18, 0x20, 0x7F, 'W'}, // 60 W + {0x63, 0x14, 0x08, 0x14, 0x63, 'X'}, // 61 X + {0x03, 0x04, 0x78, 0x04, 0x03, 'Y'}, // 62 Y + {0x61, 0x51, 0x49, 0x45, 0x43, 'Z'}, // 63 Z + + // special letters/umlauts + {0x78, 0x14, 0x15, 0x14, 0x78, 0xC5}, // 64 � capital A with circle on top + {0x38, 0x44, 0x45, 0x3C, 0x40, 0xE5}, // 65 � lowercase a with circle on top + {0x78, 0x15, 0x14, 0x15, 0x78, 0xC4}, // 66 � capital A with two dots on top + {0x38, 0x45, 0x44, 0x3D, 0x40, 0xE4}, // 67 � lowercase a with two dots on top + {0x3C, 0x43, 0x42, 0x43, 0x3C, 0xD6}, // 68 � capital O with two dots on top + {0x38, 0x45, 0x44, 0x45, 0x38, 0xF6}, // 69 � lowercase o with two dots on top + {0x3C, 0x41, 0x40, 0x41, 0x3C, 0xDC}, // 70 � capital U with two dots on top + {0x38, 0x42, 0x40, 0x42, 0x38, 0xFC}, // 71 � lowercase u with two dots on top + + // special characters + {0x00, 0x00, 0x5F, 0x00, 0x00, '!'}, // 72 ! + {0x00, 0x03, 0x00, 0x03, 0x00, '"'}, // 73 " + {0x14, 0x7F, 0x14, 0x7F, 0x14, '#'}, // 74 # + {0x24, 0x2A, 0x7F, 0x2A, 0x12, '$'}, // 75 $ + {0x23, 0x13, 0x08, 0x64, 0x62, '%'}, // 76 % + {0x36, 0x49, 0x56, 0x20, 0x50, '&'}, // 77 & + {0x00, 0x0B, 0x07, 0x00, 0x00, 0x27}, // 78 ' + {0x00, 0x00, 0x3E, 0x41, 0x00, '('}, // 79 ( + {0x00, 0x41, 0x3E, 0x00, 0x00, ')'}, // 80 ) + {0x08, 0x2A, 0x1C, 0x2A, 0x08, '*'}, // 81 * + {0x08, 0x08, 0x3E, 0x08, 0x08, '+'}, // 82 + + {0x00, 0x58, 0x38, 0x00, 0x00, ','}, // 83 , + {0x08, 0x08, 0x08, 0x08, 0x08, '-'}, // 84 - + {0x00, 0x30, 0x30, 0x00, 0x00, '.'}, // 85 . + {0x20, 0x10, 0x08, 0x04, 0x02, '/'}, // 86 forward slash + {0x02, 0x04, 0x08, 0x10, 0x20, 0x5c}, // 87 backslash + {0x00, 0x36, 0x36, 0x00, 0x00, ':'}, // 88 : + {0x00, 0x5B, 0x3B, 0x00, 0x00, ';'}, // 89 ; + {0x00, 0x08, 0x14, 0x22, 0x41, '<'}, // 90 < + {0x14, 0x14, 0x14, 0x14, 0x14, '='}, // 91 = + {0x41, 0x22, 0x14, 0x08, 0x00, '>'}, // 92 > + {0x02, 0x01, 0x51, 0x09, 0x06, '?'}, // 93 ? + {0x30, 0x35, 0x48, 0x40, 0x30, 0xBF}, // 94 � Inverted question mark + {0x3E, 0x41, 0x5D, 0x55, 0x1E, '@'}, // 95 @ + {0x00, 0x00, 0x7F, 0x41, 0x41, '['}, // 96 [ + {0x41, 0x41, 0x7F, 0x00, 0x00, ']'}, // 97 ] + {0x04, 0x02, 0x7F, 0x02, 0x04, '-'}, // 98 - + {0x40, 0x40, 0x40, 0x40, 0x40, '_'}, // 99 _ + {0x00, 0x07, 0x0B, 0x00, 0x00, '`'}, // 100 ` + {0x00, 0x08, 0x36, 0x41, 0x00, '{'}, // 101 { + {0x00, 0x00, 0x77, 0x00, 0x00, '|'}, // 102 | + {0x00, 0x41, 0x36, 0x08, 0x00, '}'}, // 103 } + {0x08, 0x04, 0x08, 0x10, 0x08, '~'}, // 104 ~ + + // user defined or unusual desired characters + {0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xD8}, // 105 filler - FULL + {0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xD8}, // 106 filler - FULL + {0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xD8}, // 107 filler - FULL + {0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xD8}, // 108 filler - FULL + {0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xD8}, // 109 filler - FULL + {0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xD8}, // 110 filler - FULL + {0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xD8}, // 111 filler - FULL + {0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xD8}, // 112 filler - FULL + {0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xD8}, // 113 filler - FULL + {0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xD8}, // 114 filler - FULL + {0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xD8}, // 115 filler - FULL + {0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xD8}, // 116 filler - FULL + {0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xD8}, // 117 filler - FULL + {0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xD8}, // 118 filler - FULL + {0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xD8}, // 119 filler - FULL + {0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xD8}, // 120 filler - FULL + {0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xD8}, // 121 filler - FULL + {0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xD8}, // 122 filler - FULL + {0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xD8}, // 123 filler - FULL + {0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xD8}, // 124 filler - FULL + {0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xD8}, // 125 filler - FULL + {0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xD8}, // 126 filler - FULL + {0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0xD8} // 127 FINAL - FULL Latin capital letter O with slash +}; +// filler has been added to keep size static in the future, this script may be edited to add custom characters if desired +#endif \ No newline at end of file diff --git a/picamp.X/include/config.h b/picamp.X/include/config.h index 7e6d830..ab30f18 100644 --- a/picamp.X/include/config.h +++ b/picamp.X/include/config.h @@ -16,7 +16,7 @@ #pragma config IESO = OFF // Internal External Switchover bit (Internal/External Switchover mode is disabled) #pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is disabled) #pragma config LVP = OFF // Low Voltage Programming Enable bit (RB3 pin has digital I/O, HV on MCLR must be used for programming) -#pragma config BOR4V = BOR40V // Brown-out Reset Selection bit (Brown-out Reset set to 4.0V) +#pragma config BOR4V = BOR21V // Brown-out Reset Selection bit (Brown-out Reset set to 4.0V) #pragma config WRT = OFF // Flash Program Memory Self Write Enable bits (Write protection off) // Used by the XC8 delay_ms(x) macro @@ -32,8 +32,38 @@ #define DISABLED 0 #define LED_AMOUNT 4 +#define POT_STEP_AMOUNT 10 #define POT_LIMIT 1023 -#define DEADZONE 2 +#define DEADZONE 15 + +#define SCK_PIN PORTCbits.RC3 +#define SDO_DDIR TRISCbits.TRISC5 // DDIR = Data DIRection +#define SDI_DDIR TRISCbits.TRISC4 +#define SCK_DDIR TRISCbits.TRISC3 +#define SSPM SSPCONbits.SSPM + +char selLoadString[8] = "SEL. 00"; +char volLoadString[8] = "VOL. 000"; +char volumeBuffer[40]; +char selectBuffer[40]; + + +//screen 1, right side +#define RESET_1 PORTCbits.RC2 +#define CENABLE_1 PORTCbits.RC4 +#define BLANK_1 PORTCbits.RC6 +#define RSELECT_1 PORTCbits.RC7 + +#define RESET_PINNUM 2 +#define CENABLE_PINNUM 4 +#define BLANK_PINNUM 6 +#define RSELECT_PINNUM 7 + +//screen 2, left side +#define RESET_2 PORTDbits.RD2 +#define CENABLE_2 PORTDbits.RD4 +#define BLANK_2 PORTDbits.RD6 +#define RSELECT_2 PORTDbits.RD7 #endif diff --git a/picamp.X/nbproject/Makefile-default.mk b/picamp.X/nbproject/Makefile-default.mk index 484b188..db8cd6f 100644 --- a/picamp.X/nbproject/Makefile-default.mk +++ b/picamp.X/nbproject/Makefile-default.mk @@ -19,7 +19,7 @@ endif endif # Environment -MKDIR=gnumkdir -p +MKDIR=mkdir -p RM=rm -f MV=mv CP=cp @@ -51,17 +51,17 @@ OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE} DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE} # Source Files Quoted if spaced -SOURCEFILES_QUOTED_IF_SPACED=src/initialisation.c src/main.c +SOURCEFILES_QUOTED_IF_SPACED=src/initialisation.c src/main.c src/HCMS2913.c # Object Files Quoted if spaced -OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/src/initialisation.p1 ${OBJECTDIR}/src/main.p1 -POSSIBLE_DEPFILES=${OBJECTDIR}/src/initialisation.p1.d ${OBJECTDIR}/src/main.p1.d +OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/src/initialisation.p1 ${OBJECTDIR}/src/main.p1 ${OBJECTDIR}/src/HCMS2913.p1 +POSSIBLE_DEPFILES=${OBJECTDIR}/src/initialisation.p1.d ${OBJECTDIR}/src/main.p1.d ${OBJECTDIR}/src/HCMS2913.p1.d # Object Files -OBJECTFILES=${OBJECTDIR}/src/initialisation.p1 ${OBJECTDIR}/src/main.p1 +OBJECTFILES=${OBJECTDIR}/src/initialisation.p1 ${OBJECTDIR}/src/main.p1 ${OBJECTDIR}/src/HCMS2913.p1 # Source Files -SOURCEFILES=src/initialisation.c src/main.c +SOURCEFILES=src/initialisation.c src/main.c src/HCMS2913.c @@ -92,7 +92,7 @@ ${OBJECTDIR}/src/initialisation.p1: src/initialisation.c nbproject/Makefile-${C @${MKDIR} "${OBJECTDIR}/src" @${RM} ${OBJECTDIR}/src/initialisation.p1.d @${RM} ${OBJECTDIR}/src/initialisation.p1 - ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=pickit5 -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -mno-default-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto -o ${OBJECTDIR}/src/initialisation.p1 src/initialisation.c + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=none -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -mno-default-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto -o ${OBJECTDIR}/src/initialisation.p1 src/initialisation.c @-${MV} ${OBJECTDIR}/src/initialisation.d ${OBJECTDIR}/src/initialisation.p1.d @${FIXDEPS} ${OBJECTDIR}/src/initialisation.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ @@ -100,16 +100,24 @@ ${OBJECTDIR}/src/main.p1: src/main.c nbproject/Makefile-${CND_CONF}.mk @${MKDIR} "${OBJECTDIR}/src" @${RM} ${OBJECTDIR}/src/main.p1.d @${RM} ${OBJECTDIR}/src/main.p1 - ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=pickit5 -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -mno-default-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto -o ${OBJECTDIR}/src/main.p1 src/main.c + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=none -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -mno-default-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto -o ${OBJECTDIR}/src/main.p1 src/main.c @-${MV} ${OBJECTDIR}/src/main.d ${OBJECTDIR}/src/main.p1.d @${FIXDEPS} ${OBJECTDIR}/src/main.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ +${OBJECTDIR}/src/HCMS2913.p1: src/HCMS2913.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/src" + @${RM} ${OBJECTDIR}/src/HCMS2913.p1.d + @${RM} ${OBJECTDIR}/src/HCMS2913.p1 + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -D__DEBUG=1 -mdebugger=none -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -mno-default-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto -o ${OBJECTDIR}/src/HCMS2913.p1 src/HCMS2913.c + @-${MV} ${OBJECTDIR}/src/HCMS2913.d ${OBJECTDIR}/src/HCMS2913.p1.d + @${FIXDEPS} ${OBJECTDIR}/src/HCMS2913.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ + else ${OBJECTDIR}/src/initialisation.p1: src/initialisation.c nbproject/Makefile-${CND_CONF}.mk @${MKDIR} "${OBJECTDIR}/src" @${RM} ${OBJECTDIR}/src/initialisation.p1.d @${RM} ${OBJECTDIR}/src/initialisation.p1 - ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -mno-default-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto -o ${OBJECTDIR}/src/initialisation.p1 src/initialisation.c + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -mno-default-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto -o ${OBJECTDIR}/src/initialisation.p1 src/initialisation.c @-${MV} ${OBJECTDIR}/src/initialisation.d ${OBJECTDIR}/src/initialisation.p1.d @${FIXDEPS} ${OBJECTDIR}/src/initialisation.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ @@ -117,10 +125,18 @@ ${OBJECTDIR}/src/main.p1: src/main.c nbproject/Makefile-${CND_CONF}.mk @${MKDIR} "${OBJECTDIR}/src" @${RM} ${OBJECTDIR}/src/main.p1.d @${RM} ${OBJECTDIR}/src/main.p1 - ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -mno-default-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto -o ${OBJECTDIR}/src/main.p1 src/main.c + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -mno-default-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto -o ${OBJECTDIR}/src/main.p1 src/main.c @-${MV} ${OBJECTDIR}/src/main.d ${OBJECTDIR}/src/main.p1.d @${FIXDEPS} ${OBJECTDIR}/src/main.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ +${OBJECTDIR}/src/HCMS2913.p1: src/HCMS2913.c nbproject/Makefile-${CND_CONF}.mk + @${MKDIR} "${OBJECTDIR}/src" + @${RM} ${OBJECTDIR}/src/HCMS2913.p1.d + @${RM} ${OBJECTDIR}/src/HCMS2913.p1 + ${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=$(CND_CONF) -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -mno-default-config-bits $(COMPARISON_BUILD) -std=c99 -gdwarf-3 -mstack=compiled:auto:auto -o ${OBJECTDIR}/src/HCMS2913.p1 src/HCMS2913.c + @-${MV} ${OBJECTDIR}/src/HCMS2913.d ${OBJECTDIR}/src/HCMS2913.p1.d + @${FIXDEPS} ${OBJECTDIR}/src/HCMS2913.p1.d $(SILENT) -rsi ${MP_CC_DIR}../ + endif # ------------------------------------------------------------------------------------ @@ -140,13 +156,15 @@ endif ifeq ($(TYPE_IMAGE), DEBUG_RUN) ${DISTDIR}/picamp.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk ../picamp-rotary.X/dist/default/debug/picamp-rotary.X.a ../picamp-potentiometer.X/dist/default/debug/picamp-potentiometer.X.a @${MKDIR} ${DISTDIR} - ${MP_CC} $(MP_EXTRA_LD_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -Wl,-Map=${DISTDIR}/picamp.X.${IMAGE_TYPE}.map -D__DEBUG=1 -mdebugger=pickit5 -DXPRJ_default=$(CND_CONF) -Wl,--defsym=__MPLAB_BUILD=1 -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -mno-default-config-bits -std=c99 -gdwarf-3 -mstack=compiled:auto:auto -mrom=default,-1f00-1ffe -mram=default,-0-0,-70-70,-80-80,-f0-f0,-100-100,-170-170,-180-180,-1e5-1f0 $(COMPARISON_BUILD) -Wl,--memorysummary,${DISTDIR}/memoryfile.xml -o ${DISTDIR}/picamp.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} ..\picamp-rotary.X\dist\default\debug\picamp-rotary.X.a ..\picamp-potentiometer.X\dist\default\debug\picamp-potentiometer.X.a + ${MP_CC} $(MP_EXTRA_LD_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -Wl,-Map=${DISTDIR}/picamp.X.${IMAGE_TYPE}.map -D__DEBUG=1 -mdebugger=none -DXPRJ_default=$(CND_CONF) -Wl,--defsym=__MPLAB_BUILD=1 -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -mno-default-config-bits -std=c99 -gdwarf-3 -mstack=compiled:auto:auto -mrom=default,-1f00-1ffe -mram=default,-0-0,-70-70,-80-80,-f0-f0,-100-100,-170-170,-180-180,-1e5-1f0 $(COMPARISON_BUILD) -Wl,--memorysummary,${DISTDIR}/memoryfile.xml -o ${DISTDIR}/picamp.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} ../picamp-rotary.X/dist/default/debug/picamp-rotary.X.a ../picamp-potentiometer.X/dist/default/debug/picamp-potentiometer.X.a @${RM} ${DISTDIR}/picamp.X.${IMAGE_TYPE}.hex + else ${DISTDIR}/picamp.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES} nbproject/Makefile-${CND_CONF}.mk ../picamp-rotary.X/dist/default/production/picamp-rotary.X.a ../picamp-potentiometer.X/dist/default/production/picamp-potentiometer.X.a @${MKDIR} ${DISTDIR} - ${MP_CC} $(MP_EXTRA_LD_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -Wl,-Map=${DISTDIR}/picamp.X.${IMAGE_TYPE}.map -DXPRJ_default=$(CND_CONF) -Wl,--defsym=__MPLAB_BUILD=1 -mdfp="${DFP_DIR}/xc8" -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -mno-default-config-bits -std=c99 -gdwarf-3 -mstack=compiled:auto:auto $(COMPARISON_BUILD) -Wl,--memorysummary,${DISTDIR}/memoryfile.xml -o ${DISTDIR}/picamp.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} ..\picamp-rotary.X\dist\default\production\picamp-rotary.X.a ..\picamp-potentiometer.X\dist\default\production\picamp-potentiometer.X.a + ${MP_CC} $(MP_EXTRA_LD_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -Wl,-Map=${DISTDIR}/picamp.X.${IMAGE_TYPE}.map -DXPRJ_default=$(CND_CONF) -Wl,--defsym=__MPLAB_BUILD=1 -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -mno-default-config-bits -std=c99 -gdwarf-3 -mstack=compiled:auto:auto $(COMPARISON_BUILD) -Wl,--memorysummary,${DISTDIR}/memoryfile.xml -o ${DISTDIR}/picamp.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} ${OBJECTFILES_QUOTED_IF_SPACED} ../picamp-rotary.X/dist/default/production/picamp-rotary.X.a ../picamp-potentiometer.X/dist/default/production/picamp-potentiometer.X.a + endif diff --git a/picamp.X/nbproject/Makefile-genesis.properties b/picamp.X/nbproject/Makefile-genesis.properties index e4eac8e..70b1f7a 100644 --- a/picamp.X/nbproject/Makefile-genesis.properties +++ b/picamp.X/nbproject/Makefile-genesis.properties @@ -1,13 +1,13 @@ # -#Wed Mar 06 12:04:57 CET 2024 -default.languagetoolchain.version=2.45 -default.Pack.dfplocation=C\:\\Program Files\\Microchip\\MPLABX\\v6.15\\packs\\Microchip\\PIC16Fxxx_DFP\\1.4.149 -default.com-microchip-mplab-mdbcore-PK5Tool-PK5ToolImpl.md5=723771b957e0f1e0ec1761a42d8bb5e8 +#Wed Mar 06 16:07:14 CET 2024 +default.languagetoolchain.version=2.46 +default.Pack.dfplocation= conf.ids=default -default.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc8\\v2.45\\bin -host.id=2cdp-lqgb-i2 -configurations-xml=c900431f81c44a9b6a444850fdc0f22a -com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=e62346c0c0ecee2637e613b49cb7b7fa -default.com-microchip-mplab-nbide-toolchain-xc8-XC8LanguageToolchain.md5=486b02ed36e5bdffb1f797e38fa058e5 -proj.dir=C\:\\Users\\wesse\\Downloads\\PICAMP-bbcdff189bdb53bccc968032c5cc010f25c24f1c\\picamp.X -host.platform=windows +default.languagetoolchain.dir=/home/burhan/.local/share/microchip/xc8/v2.46/bin +host.id=1odb-89vf-4o +configurations-xml=135dbe756f138e4ec6c0a089be24747b +com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=f612087c95360c842296d189edfe3321 +default.com-microchip-mplab-nbide-toolchain-xc8-XC8LanguageToolchain.md5=bf89cdcdd6c0a49174fe4b605ef2b42d +proj.dir=/home/burhan/Desktop/PICAMP-main/picamp.X +default.com-microchip-mplab-mdbcore-pk4hybrid-Pk4HybridTooImpl.md5=916239579355067caf3c3a7796c790dc +host.platform=linux diff --git a/picamp.X/nbproject/Makefile-local-default.mk b/picamp.X/nbproject/Makefile-local-default.mk index 2ac66a5..305de11 100644 --- a/picamp.X/nbproject/Makefile-local-default.mk +++ b/picamp.X/nbproject/Makefile-local-default.mk @@ -14,24 +14,22 @@ # You can invoke make with the values of the macros: # $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ... # -SHELL=cmd.exe -PATH_TO_IDE_BIN=C:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/ +PATH_TO_IDE_BIN=/home/burhan/.local/share/microchip/mplabx/v6.20/mplab_platform/platform/../mplab_ide/modules/../../bin/ # Adding MPLAB X bin directory to path. -PATH:=C:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/:$(PATH) +PATH:=/home/burhan/.local/share/microchip/mplabx/v6.20/mplab_platform/platform/../mplab_ide/modules/../../bin/:$(PATH) # Path to java used to run MPLAB X when this makefile was created -MP_JAVA_PATH="C:\Program Files\Microchip\MPLABX\v6.15\sys\java\zulu8.64.0.19-ca-fx-jre8.0.345-win_x64/bin/" +MP_JAVA_PATH="/home/burhan/.local/share/microchip/mplabx/v6.20/sys/java/zulu8.64.0.19-ca-fx-jre8.0.345-linux_x64/bin/" OS_CURRENT="$(shell uname -s)" -MP_CC="C:\Program Files\Microchip\xc8\v2.45\bin\xc8-cc.exe" +MP_CC="/home/burhan/.local/share/microchip/xc8/v2.46/bin/xc8-cc" # MP_CPPC is not defined # MP_BC is not defined -MP_AS="C:\Program Files\Microchip\xc8\v2.45\bin\xc8-cc.exe" -MP_LD="C:\Program Files\Microchip\xc8\v2.45\bin\xc8-cc.exe" -MP_AR="C:\Program Files\Microchip\xc8\v2.45\bin\xc8-ar.exe" -DEP_GEN=${MP_JAVA_PATH}java -jar "C:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/extractobjectdependencies.jar" -MP_CC_DIR="C:\Program Files\Microchip\xc8\v2.45\bin" +MP_AS="/home/burhan/.local/share/microchip/xc8/v2.46/bin/xc8-cc" +MP_LD="/home/burhan/.local/share/microchip/xc8/v2.46/bin/xc8-cc" +MP_AR="/home/burhan/.local/share/microchip/xc8/v2.46/bin/xc8-ar" +DEP_GEN=${MP_JAVA_PATH}java -jar "/home/burhan/.local/share/microchip/mplabx/v6.20/mplab_platform/platform/../mplab_ide/modules/../../bin/extractobjectdependencies.jar" +MP_CC_DIR="/home/burhan/.local/share/microchip/xc8/v2.46/bin" # MP_CPPC_DIR is not defined # MP_BC_DIR is not defined -MP_AS_DIR="C:\Program Files\Microchip\xc8\v2.45\bin" -MP_LD_DIR="C:\Program Files\Microchip\xc8\v2.45\bin" -MP_AR_DIR="C:\Program Files\Microchip\xc8\v2.45\bin" -DFP_DIR=C:/Program Files/Microchip/MPLABX/v6.15/packs/Microchip/PIC16Fxxx_DFP/1.4.149 +MP_AS_DIR="/home/burhan/.local/share/microchip/xc8/v2.46/bin" +MP_LD_DIR="/home/burhan/.local/share/microchip/xc8/v2.46/bin" +MP_AR_DIR="/home/burhan/.local/share/microchip/xc8/v2.46/bin" diff --git a/picamp.X/nbproject/configurations.xml b/picamp.X/nbproject/configurations.xml index dfe2d12..6944ca5 100644 --- a/picamp.X/nbproject/configurations.xml +++ b/picamp.X/nbproject/configurations.xml @@ -9,8 +9,15 @@ include/initialisation.h include/rotary_encoder.h include/potentiometer.h + include/HCMS2913.h + include/ascii.h + + Makefile + @@ -21,13 +28,9 @@ src/initialisation.c src/main.c + src/HCMS2913.c - - Makefile - . @@ -40,10 +43,10 @@ PIC16F887 - PK5Tool + pk4hybrid XC8 - 2.45 - 3 + 2.46 + 2 diff --git a/picamp.X/nbproject/private/SuppressibleMessageMemo.properties b/picamp.X/nbproject/private/SuppressibleMessageMemo.properties new file mode 100644 index 0000000..355dead --- /dev/null +++ b/picamp.X/nbproject/private/SuppressibleMessageMemo.properties @@ -0,0 +1,3 @@ +# +#Wed Mar 06 16:15:12 CET 2024 +PICkit\ 4/CHECK_4_HIGH_VOLTAGE_VPP=true diff --git a/picamp.X/nbproject/private/configurations.xml b/picamp.X/nbproject/private/configurations.xml index 1ddea8d..51cfd84 100644 --- a/picamp.X/nbproject/private/configurations.xml +++ b/picamp.X/nbproject/private/configurations.xml @@ -4,8 +4,8 @@ 0 - :=MPLABComm-USB-Microchip:=<vid>04D8:=<pid>9036:=<rev>0100:=<man>Microchip Technology Incorporated:=<prod>MPLAB PICkit 5:=<sn>020026702RYN005435:=<drv>x:=<xpt>b:=end - C:\Program Files\Microchip\xc8\v2.45\bin + :=MPLABComm-USB-Microchip:=<vid>04D8:=<pid>9012:=<rev>0100:=<man>Microchip Technology Incorporated:=<prod>MPLAB PICkit 4:=<sn>BUR212676149:=<drv>x:=<xpt>b:=end + /home/burhan/.local/share/microchip/xc8/v2.46/bin place holder 1 place holder 2 diff --git a/picamp.X/nbproject/private/private.xml b/picamp.X/nbproject/private/private.xml index 3779d1e..927cf0e 100644 --- a/picamp.X/nbproject/private/private.xml +++ b/picamp.X/nbproject/private/private.xml @@ -3,7 +3,7 @@ - file:/C:/Users/wesse/Downloads/PICAMP-bbcdff189bdb53bccc968032c5cc010f25c24f1c/picamp.X/include/rotary_encoder.h + file:/home/burhan/Desktop/PICAMP-main/picamp.X/src/main.c diff --git a/picamp.X/src/HCMS2913.c b/picamp.X/src/HCMS2913.c new file mode 100644 index 0000000..9b409bf --- /dev/null +++ b/picamp.X/src/HCMS2913.c @@ -0,0 +1,152 @@ +#include "../include/HCMS2913.h" +#include "../include/ascii.h" +#include "../include/config.h" + +void HCMS_spi_init(sspmode mst_slv_oscdiv, rxsmpmoment sdi_rx_smp, clkpol clock_pol, txclkedge sdo_tx_edge) { + //Todo Burhan: remove this dirty fix + TRISC = 0; + TRISD = 0; + PORTC = 0; + PORTD = 0; + // 1. Set `SSPM' datafield (SPI master / slave mode and prescaler + // selection) + SSPM = mst_slv_oscdiv; + // 2. Set SDO_DDIR for SDO to behave as an output + SDO_DDIR = 0; + SDI_DDIR = 0; + // 3. If a slave mode was selected: + // 3a. The SMP bit MUST remain clear (see datasheet) + // 3b. Set SCK_DDIR for SCK to behave like an input + // 3c. The data line `idle state' (CKP bit) must match the + // master's clock idle state. To achieve this, set the + // CKP bit to whatever value can be read on the SCK_PIN. + // 3d. Set up the recieve interrupt (PIE1.SSPIE). Don't + // forget PEIE and GIE (interrupt masking hierarchy). + if (mst_slv_oscdiv > 3) { + SMP = 0; + SCK_DDIR = 1; + CKP = SCK_PIN; + }// 4. Else (if a master mode was selected): + // 4a. The SMP bit needs to be set according to argument + // `sdi_rx_smp' + // 4b. Set SCK_DDIR for SCK to behave like an output + // 4c. The data line `idle state' (CKP bit) needs to be set + // according to argument `clock_pol' + else { + SMP = sdi_rx_smp; + SCK_DDIR = 0; + CKP = clock_pol; + } + //SSPIE = 1; + // 5. Set the CKE bit according to the `sdo_tx_edge' and `clock_pol' + // parameters (i.e. if `sdo_tx_edge' and `clock_pol' select + // mode 0 (CKE 1, CKP 0), then the CKE bit must be set, etc. - + // (handle all SPI modes ... !) + CKE = sdo_tx_edge; + if (clock_pol == 1 || SCK_PIN == 1) { + CKE ^= 1; + } + // 6. Enable the SPI module (by setting SSPEN bit). + SSPEN = 1; +} + +void delayNanoSeconds(unsigned long nanoSeconds); + +#define BUFFER SSPBUF + +void spi_transmit(char c) { + // FILL. THAT. BUFFER. + BUFFER = c; +} + +void setpin(volatile unsigned char *port, unsigned char pin, int value) { + if (value == 0) + *port &= ~(1 << pin); + else + *port |= 1 << pin; +} + +void HCMS_init(volatile unsigned char *port, uint8_t _RESET, uint8_t _CENABLE, uint8_t _RSELECT) { + setpin(port, _RESET, 0); + delayNanoSeconds(200); + setpin(port, _RESET, 1); + + setpin(port, _RSELECT, 0); + setpin(port, _CENABLE, 0); + for (int i = 0; i < 40; i++) { + spi_transmit(0b00000000); + delayNanoSeconds(200); + } + setpin(port, _CENABLE, 1); + + setpin(port, _RSELECT, 1); + setpin(port, _CENABLE, 0); + spi_transmit(0b01111111); + delayNanoSeconds(200); + setpin(port, _CENABLE, 1); + setpin(port, _CENABLE, 0); + spi_transmit(0b10000000); + delayNanoSeconds(200); + setpin(port, _CENABLE, 1); + + setpin(port, _CENABLE, 0); + spi_transmit(0b01111111); + delayNanoSeconds(200); + setpin(port, _CENABLE, 1); + setpin(port, _CENABLE, 0); + spi_transmit(0b10000000); + delayNanoSeconds(200); + setpin(port, _CENABLE, 1); + + setpin(port, _RSELECT, 0); + +} + +void load_buffer(int character, int position, char *bufferSelected) { + for (int i = 0; i < 5; i++) { + bufferSelected[position * 5 + i] = ascii[character][i]; + } +} + +int TableLookup(char lookup) { + for (int i = 0; i < 128; ++i) { + if (ascii[i][5] == lookup) { + return i; + } + } + return 127; // Character not found in the ASCII table +} + +void HCMS_load_word(const char *_string, char *bufferSelected, volatile unsigned char *port, uint8_t _CENABLE) { + short length = 0; + setpin(port, _CENABLE, 0); + + while (_string[length] != '\0' && length < 8) { + load_buffer(TableLookup(_string[length]), length, bufferSelected); + length++; + } + + while (length < 8) { + load_buffer(TableLookup(' '), length, bufferSelected); + length++; + } + + for (int i = 0; i < 40; i++) { + spi_transmit(bufferSelected[i]); + } + + delayNanoSeconds(200); + setpin(port, _CENABLE, 1); +} + +void delayNanoSeconds(unsigned long nanoSeconds) { + const unsigned long cyclesPerNanoSecond = 10; + + unsigned long cyclesToDelay = nanoSeconds * cyclesPerNanoSecond; + + TMR1 = 0; + + while (cyclesToDelay > 0) { + cyclesToDelay--; + } +} diff --git a/picamp.X/src/main.c b/picamp.X/src/main.c index 953216b..22f1295 100644 --- a/picamp.X/src/main.c +++ b/picamp.X/src/main.c @@ -6,6 +6,7 @@ #include "../include/initialisation.h" #include "../include/rotary_encoder.h" #include "../include/potentiometer.h" +#include "../include/HCMS2913.h" // Rotary encoder position char count = 0; @@ -15,67 +16,86 @@ void pic_init(void); void pic_loop(void); void main(void) { - // Do all initialisation here - pic_init(); - // Start indefinite program loop - pic_loop(); + // Do all initialisation here + pic_init(); + // Start indefinite program loop + pic_loop(); } void pic_loop(void) { - // todo(burhan): WRITE_TO_LED(VOL: (read_pot() * 100) / 1023); - // todo: Remove code for LED showing after screen usage; - // Initialize potentiometer step array - int stepArray[LED_AMOUNT] = {0}; - populate_step_array(stepArray, LED_AMOUNT, POT_LIMIT); + int stepArray[LED_AMOUNT] = {0}; + populate_step_array(stepArray, LED_AMOUNT, POT_LIMIT); + short calcVolume; - while (1) { - if (count == 0) { - // Parse result from potentiometer - int result = read_pot(); + while (1) { + HCMS_load_word(selLoadString, selectBuffer, &PORTD, CENABLE_PINNUM); + HCMS_load_word(volLoadString, volumeBuffer, &PORTC, CENABLE_PINNUM); + // if (count == 0) { + // Parse result from potentiometer + int result = read_pot(); - // Loop through all `stepArray`, check if the output of the potmeter - // (on `ADRES`) falls inbetween the steps - `DEADZONE`, if so execute - // An OR/AND bitshift operation in order to turn on the corresponding - // LED on `PORTA`. - for (int i = 0; i < LED_AMOUNT; i++) { - if (result > (stepArray[i] - DEADZONE)) { - PORTA = (unsigned char)(PORTA & ~(1 << i)); - } else if (result <= (stepArray[i] - DEADZONE)) { - PORTA = (unsigned char)(PORTA | (1 << i)); + // Loop through all `stepArray`, check if the output of the potmeter + // (on `ADRES`) falls inbetween the steps - `DEADZONE`, if so execute + // An OR/AND bitshift operation in order to turn on the corresponding + // LED on `PORTA`. + // for (int i = 0; i < LED_AMOUNT; i++) { + // if (result > (stepArray[i] - DEADZONE)) { + // PORTA = (unsigned char) (PORTA & ~(1 << i)); + // } else if (result <= (stepArray[i] - DEADZONE)) { + // PORTA = (unsigned char) (PORTA | (1 << i)); + // } + // } + // } + calcVolume = result / POT_STEP_AMOUNT; + + if (calcVolume > 100) { + calcVolume = 100; } - } + if (calcVolume < 0) { + calcVolume = 0; + } + + selLoadString[6] = '0' + count / 10; + selLoadString[7] = '0' + (count % 10); + + volLoadString[5] = '0' + (char) (calcVolume / 100); + volLoadString[6] = '0' + (char) (calcVolume / 10 > 9 ? 0 : calcVolume / 10); + volLoadString[7] = '0' + (char) (calcVolume % 10); } - } } void pic_init(void) { - OscillatorConfig osc_config = { INTERNAL_CLK, KHZ500, INTERNAL_FOSC }; - init_osc(osc_config); + OscillatorConfig osc_config = {INTERNAL_CLK, MHZ008, INTERNAL_FOSC}; + init_osc(osc_config); - PinConfig pin_config[] = { { &TRISA, &PORTA, &ANSEL, OUTPUT, DIGITAL } }; - init_gpio(pin_config, 1); + PinConfig pin_config[] = { + { &TRISA, &PORTA, &ANSEL, OUTPUT, DIGITAL} + }; + init_gpio(pin_config, 1); - // Moved to rotary_encoder.c - // InterruptConfig int_config = { GIE_ENABLED, EINT_ENABLED, PEIE_ENABLED, - // T0INT_ENABLED, RBINT_ENABLED, FALLING_EDGE }; - // init_int(int_config); + // Moved to rotary_encoder.c + // InterruptConfig int_config = { GIE_ENABLED, EINT_ENABLED, PEIE_ENABLED, + // T0INT_ENABLED, RBINT_ENABLED, FALLING_EDGE }; + // init_int(int_config); - init_rotary(IOCRB4, IOCRB5, TRISBbits.TRISB4, TRISBbits.TRISB5); - init_pot(ADC_AN07, TRISEbits.TRISE2); + init_rotary(IOCRB4, IOCRB5, TRISBbits.TRISB4, TRISBbits.TRISB5); + init_pot(ADC_AN07, TRISEbits.TRISE2); + HCMS_spi_init(MST_OSC_DIV_04, SMP1_SDI_END, CKP0_CPOL0_IDLE_LOW, CKE1_CPHA0_TRSMIT_ACT2IDL); + HCMS_init(&PORTC, RESET_PINNUM, CENABLE_PINNUM, RSELECT_PINNUM); + HCMS_init(&PORTD, RESET_PINNUM, CENABLE_PINNUM, RSELECT_PINNUM); } // #[routine:interrupt_service] + void __interrupt() isr(void) { - if (INTCONbits.RBIF == INT_OCCURED) { - // Parse rotary changes into `count`, shift it into `PORTA` - parse_rotary(REA, REB, &count, LED_AMOUNT, 0); + if (INTCONbits.RBIF == INT_OCCURED) { + // Parse rotary changes into `count`, shift it into `PORTA` + parse_rotary(REA, REB, &count, LED_AMOUNT, 0); - // todo(burhan): WRITE_TO_LED(IN: count); - // todo: Remove code for LED showing after screen usage; - PORTA = (unsigned char) (~(1 << count)); + //PORTA = (unsigned char) (~(1 << count)); - // Clear the Port B change interrupt flag - INTCONbits.RBIF = INT_AWAITING; - INTCONbits.INTF = INT_AWAITING; - } + // Clear the Port B change interrupt flag + INTCONbits.RBIF = INT_AWAITING; + INTCONbits.INTF = INT_AWAITING; + } }