From 319b3a68ee64d8549524b53fba2934e94c07d19e Mon Sep 17 00:00:00 2001 From: Joshua Drake Date: Tue, 23 Apr 2024 01:27:55 -0500 Subject: Added files that were forgotten in previous commits. --- dist/default/production/memoryfile.xml | 18 + dist/default/production/resbox.X.production.elf | Bin 0 -> 126486 bytes dist/default/production/resbox.X.production.hex | 771 ++++++++++++ dist/default/production/resbox.X.production.map | 1506 +++++++++++++++++++++++ mcc_generated_files/clock.c | 72 ++ mcc_generated_files/clock.h | 80 ++ mcc_generated_files/interrupt_manager.c | 62 + mcc_generated_files/interrupt_manager.h | 167 +++ mcc_generated_files/mcc.c | 47 + mcc_generated_files/mcc.h | 65 + mcc_generated_files/mssp1_spi.c | 148 +++ mcc_generated_files/mssp1_spi.h | 254 ++++ mcc_generated_files/mssp2_i2c.c | 386 ++++++ mcc_generated_files/mssp2_i2c.h | 488 ++++++++ mcc_generated_files/pin_manager.c | 92 ++ mcc_generated_files/pin_manager.h | 1113 +++++++++++++++++ mcc_generated_files/system.c | 106 ++ mcc_generated_files/system.h | 70 ++ mcc_generated_files/tmr1.c | 219 ++++ mcc_generated_files/tmr1.h | 331 +++++ mcc_generated_files/traps.c | 122 ++ mcc_generated_files/traps.h | 86 ++ 22 files changed, 6203 insertions(+) create mode 100644 dist/default/production/memoryfile.xml create mode 100755 dist/default/production/resbox.X.production.elf create mode 100644 dist/default/production/resbox.X.production.hex create mode 100644 dist/default/production/resbox.X.production.map create mode 100644 mcc_generated_files/clock.c create mode 100644 mcc_generated_files/clock.h create mode 100644 mcc_generated_files/interrupt_manager.c create mode 100644 mcc_generated_files/interrupt_manager.h create mode 100644 mcc_generated_files/mcc.c create mode 100644 mcc_generated_files/mcc.h create mode 100644 mcc_generated_files/mssp1_spi.c create mode 100644 mcc_generated_files/mssp1_spi.h create mode 100644 mcc_generated_files/mssp2_i2c.c create mode 100644 mcc_generated_files/mssp2_i2c.h create mode 100644 mcc_generated_files/pin_manager.c create mode 100644 mcc_generated_files/pin_manager.h create mode 100644 mcc_generated_files/system.c create mode 100644 mcc_generated_files/system.h create mode 100644 mcc_generated_files/tmr1.c create mode 100644 mcc_generated_files/tmr1.h create mode 100644 mcc_generated_files/traps.c create mode 100644 mcc_generated_files/traps.h diff --git a/dist/default/production/memoryfile.xml b/dist/default/production/memoryfile.xml new file mode 100644 index 0000000..f45eea2 --- /dev/null +++ b/dist/default/production/memoryfile.xml @@ -0,0 +1,18 @@ + + + + + + bytes + 2048 + 92 + 1956 + + + bytes + 16128 + 3801 + 12327 + + + diff --git a/dist/default/production/resbox.X.production.elf b/dist/default/production/resbox.X.production.elf new file mode 100755 index 0000000..bd61075 Binary files /dev/null and b/dist/default/production/resbox.X.production.elf differ diff --git a/dist/default/production/resbox.X.production.hex b/dist/default/production/resbox.X.production.hex new file mode 100644 index 0000000..4c99e38 --- /dev/null +++ b/dist/default/production/resbox.X.production.hex @@ -0,0 +1,771 @@ +:020000040000fa +:080000000002040000000000f2 +:020000040000fa +:040008005e04000092 +:020000040000fa +:04000c00ac03000041 +:020000040000fa +:04001000ee030000fb +:020000040000fa +:04001400cc03000019 +:020000040000fa +:040018000e040000d2 +:020000040000fa +:04001c005e0400007e +:020000040000fa +:040020005e0400007a +:020000040000fa +:040024005e04000076 +:020000040000fa +:040028005e04000072 +:020000040000fa +:04002c005e0400006e +:020000040000fa +:040030005e0400006a +:020000040000fa +:040034002e04000096 +:020000040000fa +:040038005e04000062 +:020000040000fa +:04003c005e0400005e +:020000040000fa +:040040005e0400005a +:020000040000fa +:040044005e04000056 +:020000040000fa +:040048005e04000052 +:020000040000fa +:04004c005e0400004e +:020000040000fa +:040050005e0400004a +:020000040000fa +:040054005e04000046 +:020000040000fa +:040058005e04000042 +:020000040000fa +:04005c005e0400003e +:020000040000fa +:040060005e0400003a +:020000040000fa +:040064005e04000036 +:020000040000fa +:040068005e04000032 +:020000040000fa +:04006c005e0400002e +:020000040000fa +:040070005e0400002a +:020000040000fa +:040074005e04000026 +:020000040000fa +:040078005e04000022 +:020000040000fa +:04007c005e0400001e +:020000040000fa +:040080005e0400001a +:020000040000fa +:040084005e04000016 +:020000040000fa +:040088005e04000012 +:020000040000fa +:04008c005e0400000e +:020000040000fa +:040090005e0400000a +:020000040000fa +:040094005e04000006 +:020000040000fa +:040098005e04000002 +:020000040000fa +:04009c005e040000fe +:020000040000fa +:0400a0005e040000fa +:020000040000fa +:0400a4005e040000f6 +:020000040000fa +:0400a8005e040000f2 +:020000040000fa +:0400ac005e040000ee +:020000040000fa +:0400b0005e040000ea +:020000040000fa +:0400b4005e040000e6 +:020000040000fa +:0400b8005e040000e2 +:020000040000fa +:0400bc005e040000de +:020000040000fa +:0400c0005e040000da +:020000040000fa +:0400c4005e040000d6 +:020000040000fa +:0400c8005e040000d2 +:020000040000fa +:0400cc005e040000ce +:020000040000fa +:0400d0005e040000ca +:020000040000fa +:0400d4005e040000c6 +:020000040000fa +:0400d8005e040000c2 +:020000040000fa +:0400dc005e040000be +:020000040000fa +:0400e0005e040000ba +:020000040000fa +:0400e4005e040000b6 +:020000040000fa +:0400e8005e040000b2 +:020000040000fa +:0400ec00cc02000042 +:020000040000fa +:0400f0005e040000aa +:020000040000fa +:0400f4005e040000a6 +:020000040000fa +:0400f8005e040000a2 +:020000040000fa +:0400fc005e0400009e +:020000040000fa +:040100005e04000099 +:020000040000fa +:040104005e04000095 +:020000040000fa +:040108005e04000091 +:020000040000fa +:04010c005e0400008d +:020000040000fa +:040110005e04000089 +:020000040000fa +:040114005e04000085 +:020000040000fa +:040118005e04000081 +:020000040000fa +:04011c005e0400007d +:020000040000fa +:040120005e04000079 +:020000040000fa +:040124005e04000075 +:020000040000fa +:040128005e04000071 +:020000040000fa +:04012c005e0400006d +:020000040000fa +:040130005e04000069 +:020000040000fa +:040134005e04000065 +:020000040000fa +:040138005e04000061 +:020000040000fa +:04013c005e0400005d +:020000040000fa +:040140005e04000059 +:020000040000fa +:040144005e04000055 +:020000040000fa +:040148005e04000051 +:020000040000fa +:04014c005e0400004d +:020000040000fa +:040150005e04000049 +:020000040000fa +:040154005e04000045 +:020000040000fa +:040158005e04000041 +:020000040000fa +:04015c005e0400003d +:020000040000fa +:040160005e04000039 +:020000040000fa +:040164005e04000035 +:020000040000fa +:040168005e04000031 +:020000040000fa +:04016c005e0400002d +:020000040000fa +:040170005e04000029 +:020000040000fa +:040174005e04000025 +:020000040000fa +:040178005e04000021 +:020000040000fa +:04017c005e0400001d +:020000040000fa +:040180005e04000019 +:020000040000fa +:040184005e04000015 +:020000040000fa +:040188005e04000011 +:020000040000fa +:04018c005e0400000d +:020000040000fa +:040190005e04000009 +:020000040000fa +:040194005e04000005 +:020000040000fa +:040198005e04000001 +:020000040000fa +:04019c005e040000fd +:020000040000fa +:0401a0005e040000f9 +:020000040000fa +:0401a4005e040000f5 +:020000040000fa +:0401a8005e040000f1 +:020000040000fa +:0401ac005e040000ed +:020000040000fa +:040208005e04000090 +:020000040000fa +:04020c00ac0300003f +:020000040000fa +:04021000ee030000f9 +:020000040000fa +:04021400cc03000017 +:020000040000fa +:040218000e040000d0 +:020000040000fa +:04021c005e0400007c +:020000040000fa +:040220005e04000078 +:020000040000fa +:040224005e04000074 +:020000040000fa +:040228005e04000070 +:020000040000fa +:04022c005e0400006c +:020000040000fa +:040230005e04000068 +:020000040000fa +:040234002e04000094 +:020000040000fa +:040238005e04000060 +:020000040000fa +:04023c005e0400005c +:020000040000fa +:040240005e04000058 +:020000040000fa +:040244005e04000054 +:020000040000fa +:040248005e04000050 +:020000040000fa +:04024c005e0400004c +:020000040000fa +:040250005e04000048 +:020000040000fa +:040254005e04000044 +:020000040000fa +:040258005e04000040 +:020000040000fa +:04025c005e0400003c +:020000040000fa +:040260005e04000038 +:020000040000fa +:040264005e04000034 +:020000040000fa +:040268005e04000030 +:020000040000fa +:04026c005e0400002c +:020000040000fa +:040270005e04000028 +:020000040000fa +:040274005e04000024 +:020000040000fa +:040278005e04000020 +:020000040000fa +:04027c005e0400001c +:020000040000fa +:040280005e04000018 +:020000040000fa +:040284005e04000014 +:020000040000fa +:040288005e04000010 +:020000040000fa +:04028c005e0400000c +:020000040000fa +:040290005e04000008 +:020000040000fa +:040294005e04000004 +:020000040000fa +:040298005e04000000 +:020000040000fa +:04029c005e040000fc +:020000040000fa +:0402a0005e040000f8 +:020000040000fa +:0402a4005e040000f4 +:020000040000fa +:0402a8005e040000f0 +:020000040000fa +:0402ac005e040000ec +:020000040000fa +:0402b0005e040000e8 +:020000040000fa +:0402b4005e040000e4 +:020000040000fa +:0402b8005e040000e0 +:020000040000fa +:0402bc005e040000dc +:020000040000fa +:0402c0005e040000d8 +:020000040000fa +:0402c4005e040000d4 +:020000040000fa +:0402c8005e040000d0 +:020000040000fa +:0402cc005e040000cc +:020000040000fa +:0402d0005e040000c8 +:020000040000fa +:0402d4005e040000c4 +:020000040000fa +:0402d8005e040000c0 +:020000040000fa +:0402dc005e040000bc +:020000040000fa +:0402e0005e040000b8 +:020000040000fa +:0402e4005e040000b4 +:020000040000fa +:0402e8005e040000b0 +:020000040000fa +:0402ec00cc02000040 +:020000040000fa +:0402f0005e040000a8 +:020000040000fa +:0402f4005e040000a4 +:020000040000fa +:0402f8005e040000a0 +:020000040000fa +:0402fc005e0400009c +:020000040000fa +:040300005e04000097 +:020000040000fa +:040304005e04000093 +:020000040000fa +:040308005e0400008f +:020000040000fa +:04030c005e0400008b +:020000040000fa +:040310005e04000087 +:020000040000fa +:040314005e04000083 +:020000040000fa +:040318005e0400007f +:020000040000fa +:04031c005e0400007b +:020000040000fa +:040320005e04000077 +:020000040000fa +:040324005e04000073 +:020000040000fa +:040328005e0400006f +:020000040000fa +:04032c005e0400006b +:020000040000fa +:040330005e04000067 +:020000040000fa +:040334005e04000063 +:020000040000fa +:040338005e0400005f +:020000040000fa +:04033c005e0400005b +:020000040000fa +:040340005e04000057 +:020000040000fa +:040344005e04000053 +:020000040000fa +:040348005e0400004f +:020000040000fa +:04034c005e0400004b +:020000040000fa +:040350005e04000047 +:020000040000fa +:040354005e04000043 +:020000040000fa +:040358005e0400003f +:020000040000fa +:04035c005e0400003b +:020000040000fa +:040360005e04000037 +:020000040000fa +:040364005e04000033 +:020000040000fa +:040368005e0400002f +:020000040000fa +:04036c005e0400002b +:020000040000fa +:040370005e04000027 +:020000040000fa +:040374005e04000023 +:020000040000fa +:040378005e0400001f +:020000040000fa +:04037c005e0400001b +:020000040000fa +:040380005e04000017 +:020000040000fa +:040384005e04000013 +:020000040000fa +:040388005e0400000f +:020000040000fa +:04038c005e0400000b +:020000040000fa +:040390005e04000007 +:020000040000fa +:040394005e04000003 +:020000040000fa +:040398005e040000ff +:020000040000fa +:04039c005e040000fb +:020000040000fa +:0403a0005e040000f7 +:020000040000fa +:0403a4005e040000f3 +:020000040000fa +:0403a8005e040000ef +:020000040000fa +:0403ac005e040000eb +:020000040000fa +:10040000cf8520000eff20000e01880000000000b4 +:10041000000020000000e000020032000001200087 +:100420002002880014000700260107000000e000f9 +:1004300003003a0060b420000100200002003700f1 +:100440000000200001002000810f70000100320038 +:1004500014000700000020000000e000020032004d +:100460000000020000000000be0a020000000000c0 +:100470000040da000000fe004440a9000000200017 +:100480000000e0000300320000002000a00188000e +:100490004440a800000006008a1f78008b1f7800e7 +:1004a0000000060091018800800478000000eb0045 +:1004b0001a003700e284440032a0b4009905ba0063 +:1004c000e284440032a0b4009906ba00e2844400f9 +:1004d00032a0b4000006eb00476fde00fd07b2005b +:1004e000636ce10003003a00ebff07000000eb0043 +:1004f0000a003700606ce10004003a00005deb0088 +:100500008b05e900fdff3e00040037006168e10053 +:10051000010032000086eb000b00070019c7ba008b +:100520001905ba000e04e00003003a000a00e000da +:10053000e0ff3a0000000600fe07b2009e018800be +:100540008a047800f5ff3700395dba008b05e900b1 +:100550000c003200295dba008b05e900080032006a +:100560000c00e00003003a00e284440032a0b40032 +:10057000f5ff370019ddba008b05e900faff3a00f4 +:100580008904e800e184440032a0b40000000600c1 +:100590000000000000000000809fbe00821f780065 +:1005a0000000fa0050048000620060000000e000db +:1005b00046003200c0108000640060000000e000cf +:1005c00007003200801080000040780040e8b7004b +:1005d00042c8bf000080fb00801088001282a80083 +:1005e000c0108000640060000000e00037003a00a6 +:1005f0000021ef00c1108000000220000080600098 +:100600000000e00015003a0061168000000820009c +:100610000080600000f0a7000000ea000000e90090 +:100620004f00de00004078000080fb0061006000a9 +:100630004700dd00611680000170a100010070001c +:100640006016880010c0b3004be8b700801080002f +:100650000040780040e8b7001282a800c110800076 +:1006600000022000008060000000e000170032005f +:100670004bc8bf00e14f500005003a0080108000d9 +:10068000004078003fe8b7004b68ef000e003700ed +:100690003fc8bf00e54f500008003e003fc8bf0004 +:1006a0000081fb00801080008040780010842000d2 +:1006b00000004100014878000300370080108000ee +:1006c0000040780040e8b7001282a8005004800083 +:1006d000640060000000e00005003a009110800016 +:1006e00000042000008060000000e00006003200ee +:1006f000801080000040780040e8b7008a40a900e0 +:1007000012c2a9001282a8008a20a90091108000bc +:10071000000420000080600000f0a7000000ea0054 +:100720000000e9004f00de00004078000080fb0080 +:10073000610060004800dd00611680000180a100ba +:1007400001007000601688000080fa004f017800f8 +:100750004f00be00004006003600f800809fbe003b +:10076000829fbe00849fbe00869fbe000000fa00ec +:100770008020a9000000eb00ff0307000080fa00c2 +:100780004f03be004f02be004f01be004f00be002f +:100790003600f900004006003600f800809fbe00d9 +:1007a000829fbe00849fbe00869fbe000000fa00ac +:1007b000f60307008040a90010002000ee030700a8 +:1007c0000080fa004f03be004f02be004f01be0082 +:1007d0004f00be003600f900004006003600f80069 +:1007e000809fbe00829fbe00849fbe00869fbe0089 +:1007f0000000fa008060a90020002000de0307004e +:100800000080fa004f03be004f02be004f01be0041 +:100810004f00be003600f900004006003600f80028 +:10082000809fbe00829fbe00849fbe00869fbe0048 +:100830000000fa008080a90030002000ce030700ed +:100840000080fa004f03be004f02be004f01be0001 +:100850004f00be003600f900004006003600f800e8 +:10086000809fbe00829fbe00849fbe00869fbe0008 +:100870000000fa00a04280000000e0000200320008 +:10088000a04280000000010057c8bf000040e800ff +:1008900057e8b70010c0b30056e8b7008460a9005d +:1008a0000080fa004f03be004f02be004f01be00a1 +:1008b0004f00be003600f900004006000040da009c +:0808c0000000fe00000005002d +:020000040000fa +:1008c8000400fa00004f780011479800224798006a +:1008d8001e407800ef4f500002003600f0c0b30011 +:1008e800004f78001e409000e54f5000020036008f +:1008f80050c0b3001047980000c8b30024e8b70000 +:1009080024c8bf0022e8b70022c8bf0020e8b7000b +:100918001e80fb00f10f20000008dd0000f0a7009a +:100928000000ea000000e9004f00de000040780007 +:1009380025e8b7001e80fb0068005000f10f20007a +:100948000008dd0000f0a7000000ea000000e90050 +:100958004f00de00804078001e4090000080fb00c1 +:10096800640050004700dd000040780000c07000bf +:1009780023e8b7001e4090000080fb000000e9005b +:10098800f10f20000008dd0000f0a7000000ea00d9 +:100998000000e9004f00de00804078002e40900003 +:1009a8000080fb004700dd000040780000c07000b8 +:1009b80021e8b7006282200061c0b30000822000f5 +:1009c800cb0107000080fb00704188000080fa001e +:1009d800000006000200fa00000f780032c8bf00cd +:1009e8000080fb004800dd008040780032c8bf006e +:1009f8000004e00002003a0000c8b300010037001c +:100a08000040eb0000c070000004a00024e8b7001c +:100a180024c8bf0022e8b70022c8bf0020e8b700fa +:100a28001e0078001040780021e8b7001e00e8009a +:100a38001040780023e8b7001e80e80010407800d6 +:100a480025e8b7000080fa00000006000200fa005e +:100a5800000f780032c8bf000080fb004800dd00ae +:100a68008040780032c8bf000004e00002003a006d +:100a780000c8b300010037000040eb0000c0700060 +:100a88000024a00024e8b70024c8bf0022e8b7006b +:100a980022c8bf0020e8b7001e0078001040780088 +:100aa80021e8b7001e00e8001040780023e8b700ee +:100ab8001e80e8001040780025e8b7000080fa00a2 +:100ac800000006000200fa00000f780032c8bf00dc +:100ad8000080fb004800dd008040780032c8bf007d +:100ae8000004e00002003a0000c8b300010037002b +:100af8000040eb0000c070005040b30024e8b7008d +:100b080024c8bf0022e8b70022c8bf0020e8b70009 +:100b18001e0078001040780021e8b7001e00e800a9 +:100b28001040780023e8b7001e80e80010407800e5 +:100b380025e8b7000080fa00000006000000fa006f +:100b480060c4b30024e8b70024c8bf0022e8b70097 +:100b580022c8bf0020e8b7000080fa0000000600a5 +:100b68000200fa00000f780032c8bf000080fb00c6 +:100b78004800dd008040780032c8bf000004e00073 +:100b880002003a0000c8b300010037000040eb0043 +:100b980000c070000034a00024e8b70024c8bf00db +:100ba80022e8b70022c8bf0020e8b7001e0078007e +:100bb8001040780021e8b7001e00e80010407800d7 +:100bc80023e8b7001e80e8001040780025e8b70049 +:100bd8000080fa00000006000000fa0090c4b3008c +:100be80024e8b70024c8bf0022e8b70022c8bf0025 +:100bf80020e8b7000080fa00000006000000fa00b4 +:100c0800a0c4b30024e8b70024c8bf0022e8b70096 +:100c180022c8bf0020e8b7000080fa0000000600e4 +:100c28000200fa00000f780032c8bf000080fb0005 +:100c38004800dd008040780032c8bf000004e000b2 +:100c480002003a0000c8b300010037000040eb0082 +:100c580000c07000b040b30024e8b70024c8bf004b +:100c680022e8b70022c8bf0020e8b7001e007800bd +:100c78001040780021e8b7001e00e8001040780016 +:100c880023e8b7001e80e8001040780025e8b70088 +:100c98000080fa00000006000200fa00000f780049 +:100ca800c0c8b30020e8b70000c8b30021e8b70007 +:100cb80026c8bf000080fb008000780020c8bf0065 +:100cc8000080fb000101780021c0b3000801070083 +:100cd8000080fb00704188000080fa0000000600d8 +:100ce8000200fa00000f7800d0c8b30024e8b7006b +:100cf80024c8bf0022e8b70022c8bf0020e8b70018 +:100d08001e0078001040780021e8b7001e00e800b7 +:100d18001040780023e8b7001e80e80010407800f3 +:100d280025e8b7000080fa00000006000200fa007b +:100d3800000f780032c8bf000080fb004800dd00cb +:100d48008040780032c8bf000004e00002003a008a +:100d580000c8b300010037000040eb0000c070007d +:100d6800e040b30024e8b70024c8bf0022e8b70079 +:100d780022c8bf0020e8b7001e00780010407800a5 +:100d880021e8b7001e00e8001040780023e8b7000b +:100d98001e80e8001040780025e8b7000080fa00bf +:100da800000006000200fa00000f780032c8bf00f9 +:100db8000080fb004800dd008040780032c8bf009a +:100dc8000004e00002003a0000c8b3000100370048 +:100dd8000040eb0000c070000044a00024e8b70009 +:100de80024c8bf0022e8b70022c8bf0020e8b70027 +:100df80001822000914078001e00780010007800e1 +:100e08004600dd004e00de000040780000c07000a3 +:100e180020e8b70021822000914078001e80e80079 +:100e2800100078004600dd004e00de00004078002b +:100e380000c0700022e8b70041822000914078008d +:100e48001e01780066004100100078004600dd00b1 +:100e58004e00de000040780000c0700024e8b700b3 +:100e68001e007800100078000040780021e8b700e4 +:100e78001e80e800100078000040780023e8b700e2 +:100e88009e007800648040001000780000407800e0 +:100e980025e8b7000080fa00000006000200fa000a +:100ea800000f780032c8bf000080fb004800dd005a +:100eb8008040780032c8bf000004e00002003a0019 +:100ec80000c8b300010037000040eb0000c070000c +:100ed8004041b30024e8b70024c8bf0022e8b700a7 +:100ee80022c8bf0020e8b7000182200091407800a6 +:100ef8001e007800100078004600dd004e00de007d +:100f08000040780000c0700020e8b700218220006f +:100f1800914078001e80e800100078004600dd004f +:100f28004e00de000040780000c0700022e8b700e4 +:100f380041822000914078001e017800660041003f +:100f4800100078004600dd004e00de00004078000a +:100f580000c0700024e8b7001e0078001000780078 +:100f68000040780021e8b7001e80e80010007800f3 +:100f78000040780023e8b7009e00780064804000b5 +:100f8800100078000040780025e8b7000080fa00db +:100f9800000006000200fa00000f780032c8bf0007 +:100fa8000080fb004800dd008040780032c8bf00a8 +:100fb8000004e00002003a0000c8b3000100370056 +:100fc8000040eb0080c0700040c2b30000c0700059 +:100fd80024e8b70024c8bf0022e8b70022c8bf0031 +:100fe80020e8b7001e0078001040780021e8b7001c +:100ff8001e00e8001040780023e8b7001e80e800d3 +:101008001040780025e8b7000080fa0000000600cc +:101018000200fa00000f780032c8bf000080fb0011 +:101028004800dd008040780032c8bf000004e000be +:1010380002003a0000c8b300010037000040eb008e +:1010480080c0700050c2b30000c0700024e8b70030 +:1010580024c8bf0022e8b70022c8bf0020e8b700b4 +:101068001e0078001040780021e8b7001e00e80054 +:101078001040780023e8b7001e80e8001040780090 +:1010880025e8b7000080fa00000006000000fa001a +:101098000008200040108800a002200010108800de +:1010a8000422ef000622ef000c22ef0010002000bf +:1010b800501088000080fa00000006000200fa00c4 +:1010c800004f78001e80fb00001088000000000020 +:1010d80040108000610060000000e000fcff32006a +:1010e80000108000004078000080fa000000060030 +:1010f8000800fa00881f78001007980041479800f8 +:10110800320798000000eb00000f78001e009000e6 +:101118000000e0001d0032003e0090000000e000ea +:1011280014003200080037003e0090001e04400002 +:101138001e0090001e00400010407800dfff0700ee +:10114800004c78001e0fe8004e4090000080fb0025 +:101158009e0f5000f4ff3e001a0037001e0090005a +:101168001e00400010407800d4ff07001e0fe80062 +:1011780001003700000000004e4090000080fb0096 +:101188009e0f5000f5ff3e000e0037003e00900015 +:101198000000e0000b003200060037003e0090001f +:1011a8001e0440000040eb00c4ff0700004c78001c +:1011b8001e0fe8004e4090000080fb009e0f50007c +:1011c800f6ff3e001e007800004078004f047800cb +:1011d8000080fa00000006000000fa0040108000bd +:1011e8006100600000f0a7000000ea000000e900cc +:1011f8004f00de00004078000080fa000000060082 +:101208000000fa0011108000000820000080600033 +:1012180000f0a7000000ea000000e9004f00de002f +:10122800004078000080fa00000006000000fa0084 +:1012380011108000000420000080600000f0a7006a +:101248000000ea000000e9004f00de0000407800de +:101258000080fa00000006000000fa00cde2a900b4 +:101268000080fa00000006000000fa00cde2a800a5 +:101278000080fa00000006000000fa003628ef009f +:101288000000eb00120007000000eb00160007004a +:1012980000082000c010880060022000901088001c +:1012a80010002000a010880090012000b0108800d5 +:1012b8001c22ef0000032000d01088008a40a900fb +:1012c8008a20a9009a20a8000080fa0000000600e1 +:1012d8000200fa00000f78009e007800d1418800d3 +:1012e8000080fa00000006000200fa00000f7800f3 +:1012f8009e007800c14188000080fa0000000600c6 +:101308000000fa00d04180000080fa0000000600ca +:101318000000fa00c04180000080fa0000000600ca +:101328000200fa00000f78009e007800e1108800a3 +:101338000080fa00000006000400fa001007980078 +:101348009e009000010f78009e009000f00f200092 +:10135800808f50000c0036001e4090000080fb007b +:101368000000400000407800e640600000cfb30075 +:1013780000c07000104798001e4090000080fb00dd +:10138800d0108800030037001e4078000080fb0062 +:10139800d01088001e007800e04188000080fa0024 +:1013a800000006000200fa00000f78001e00780016 +:1013b800e10f500009003200e10f5000030039002e +:1013c800e20f50000a003200150037003ec8bf0087 +:1013d8000080fb00801088001100370010c0b300a7 +:1013e8004de8b700c0842000bfff07000c0037009d +:1013f80080108000004078003ee8b700e1832000bc +:101408009140780040c6b30080cf500002003600fb +:10141800ccc2a90002003700ccc2a800000000001e +:1014280010c0b3000080fa00000006000000fa00b7 +:101438000021ef00104e2e0010088800000328003d +:1014480020088800a04280000000e00002003a0066 +:1014580060a62000200007008460a9009460a8000e +:101468005668ef000080fa00000006000200fa004b +:10147800000f78009e007800110888005668ef0079 +:101488000080fa00000006000000fa001008800042 +:101498000080fa00000006000200fa00000f780041 +:1014a8009e007800010888005668ef000080fa0066 +:1014b800000006000000fa00000880000080fa0022 +:1014c800000006000000fa00cd02a900cce2a80046 +:1014d8000080fa00000006000200fa00000f780001 +:1014e8009460a9009e007800a14288009460a8003a +:1014f8000080fa00000006000000fa005668ef00bd +:101508009460a80005e1a8000080fa000000060029 +:101518000000fa0005e1a9009460a9000080fa0023 +:10152800000006000200fa00618520009140780062 +:10153800014f78001e4078000004e00001003200ee +:101548005668ef001e4078000080fa000000060090 +:101558000000fa0057c8bf000080fb000080fa00b6 +:10156800000006000000fa005768ef000080fa004b +:10157800000006000000fa00890007003aff070093 +:10158800c422a800201680000000d100614060003d +:101598000080fb0061006000211680000100a100ae +:1015a8000100700020168800c482a8002aff0700e6 +:1015b8005ac8bf000080fb00b7fd07002aff0700dc +:1015c800ccc2a900cce2a800cd02a8006116800018 +:1015d80000102000008060000000e00007003200da +:1015e8001dff070012c0b30051c0b300f0c0b30024 +:1015f800b3fc07001cff0700f4ff370016ff0700c5 +:101608000041eb0051c0b300f0c0b300acfc0700d0 +:1016180015ff0700edff37000000fa000010230057 +:10162800203a88004827ef004e27ef007027ef0088 +:101638007227ef007427ef007627ef007a27ef0074 +:101648007e27ef002200200080072000a10920004b +:1016580033742000804978008149780082497800f5 +:101668000001eb00600420007105200023742000b5 +:101678008049780081497800824978000080fa0022 +:041688000000060058 +:020000040000fa +:10168c003608000014000000000000004a080000aa +:10169c000a000000020000003001aa0001303100f5 +:1016ac003233340000000000580800000200000033 +:1016bc0002000000ffff00000008000020000000f6 +:1016cc00000000005a0800000200000000000000aa +:1016dc002008000016000000000000005408000064 +:0c16ec00040000000000000000000000ee +:020000040000fa +:1016f8000000fa00c422ef00cc22ef00400a2000cc +:1017080000168800f0432500401688005620ef0098 +:101718005820ef006e20ef007020ef00c622ef0087 +:10172800001c200070168800e024ef00000325004c +:10173800102788000080fa00000006000000fa0068 +:10174800e1058000f0f82f00008060000040a00054 +:10175800e005880021058000f0ff28000080600077 +:1017680000c0a000200588000080fa0000000600e4 +:101778000200fa00000f78009e007800c14288003d +:10178800ffff37000000fa00008020008007780083 +:1017980080812000000188000080fa000000060017 +:1017a8000000fa00d2ff07009bff0700e3ff0700d5 +:1017b800b1fe070035fe07001cff07000080fa0095 +:0417c8000000060017 +:020000040000fa +:0200000401f009 +:04000000ffffff00ff +:020000040000fa +:0200000401f009 +:04000800ffffff00f7 +:020000040000fa +:0200000401f009 +:04000c005aff000097 +:020000040000fa +:0200000401f009 +:04001000baff000033 +:020000040000fa +:0200000401f009 +:040014005fff00008a +:020000040000fa +:0200000401f009 +:04001800ffff0000e6 +:020000040000fa +:0200000401f009 +:04001c00ffff0000e2 +:00000001FF diff --git a/dist/default/production/resbox.X.production.map b/dist/default/production/resbox.X.production.map new file mode 100644 index 0000000..3bf4994 --- /dev/null +++ b/dist/default/production/resbox.X.production.map @@ -0,0 +1,1506 @@ +Microchip Technology Inc, v2.10 (B) + +Tool Name: + /opt/microchip/xc16/v2.10/bin/bin/../bin/elf-ld + +Command: + -p24FV16KM202 \ + --mdfp=/opt/microchip/mplabx/v6.15/packs/Microchip/PIC24F-KA-KL-KM_DFP/1.4.83/xc16 \ + -o \ + dist/default/production/resbox.X.production.elf \ + -L/opt/microchip/xc16/v2.10/bin/bin/.. \ + -L/opt/microchip/mplabx/v6.15/packs/Microchip/PIC24F-KA-KL-KM_DFP/1.4.83/xc16/bin/../support/PIC24F/gld \ + -L/opt/microchip/xc16/v2.10/bin/bin/../../lib \ + -L/opt/microchip/xc16/v2.10/bin/bin/../../support/PIC24E/gld \ + -L/opt/microchip/xc16/v2.10/bin/bin/../../support/PIC24F/gld \ + -L/opt/microchip/xc16/v2.10/bin/bin/../../support/PIC24H/gld \ + -L/opt/microchip/xc16/v2.10/bin/bin/../../support/dsPIC30F/gld \ + -L/opt/microchip/xc16/v2.10/bin/bin/../../support/dsPIC33C/gld \ + -L/opt/microchip/xc16/v2.10/bin/bin/../../support/dsPIC33E/gld \ + -L/opt/microchip/xc16/v2.10/bin/bin/../../support/dsPIC33F/gld \ + build/default/production/mcc_generated_files/interrupt_manager.o \ + build/default/production/mcc_generated_files/clock.o \ + build/default/production/mcc_generated_files/pin_manager.o \ + build/default/production/mcc_generated_files/mssp2_i2c.o \ + build/default/production/mcc_generated_files/system.o \ + build/default/production/mcc_generated_files/traps.o \ + build/default/production/mcc_generated_files/mcc.o \ + build/default/production/mcc_generated_files/mssp1_spi.o \ + build/default/production/main.o \ + build/default/production/SPI.o \ + build/default/production/mcc_generated_files/tmr1.o \ + --defsym=__MPLAB_BUILD=1 \ + -Tp24FV16KM202.gld.00 \ + --stack=16 \ + --check-sections \ + --data-init \ + --pack-data \ + --handles \ + --isr \ + --no-gc-sections \ + --fill-upper=0 \ + --stackguard=16 \ + --no-force-link \ + --smart-io \ + -Map=dist/default/production/resbox.X.production.map \ + --report-mem \ + --memorysummary \ + dist/default/production/memoryfile.xml \ + -start-group \ + --library=c99-pic30-elf \ + --library=m-elf \ + --library=c99-elf \ + -end-group \ + + +Optional library libpPIC24Fxxx.a not found +Archive member included because of file (symbol) + +/opt/microchip/xc16/v2.10/bin/bin/../../lib/libc99-pic30-elf.a(crt0_standard.o) + (__resetPRI) +/opt/microchip/xc16/v2.10/bin/bin/../../lib/libc99-pic30-elf.a(data_init_standard.o) + /opt/microchip/xc16/v2.10/bin/bin/../../lib/libc99-pic30-elf.a(crt0_standard.o) (__data_init_standard) +/opt/microchip/xc16/v2.10/bin/bin/../../lib/libc99-pic30-elf.a(crt_start_mode_normal.Meo) + (__crt_start_mode_normal) + + +Selected CodeGuard Options: + FGS:GWRP:OFF + FGS:GCP:OFF + FBS:BWRP:OFF + FBS:BSS:OFF + +CodeGuard FLASH Memory: + boot (none) + secure (none) + general 0x200 to 0x2bfe + +CodeGuard RAM Memory: + general 0x800 to 0xfff + secure (none) + boot (none) + +CodeGuard EEPROM Memory: + general 0x7ffe00 to 0x7fffff + secure (none) + boot (none) + + +xc16-ld 2.10 (B) + +Default Code Model: Small +Default Data Model: Small +Default Scalar Model: Small + +"program" Memory [Origin = 0x200, Length = 0x2a00] + +section address length (PC units) length (bytes) (dec) +------- ------- ----------------- -------------------- +.text 0x200 0x264 0x396 (918) +.text 0x464 0x6e2 0xa53 (2643) +.dinit 0xb46 0x36 0x51 (81) +.text 0xb7c 0x6a 0x9f (159) + + Total "program" memory used (bytes): 0xed9 (3801) 23% + + +"data" Memory [Origin = 0x800, Length = 0x800] + +section address alignment gaps total length (dec) +------- ------- -------------- ------------------- +.nbss 0x800 0 0x4a (74) +.ndata 0x84a 0 0xa (10) +.nbss 0x854 0 0x4 (4) +.ndata 0x858 0 0x2 (2) +.nbss 0x85a 0 0x2 (2) + + Total "data" memory used (bytes): 0x5c (92) 4% + + +Dynamic Memory Usage + +region address maximum length (dec) +------ ------- --------------------- +heap 0 0 (0) +stack 0x85c 0x7a4 (1956) + + Maximum dynamic memory (bytes): 0x7a4 (1956) + +Info: Project is using a large data memory model when small data memory model is sufficient. + + +External Symbols in Data Memory (by address): + + 0x0820 _WriteBuffer + 0x0826 _ReadBuffer + 0x082c _writeData + 0x082e _readData + 0x0830 _addr0 + 0x0831 _addr1 + 0x0832 _write + 0x0834 _total + 0x083e _yeah + 0x083f _index + 0x0840 _temp + 0x0841 _i2cArray + 0x084a _slaveAddress + 0x084b _regAdd + 0x0854 _TMR1_InterruptHandler + 0x085a _nullarray + +External Symbols in Data Memory (by name): + + 0x0826 _ReadBuffer + 0x0854 _TMR1_InterruptHandler + 0x0820 _WriteBuffer + 0x0830 _addr0 + 0x0831 _addr1 + 0x0841 _i2cArray + 0x083f _index + 0x085a _nullarray + 0x082e _readData + 0x084b _regAdd + 0x084a _slaveAddress + 0x0840 _temp + 0x0834 _total + 0x0832 _write + 0x082c _writeData + 0x083e _yeah + +External Symbols in Program Memory (by address): + + 0x000200 __resetPRI + 0x00023c __psv_init + 0x000252 __data_init + 0x000252 __data_init_standard + 0x0002cc __MSSP2Interrupt + 0x0003ac __OscillatorFail + 0x0003cc __StackError + 0x0003ee __AddressError + 0x00040e __MathError + 0x00042e __T1Interrupt + 0x00045e __DefaultInterrupt + 0x000464 _Message_OUT + 0x0004ee _Message_BIM + 0x00052a _Message_MAPIN0 + 0x000566 _Message_MAPIN1 + 0x0005a2 _Message_INST + 0x0005b4 _Message_DAGIOL + 0x0005f0 _Message_DAGOSM + 0x000602 _Message_DAGOLON + 0x000614 _Message_DAGOLONEN + 0x000650 _Message_HWCR + 0x000674 _Message_HWCROCL + 0x00069a _Message_HWCRPWM + 0x0006d6 _Message_PWMCR0 + 0x000752 _Message_PWMCR1 + 0x0007ce _Message_PWMOUT + 0x00080c _Message_PWMMAP + 0x00084a _MSSP1_SPI_Initialize + 0x000862 _MSSP1_SPI_Exchange8bit + 0x00087c _MSSP1_SPI_Exchange8bitBuffer + 0x0008f0 _MSSP1_SPI_IsBufferFull + 0x000904 _MSSP1_SPI_HasWriteCollisionOccured + 0x00091a _MSSP1_SPI_HasReceiveOverflowOccured + 0x000930 _SPI_slaveSelect + 0x000938 _SPI_slaveDeselect + 0x000940 _MSSP2_I2C_Initialize + 0x00096c _MSSP2_I2C_ReadPointerSet + 0x000978 _MSSP2_I2C_WritePointerSet + 0x000984 _MSSP2_I2C_ReadPointerGet + 0x00098c _MSSP2_I2C_WritePointerGet + 0x000994 _MSSP2_I2C_SlaveAddressMaskSet + 0x0009a0 _MSSP2_I2C_SlaveAddressSet + 0x0009d6 _MSSP2_I2C_StatusCallback + 0x000a1a _TMR1_Initialize + 0x000a3a _TMR1_Period16BitSet + 0x000a48 _TMR1_Period16BitGet + 0x000a50 _TMR1_Counter16BitSet + 0x000a5e _TMR1_Counter16BitGet + 0x000a70 _TMR1_SetInterruptHandler + 0x000a80 _TMR1_Start + 0x000a8c _TMR1_Stop + 0x000a96 _TMR1_GetElapsedThenClear + 0x000aac _TMR1_SoftwareCounterGet + 0x000ab6 _TMR1_SoftwareCounterClear + 0x000abe _main + 0x000b10 _CLOCK_Initialize + 0x000b7c _PIN_MANAGER_Initialize + 0x000ba2 _INTERRUPT_Initialize + 0x000bd4 _SYSTEM_Initialize + 0xf80000 __FBS.sec + 0xf80004 __FGS.sec + +External Symbols in Program Memory (by name): + + 0x000b10 _CLOCK_Initialize + 0x000ba2 _INTERRUPT_Initialize + 0x000862 _MSSP1_SPI_Exchange8bit + 0x00087c _MSSP1_SPI_Exchange8bitBuffer + 0x00091a _MSSP1_SPI_HasReceiveOverflowOccured + 0x000904 _MSSP1_SPI_HasWriteCollisionOccured + 0x00084a _MSSP1_SPI_Initialize + 0x0008f0 _MSSP1_SPI_IsBufferFull + 0x000940 _MSSP2_I2C_Initialize + 0x000984 _MSSP2_I2C_ReadPointerGet + 0x00096c _MSSP2_I2C_ReadPointerSet + 0x000994 _MSSP2_I2C_SlaveAddressMaskSet + 0x0009a0 _MSSP2_I2C_SlaveAddressSet + 0x0009d6 _MSSP2_I2C_StatusCallback + 0x00098c _MSSP2_I2C_WritePointerGet + 0x000978 _MSSP2_I2C_WritePointerSet + 0x0004ee _Message_BIM + 0x0005b4 _Message_DAGIOL + 0x000602 _Message_DAGOLON + 0x000614 _Message_DAGOLONEN + 0x0005f0 _Message_DAGOSM + 0x000650 _Message_HWCR + 0x000674 _Message_HWCROCL + 0x00069a _Message_HWCRPWM + 0x0005a2 _Message_INST + 0x00052a _Message_MAPIN0 + 0x000566 _Message_MAPIN1 + 0x000464 _Message_OUT + 0x0006d6 _Message_PWMCR0 + 0x000752 _Message_PWMCR1 + 0x00080c _Message_PWMMAP + 0x0007ce _Message_PWMOUT + 0x000b7c _PIN_MANAGER_Initialize + 0x000938 _SPI_slaveDeselect + 0x000930 _SPI_slaveSelect + 0x000bd4 _SYSTEM_Initialize + 0x000a5e _TMR1_Counter16BitGet + 0x000a50 _TMR1_Counter16BitSet + 0x000a96 _TMR1_GetElapsedThenClear + 0x000a1a _TMR1_Initialize + 0x000a48 _TMR1_Period16BitGet + 0x000a3a _TMR1_Period16BitSet + 0x000a70 _TMR1_SetInterruptHandler + 0x000ab6 _TMR1_SoftwareCounterClear + 0x000aac _TMR1_SoftwareCounterGet + 0x000a80 _TMR1_Start + 0x000a8c _TMR1_Stop + 0x0003ee __AddressError + 0x00045e __DefaultInterrupt + 0xf80000 __FBS.sec + 0xf80004 __FGS.sec + 0x0002cc __MSSP2Interrupt + 0x00040e __MathError + 0x0003ac __OscillatorFail + 0x0003cc __StackError + 0x00042e __T1Interrupt + 0x000252 __data_init + 0x000252 __data_init_standard + 0x00023c __psv_init + 0x000200 __resetPRI + 0x000abe _main + +Memory Configuration + +Name Origin Length Attributes +data 0x000800 0x000800 a !xr +reset 0x000000 0x000004 +ivt 0x000004 0x0000fc +_reserved 0x000100 0x000004 +aivt 0x000104 0x0000fc +program 0x000200 0x002a00 xr +eedata 0x7ffe00 0x000200 +FBS 0xf80000 0x000002 +FGS 0xf80004 0x000002 +FOSCSEL 0xf80006 0x000002 +FOSC 0xf80008 0x000002 +FWDT 0xf8000a 0x000002 +FPOR 0xf8000c 0x000002 +FICD 0xf8000e 0x000002 +*default* 0x000000 0xffffffffffffffff + +Linker script and memory map + +LOAD build/default/production/mcc_generated_files/interrupt_manager.o +LOAD build/default/production/mcc_generated_files/clock.o +LOAD build/default/production/mcc_generated_files/pin_manager.o +LOAD build/default/production/mcc_generated_files/mssp2_i2c.o +LOAD build/default/production/mcc_generated_files/system.o +LOAD build/default/production/mcc_generated_files/traps.o +LOAD build/default/production/mcc_generated_files/mcc.o +LOAD build/default/production/mcc_generated_files/mssp1_spi.o +LOAD build/default/production/main.o +LOAD build/default/production/SPI.o +LOAD build/default/production/mcc_generated_files/tmr1.o + 0x0001 __MPLAB_BUILD = 0x1 +LOAD pPIC24Fxxx +LOAD /opt/microchip/xc16/v2.10/bin/bin/../../lib/libfx-elf.a + 0xf80000 __FBS = 0xf80000 + 0xf80004 __FGS = 0xf80004 + 0xf80006 __FOSCSEL = 0xf80006 + 0xf80008 __FOSC = 0xf80008 + 0xf8000a __FWDT = 0xf8000a + 0xf8000c __FPOR = 0xf8000c + 0xf8000e __FICD = 0xf8000e + 0x0001 __NO_HANDLES = 0x1 + 0x0200 __CODE_BASE = 0x200 + 0x2a00 __CODE_LENGTH = 0x2a00 + 0x0004 __IVT_BASE = 0x4 + 0x0104 __AIVT_BASE = 0x104 + 0x0800 __DATA_BASE = 0x800 + 0x0800 __DATA_LENGTH = 0x800 + +.reset 0x000000 0x4 + 0x000000 0x2 SHORT 0x200 ABSOLUTE (__reset) + 0x000001 0x2 SHORT 0x4 + 0x000002 0x2 SHORT 0x0 ((ABSOLUTE (__reset) >> 0x10) & 0x7f) + 0x000003 0x2 SHORT 0x0 + +.text 0x000200 0x264 + *(.init) + .init 0x000200 0x4c /opt/microchip/xc16/v2.10/bin/bin/../../lib/libc99-pic30-elf.a(crt0_standard.o) + 0x000200 __reset + 0x000200 __resetPRI + 0x00023c __psv_init + .init 0x00024c 0x7c /opt/microchip/xc16/v2.10/bin/bin/../../lib/libc99-pic30-elf.a(data_init_standard.o) + 0x000252 __data_init + 0x000252 __data_init_standard + *(.user_init) + *(.handle) + *(.isr*) + .isr.text 0x0002cc 0xe0 build/default/production/mcc_generated_files/mssp2_i2c.o + 0x0002cc __MSSP2Interrupt + .isr.text 0x0003ac 0x82 build/default/production/mcc_generated_files/traps.o + 0x0003ac __OscillatorFail + 0x0003cc __StackError + 0x0003ee __AddressError + 0x00040e __MathError + .isr.text 0x00042e 0x30 build/default/production/mcc_generated_files/tmr1.o + 0x00042e __T1Interrupt + .isr 0x00045e 0x4 default_isr + 0x00045e __DefaultInterrupt + *(.libc) + *(.libm) + *(.libdsp) + *(.lib*) + .libpic30_crt_start_mode + 0x000462 0x2 /opt/microchip/xc16/v2.10/bin/bin/../../lib/libc99-pic30-elf.a(crt_start_mode_normal.Meo) + 0x000462 __crt_start_mode_normal + 0x000462 __crt_start_mode + +usercode + *(usercode) + +__FBS 0xf80000 0x2 + *(__FBS.sec*) + __FBS.sec 0xf80000 0x2 /CW/_FBSx0 Ôþ\ + 0xf80000 __FBS.sec + +__FGS 0xf80004 0x2 + *(__FGS.sec*) + __FGS.sec 0xf80004 0x2 /CW/_FGS¨lŸÔþ\ + 0xf80004 __FGS.sec + +__FOSCSEL + *(__FOSCSEL.sec*) + +__FOSC + *(__FOSC.sec*) + +__FWDT + *(__FWDT.sec*) + +__FPOR + *(__FPOR.sec*) + +__FICD + *(__FICD.sec*) + +.comment + *(.comment) + +.debug_info 0x000000 0x3c77 + *(.debug_info) + .debug_info 0x000000 0x525 build/default/production/mcc_generated_files/interrupt_manager.o + .debug_info 0x000525 0x28b build/default/production/mcc_generated_files/clock.o + .debug_info 0x0007b0 0x2ea build/default/production/mcc_generated_files/pin_manager.o + .debug_info 0x000a9a 0xe28 build/default/production/mcc_generated_files/mssp2_i2c.o + .debug_info 0x0018c2 0x327 build/default/production/mcc_generated_files/system.o + .debug_info 0x001be9 0x390 build/default/production/mcc_generated_files/traps.o + .debug_info 0x001f79 0x935 build/default/production/mcc_generated_files/mssp1_spi.o + .debug_info 0x0028ae 0x3fb build/default/production/main.o + .debug_info 0x002ca9 0x534 build/default/production/SPI.o + .debug_info 0x0031dd 0xa9a build/default/production/mcc_generated_files/tmr1.o + *(.gnu.linkonce.wi.*) + +.debug_abbrev 0x000000 0x967 + *(.debug_abbrev) + .debug_abbrev 0x000000 0xb4 build/default/production/mcc_generated_files/interrupt_manager.o + .debug_abbrev 0x0000b4 0x59 build/default/production/mcc_generated_files/clock.o + .debug_abbrev 0x00010d 0x6a build/default/production/mcc_generated_files/pin_manager.o + .debug_abbrev 0x000177 0x1d7 build/default/production/mcc_generated_files/mssp2_i2c.o + .debug_abbrev 0x00034e 0xb4 build/default/production/mcc_generated_files/system.o + .debug_abbrev 0x000402 0x10d build/default/production/mcc_generated_files/traps.o + .debug_abbrev 0x00050f 0x1 build/default/production/mcc_generated_files/mcc.o + .debug_abbrev 0x000510 0x11c build/default/production/mcc_generated_files/mssp1_spi.o + .debug_abbrev 0x00062c 0xd9 build/default/production/main.o + .debug_abbrev 0x000705 0xd5 build/default/production/SPI.o + .debug_abbrev 0x0007da 0x18d build/default/production/mcc_generated_files/tmr1.o + +.debug_line 0x000000 0xb82 + *(.debug_line) + .debug_line 0x000000 0x110 build/default/production/mcc_generated_files/interrupt_manager.o + .debug_line 0x000110 0x10d build/default/production/mcc_generated_files/clock.o + .debug_line 0x00021d 0x114 build/default/production/mcc_generated_files/pin_manager.o + .debug_line 0x000331 0x185 build/default/production/mcc_generated_files/mssp2_i2c.o + .debug_line 0x0004b6 0x10a build/default/production/mcc_generated_files/system.o + .debug_line 0x0005c0 0x135 build/default/production/mcc_generated_files/traps.o + .debug_line 0x0006f5 0x1a build/default/production/mcc_generated_files/mcc.o + .debug_line 0x00070f 0x136 build/default/production/mcc_generated_files/mssp1_spi.o + .debug_line 0x000845 0x106 build/default/production/main.o + .debug_line 0x00094b 0xe9 build/default/production/SPI.o + .debug_line 0x000a34 0x14e build/default/production/mcc_generated_files/tmr1.o + +.debug_frame 0x000000 0x760 + *(.debug_frame) + .debug_frame 0x000000 0x2e build/default/production/mcc_generated_files/interrupt_manager.o + .debug_frame 0x00002e 0x2e build/default/production/mcc_generated_files/clock.o + .debug_frame 0x00005c 0x2e build/default/production/mcc_generated_files/pin_manager.o + .debug_frame 0x00008a 0x110 build/default/production/mcc_generated_files/mssp2_i2c.o + .debug_frame 0x00019a 0x2e build/default/production/mcc_generated_files/system.o + .debug_frame 0x0001c8 0x140 build/default/production/mcc_generated_files/traps.o + .debug_frame 0x000308 0xec build/default/production/mcc_generated_files/mssp1_spi.o + .debug_frame 0x0003f4 0x2e build/default/production/main.o + .debug_frame 0x000422 0x1b4 build/default/production/SPI.o + .debug_frame 0x0005d6 0x18a build/default/production/mcc_generated_files/tmr1.o + +.debug_str 0x000000 0x153 + *(.debug_str) + .debug_str 0x000000 0x13 build/default/production/mcc_generated_files/interrupt_manager.o + .debug_str 0x000013 0x62 build/default/production/mcc_generated_files/mssp2_i2c.o + .debug_str 0x000075 0xc build/default/production/mcc_generated_files/system.o + .debug_str 0x000081 0xc build/default/production/mcc_generated_files/traps.o + .debug_str 0x00008d 0x47 build/default/production/mcc_generated_files/mssp1_spi.o + .debug_str 0x0000d4 0x1c build/default/production/main.o + .debug_str 0x0000f0 0x28 build/default/production/SPI.o + .debug_str 0x000118 0x3b build/default/production/mcc_generated_files/tmr1.o + +.debug_loc + *(.debug_loc) + +.debug_macinfo + *(.debug_macinfo) + +.debug_pubnames + 0x000000 0x687 + *(.debug_pubnames) + .debug_pubnames + 0x000000 0x2b build/default/production/mcc_generated_files/interrupt_manager.o + .debug_pubnames + 0x00002b 0x27 build/default/production/mcc_generated_files/clock.o + .debug_pubnames + 0x000052 0x2d build/default/production/mcc_generated_files/pin_manager.o + .debug_pubnames + 0x00007f 0x157 build/default/production/mcc_generated_files/mssp2_i2c.o + .debug_pubnames + 0x0001d6 0x28 build/default/production/mcc_generated_files/system.o + .debug_pubnames + 0x0001fe 0x6f build/default/production/mcc_generated_files/traps.o + .debug_pubnames + 0x00026d 0xfb build/default/production/mcc_generated_files/mssp1_spi.o + .debug_pubnames + 0x000368 0x29 build/default/production/main.o + .debug_pubnames + 0x000391 0x1a0 build/default/production/SPI.o + .debug_pubnames + 0x000531 0x156 build/default/production/mcc_generated_files/tmr1.o + +.debug_ranges + *(.debug_ranges) + +.debug_aranges 0x000000 0xf0 + *(.debug_aranges) + .debug_aranges + 0x000000 0x18 build/default/production/mcc_generated_files/interrupt_manager.o + .debug_aranges + 0x000018 0x18 build/default/production/mcc_generated_files/clock.o + .debug_aranges + 0x000030 0x18 build/default/production/mcc_generated_files/pin_manager.o + .debug_aranges + 0x000048 0x18 build/default/production/mcc_generated_files/mssp2_i2c.o + .debug_aranges + 0x000060 0x18 build/default/production/mcc_generated_files/system.o + .debug_aranges + 0x000078 0x18 build/default/production/mcc_generated_files/traps.o + .debug_aranges + 0x000090 0x18 build/default/production/mcc_generated_files/mssp1_spi.o + .debug_aranges + 0x0000a8 0x18 build/default/production/main.o + .debug_aranges + 0x0000c0 0x18 build/default/production/SPI.o + .debug_aranges + 0x0000d8 0x18 build/default/production/mcc_generated_files/tmr1.o + 0x0000 WREG0 = 0x0 + 0x0000 _WREG0 = 0x0 + 0x0002 WREG1 = 0x2 + 0x0002 _WREG1 = 0x2 + 0x0004 WREG2 = 0x4 + 0x0004 _WREG2 = 0x4 + 0x0006 WREG3 = 0x6 + 0x0006 _WREG3 = 0x6 + 0x0008 WREG4 = 0x8 + 0x0008 _WREG4 = 0x8 + 0x000a WREG5 = 0xa + 0x000a _WREG5 = 0xa + 0x000c WREG6 = 0xc + 0x000c _WREG6 = 0xc + 0x000e WREG7 = 0xe + 0x000e _WREG7 = 0xe + 0x0010 WREG8 = 0x10 + 0x0010 _WREG8 = 0x10 + 0x0012 WREG9 = 0x12 + 0x0012 _WREG9 = 0x12 + 0x0014 WREG10 = 0x14 + 0x0014 _WREG10 = 0x14 + 0x0016 WREG11 = 0x16 + 0x0016 _WREG11 = 0x16 + 0x0018 WREG12 = 0x18 + 0x0018 _WREG12 = 0x18 + 0x001a WREG13 = 0x1a + 0x001a _WREG13 = 0x1a + 0x001c WREG14 = 0x1c + 0x001c _WREG14 = 0x1c + 0x001e WREG15 = 0x1e + 0x001e _WREG15 = 0x1e + 0x0020 SPLIM = 0x20 + 0x0020 _SPLIM = 0x20 + 0x002e PCL = 0x2e + 0x002e _PCL = 0x2e + 0x0030 PCH = 0x30 + 0x0030 _PCH = 0x30 + 0x0032 TBLPAG = 0x32 + 0x0032 _TBLPAG = 0x32 + 0x0032 _TBLPAGbits = 0x32 + 0x0034 PSVPAG = 0x34 + 0x0034 _PSVPAG = 0x34 + 0x0034 _PSVPAGbits = 0x34 + 0x0036 RCOUNT = 0x36 + 0x0036 _RCOUNT = 0x36 + 0x0042 SR = 0x42 + 0x0042 _SR = 0x42 + 0x0042 _SRbits = 0x42 + 0x0044 CORCON = 0x44 + 0x0044 _CORCON = 0x44 + 0x0044 _CORCONbits = 0x44 + 0x0052 DISICNT = 0x52 + 0x0052 _DISICNT = 0x52 + 0x0052 _DISICNTbits = 0x52 + 0x0056 CNPD1 = 0x56 + 0x0056 _CNPD1 = 0x56 + 0x0056 _CNPD1bits = 0x56 + 0x0058 CNPD2 = 0x58 + 0x0058 _CNPD2 = 0x58 + 0x0058 _CNPD2bits = 0x58 + 0x0062 CNEN1 = 0x62 + 0x0062 _CNEN1 = 0x62 + 0x0062 _CNEN1bits = 0x62 + 0x0064 CNEN2 = 0x64 + 0x0064 _CNEN2 = 0x64 + 0x0064 _CNEN2bits = 0x64 + 0x006e CNPU1 = 0x6e + 0x006e _CNPU1 = 0x6e + 0x006e _CNPU1bits = 0x6e + 0x0070 CNPU2 = 0x70 + 0x0070 _CNPU2 = 0x70 + 0x0070 _CNPU2bits = 0x70 + 0x0080 INTCON1 = 0x80 + 0x0080 _INTCON1 = 0x80 + 0x0080 _INTCON1bits = 0x80 + 0x0082 INTCON2 = 0x82 + 0x0082 _INTCON2 = 0x82 + 0x0082 _INTCON2bits = 0x82 + 0x0084 IFS0 = 0x84 + 0x0084 _IFS0 = 0x84 + 0x0084 _IFS0bits = 0x84 + 0x0086 IFS1 = 0x86 + 0x0086 _IFS1 = 0x86 + 0x0086 _IFS1bits = 0x86 + 0x0088 IFS2 = 0x88 + 0x0088 _IFS2 = 0x88 + 0x0088 _IFS2bits = 0x88 + 0x008a IFS3 = 0x8a + 0x008a _IFS3 = 0x8a + 0x008a _IFS3bits = 0x8a + 0x008c IFS4 = 0x8c + 0x008c _IFS4 = 0x8c + 0x008c _IFS4bits = 0x8c + 0x008e IFS5 = 0x8e + 0x008e _IFS5 = 0x8e + 0x008e _IFS5bits = 0x8e + 0x0090 IFS6 = 0x90 + 0x0090 _IFS6 = 0x90 + 0x0090 _IFS6bits = 0x90 + 0x0094 IEC0 = 0x94 + 0x0094 _IEC0 = 0x94 + 0x0094 _IEC0bits = 0x94 + 0x0096 IEC1 = 0x96 + 0x0096 _IEC1 = 0x96 + 0x0096 _IEC1bits = 0x96 + 0x0098 IEC2 = 0x98 + 0x0098 _IEC2 = 0x98 + 0x0098 _IEC2bits = 0x98 + 0x009a IEC3 = 0x9a + 0x009a _IEC3 = 0x9a + 0x009a _IEC3bits = 0x9a + 0x009c IEC4 = 0x9c + 0x009c _IEC4 = 0x9c + 0x009c _IEC4bits = 0x9c + 0x009e IEC5 = 0x9e + 0x009e _IEC5 = 0x9e + 0x009e _IEC5bits = 0x9e + 0x00a0 IEC6 = 0xa0 + 0x00a0 _IEC6 = 0xa0 + 0x00a0 _IEC6bits = 0xa0 + 0x00a4 IPC0 = 0xa4 + 0x00a4 _IPC0 = 0xa4 + 0x00a4 _IPC0bits = 0xa4 + 0x00a6 IPC1 = 0xa6 + 0x00a6 _IPC1 = 0xa6 + 0x00a6 _IPC1bits = 0xa6 + 0x00a8 IPC2 = 0xa8 + 0x00a8 _IPC2 = 0xa8 + 0x00a8 _IPC2bits = 0xa8 + 0x00aa IPC3 = 0xaa + 0x00aa _IPC3 = 0xaa + 0x00aa _IPC3bits = 0xaa + 0x00ac IPC4 = 0xac + 0x00ac _IPC4 = 0xac + 0x00ac _IPC4bits = 0xac + 0x00ae IPC5 = 0xae + 0x00ae _IPC5 = 0xae + 0x00ae _IPC5bits = 0xae + 0x00b0 IPC6 = 0xb0 + 0x00b0 _IPC6 = 0xb0 + 0x00b0 _IPC6bits = 0xb0 + 0x00b2 IPC7 = 0xb2 + 0x00b2 _IPC7 = 0xb2 + 0x00b2 _IPC7bits = 0xb2 + 0x00b8 IPC10 = 0xb8 + 0x00b8 _IPC10 = 0xb8 + 0x00b8 _IPC10bits = 0xb8 + 0x00bc IPC12 = 0xbc + 0x00bc _IPC12 = 0xbc + 0x00bc _IPC12bits = 0xbc + 0x00c2 IPC15 = 0xc2 + 0x00c2 _IPC15 = 0xc2 + 0x00c2 _IPC15bits = 0xc2 + 0x00c4 IPC16 = 0xc4 + 0x00c4 _IPC16 = 0xc4 + 0x00c4 _IPC16bits = 0xc4 + 0x00c8 IPC18 = 0xc8 + 0x00c8 _IPC18 = 0xc8 + 0x00c8 _IPC18bits = 0xc8 + 0x00ca IPC19 = 0xca + 0x00ca _IPC19 = 0xca + 0x00ca _IPC19bits = 0xca + 0x00cc IPC20 = 0xcc + 0x00cc _IPC20 = 0xcc + 0x00cc _IPC20bits = 0xcc + 0x00d4 IPC24 = 0xd4 + 0x00d4 _IPC24 = 0xd4 + 0x00d4 _IPC24bits = 0xd4 + 0x00e0 INTTREG = 0xe0 + 0x00e0 _INTTREG = 0xe0 + 0x00e0 _INTTREGbits = 0xe0 + 0x0100 TMR1 = 0x100 + 0x0100 _TMR1 = 0x100 + 0x0102 PR1 = 0x102 + 0x0102 _PR1 = 0x102 + 0x0104 T1CON = 0x104 + 0x0104 _T1CON = 0x104 + 0x0104 _T1CONbits = 0x104 + 0x0122 CLC1CONL = 0x122 + 0x0122 _CLC1CONL = 0x122 + 0x0122 _CLC1CONLbits = 0x122 + 0x0124 CLC1CONH = 0x124 + 0x0124 _CLC1CONH = 0x124 + 0x0124 _CLC1CONHbits = 0x124 + 0x0126 CLC1SEL = 0x126 + 0x0126 _CLC1SEL = 0x126 + 0x0126 _CLC1SELbits = 0x126 + 0x0126 CLC1SELL = 0x126 + 0x0126 _CLC1SELL = 0x126 + 0x0126 _CLC1SELLbits = 0x126 + 0x012a CLC1GLSL = 0x12a + 0x012a _CLC1GLSL = 0x12a + 0x012a _CLC1GLSLbits = 0x12a + 0x012c CLC1GLSH = 0x12c + 0x012c _CLC1GLSH = 0x12c + 0x012c _CLC1GLSHbits = 0x12c + 0x012e CLC2CONL = 0x12e + 0x012e _CLC2CONL = 0x12e + 0x012e _CLC2CONLbits = 0x12e + 0x0130 CLC2CONH = 0x130 + 0x0130 _CLC2CONH = 0x130 + 0x0130 _CLC2CONHbits = 0x130 + 0x0132 CLC2SEL = 0x132 + 0x0132 _CLC2SEL = 0x132 + 0x0132 _CLC2SELbits = 0x132 + 0x0132 CLC2SELL = 0x132 + 0x0132 _CLC2SELL = 0x132 + 0x0132 _CLC2SELLbits = 0x132 + 0x0136 CLC2GLSL = 0x136 + 0x0136 _CLC2GLSL = 0x136 + 0x0136 _CLC2GLSLbits = 0x136 + 0x0138 CLC2GLSH = 0x138 + 0x0138 _CLC2GLSH = 0x138 + 0x0138 _CLC2GLSHbits = 0x138 + 0x0140 CCP1CON1L = 0x140 + 0x0140 _CCP1CON1L = 0x140 + 0x0140 _CCP1CON1Lbits = 0x140 + 0x0142 CCP1CON1H = 0x142 + 0x0142 _CCP1CON1H = 0x142 + 0x0142 _CCP1CON1Hbits = 0x142 + 0x0144 CCP1CON2L = 0x144 + 0x0144 _CCP1CON2L = 0x144 + 0x0144 _CCP1CON2Lbits = 0x144 + 0x0146 CCP1CON2H = 0x146 + 0x0146 _CCP1CON2H = 0x146 + 0x0146 _CCP1CON2Hbits = 0x146 + 0x0148 CCP1CON3L = 0x148 + 0x0148 _CCP1CON3L = 0x148 + 0x0148 _CCP1CON3Lbits = 0x148 + 0x014a CCP1CON3H = 0x14a + 0x014a _CCP1CON3H = 0x14a + 0x014a _CCP1CON3Hbits = 0x14a + 0x014c CCP1STAT = 0x14c + 0x014c _CCP1STAT = 0x14c + 0x014c _CCP1STATbits = 0x14c + 0x014c CCP1STATL = 0x14c + 0x014c _CCP1STATL = 0x14c + 0x014c _CCP1STATLbits = 0x14c + 0x0150 CCP1TMRL = 0x150 + 0x0150 _CCP1TMRL = 0x150 + 0x0152 CCP1TMRH = 0x152 + 0x0152 _CCP1TMRH = 0x152 + 0x0154 CCP1PRL = 0x154 + 0x0154 _CCP1PRL = 0x154 + 0x0156 CCP1PRH = 0x156 + 0x0156 _CCP1PRH = 0x156 + 0x0158 CCP1RA = 0x158 + 0x0158 _CCP1RA = 0x158 + 0x0158 CCP1RAL = 0x158 + 0x0158 _CCP1RAL = 0x158 + 0x015c CCP1RB = 0x15c + 0x015c _CCP1RB = 0x15c + 0x015c CCP1RBL = 0x15c + 0x015c _CCP1RBL = 0x15c + 0x0160 CCP1BUFL = 0x160 + 0x0160 _CCP1BUFL = 0x160 + 0x0162 CCP1BUFH = 0x162 + 0x0162 _CCP1BUFH = 0x162 + 0x0164 CCP2CON1L = 0x164 + 0x0164 _CCP2CON1L = 0x164 + 0x0164 _CCP2CON1Lbits = 0x164 + 0x0166 CCP2CON1H = 0x166 + 0x0166 _CCP2CON1H = 0x166 + 0x0166 _CCP2CON1Hbits = 0x166 + 0x0168 CCP2CON2L = 0x168 + 0x0168 _CCP2CON2L = 0x168 + 0x0168 _CCP2CON2Lbits = 0x168 + 0x016a CCP2CON2H = 0x16a + 0x016a _CCP2CON2H = 0x16a + 0x016a _CCP2CON2Hbits = 0x16a + 0x016c CCP2CON3L = 0x16c + 0x016c _CCP2CON3L = 0x16c + 0x016c _CCP2CON3Lbits = 0x16c + 0x016e CCP2CON3H = 0x16e + 0x016e _CCP2CON3H = 0x16e + 0x016e _CCP2CON3Hbits = 0x16e + 0x0170 CCP2STAT = 0x170 + 0x0170 _CCP2STAT = 0x170 + 0x0170 _CCP2STATbits = 0x170 + 0x0170 CCP2STATL = 0x170 + 0x0170 _CCP2STATL = 0x170 + 0x0170 _CCP2STATLbits = 0x170 + 0x0174 CCP2TMRL = 0x174 + 0x0174 _CCP2TMRL = 0x174 + 0x0176 CCP2TMRH = 0x176 + 0x0176 _CCP2TMRH = 0x176 + 0x0178 CCP2PRL = 0x178 + 0x0178 _CCP2PRL = 0x178 + 0x017a CCP2PRH = 0x17a + 0x017a _CCP2PRH = 0x17a + 0x017c CCP2RA = 0x17c + 0x017c _CCP2RA = 0x17c + 0x017c CCP2RAL = 0x17c + 0x017c _CCP2RAL = 0x17c + 0x0180 CCP2RB = 0x180 + 0x0180 _CCP2RB = 0x180 + 0x0180 CCP2RBL = 0x180 + 0x0180 _CCP2RBL = 0x180 + 0x0184 CCP2BUFL = 0x184 + 0x0184 _CCP2BUFL = 0x184 + 0x0186 CCP2BUFH = 0x186 + 0x0186 _CCP2BUFH = 0x186 + 0x0188 CCP3CON1L = 0x188 + 0x0188 _CCP3CON1L = 0x188 + 0x0188 _CCP3CON1Lbits = 0x188 + 0x018a CCP3CON1H = 0x18a + 0x018a _CCP3CON1H = 0x18a + 0x018a _CCP3CON1Hbits = 0x18a + 0x018c CCP3CON2L = 0x18c + 0x018c _CCP3CON2L = 0x18c + 0x018c _CCP3CON2Lbits = 0x18c + 0x018e CCP3CON2H = 0x18e + 0x018e _CCP3CON2H = 0x18e + 0x018e _CCP3CON2Hbits = 0x18e + 0x0190 CCP3CON3L = 0x190 + 0x0190 _CCP3CON3L = 0x190 + 0x0190 _CCP3CON3Lbits = 0x190 + 0x0192 CCP3CON3H = 0x192 + 0x0192 _CCP3CON3H = 0x192 + 0x0192 _CCP3CON3Hbits = 0x192 + 0x0194 CCP3STAT = 0x194 + 0x0194 _CCP3STAT = 0x194 + 0x0194 _CCP3STATbits = 0x194 + 0x0194 CCP3STATL = 0x194 + 0x0194 _CCP3STATL = 0x194 + 0x0194 _CCP3STATLbits = 0x194 + 0x0198 CCP3TMRL = 0x198 + 0x0198 _CCP3TMRL = 0x198 + 0x019a CCP3TMRH = 0x19a + 0x019a _CCP3TMRH = 0x19a + 0x019c CCP3PRL = 0x19c + 0x019c _CCP3PRL = 0x19c + 0x019e CCP3PRH = 0x19e + 0x019e _CCP3PRH = 0x19e + 0x01a0 CCP3RA = 0x1a0 + 0x01a0 _CCP3RA = 0x1a0 + 0x01a0 CCP3RAL = 0x1a0 + 0x01a0 _CCP3RAL = 0x1a0 + 0x01a4 CCP3RB = 0x1a4 + 0x01a4 _CCP3RB = 0x1a4 + 0x01a4 CCP3RBL = 0x1a4 + 0x01a4 _CCP3RBL = 0x1a4 + 0x01a8 CCP3BUFL = 0x1a8 + 0x01a8 _CCP3BUFL = 0x1a8 + 0x01aa CCP3BUFH = 0x1aa + 0x01aa _CCP3BUFH = 0x1aa + 0x01ac CCP4CON1L = 0x1ac + 0x01ac _CCP4CON1L = 0x1ac + 0x01ac _CCP4CON1Lbits = 0x1ac + 0x01ae CCP4CON1H = 0x1ae + 0x01ae _CCP4CON1H = 0x1ae + 0x01ae _CCP4CON1Hbits = 0x1ae + 0x01b0 CCP4CON2L = 0x1b0 + 0x01b0 _CCP4CON2L = 0x1b0 + 0x01b0 _CCP4CON2Lbits = 0x1b0 + 0x01b2 CCP4CON2H = 0x1b2 + 0x01b2 _CCP4CON2H = 0x1b2 + 0x01b2 _CCP4CON2Hbits = 0x1b2 + 0x01b6 CCP4CON3H = 0x1b6 + 0x01b6 _CCP4CON3H = 0x1b6 + 0x01b6 _CCP4CON3Hbits = 0x1b6 + 0x01b8 CCP4STAT = 0x1b8 + 0x01b8 _CCP4STAT = 0x1b8 + 0x01b8 _CCP4STATbits = 0x1b8 + 0x01b8 CCP4STATL = 0x1b8 + 0x01b8 _CCP4STATL = 0x1b8 + 0x01b8 _CCP4STATLbits = 0x1b8 + 0x01bc CCP4TMRL = 0x1bc + 0x01bc _CCP4TMRL = 0x1bc + 0x01be CCP4TMRH = 0x1be + 0x01be _CCP4TMRH = 0x1be + 0x01c0 CCP4PRL = 0x1c0 + 0x01c0 _CCP4PRL = 0x1c0 + 0x01c2 CCP4PRH = 0x1c2 + 0x01c2 _CCP4PRH = 0x1c2 + 0x01c4 CCP4RA = 0x1c4 + 0x01c4 _CCP4RA = 0x1c4 + 0x01c4 CCP4RAL = 0x1c4 + 0x01c4 _CCP4RAL = 0x1c4 + 0x01c8 CCP4RB = 0x1c8 + 0x01c8 _CCP4RB = 0x1c8 + 0x01c8 CCP4RBL = 0x1c8 + 0x01c8 _CCP4RBL = 0x1c8 + 0x01cc CCP4BUFL = 0x1cc + 0x01cc _CCP4BUFL = 0x1cc + 0x01ce CCP4BUFH = 0x1ce + 0x01ce _CCP4BUFH = 0x1ce + 0x01d0 CCP5CON1L = 0x1d0 + 0x01d0 _CCP5CON1L = 0x1d0 + 0x01d0 _CCP5CON1Lbits = 0x1d0 + 0x01d2 CCP5CON1H = 0x1d2 + 0x01d2 _CCP5CON1H = 0x1d2 + 0x01d2 _CCP5CON1Hbits = 0x1d2 + 0x01d4 CCP5CON2L = 0x1d4 + 0x01d4 _CCP5CON2L = 0x1d4 + 0x01d4 _CCP5CON2Lbits = 0x1d4 + 0x01d6 CCP5CON2H = 0x1d6 + 0x01d6 _CCP5CON2H = 0x1d6 + 0x01d6 _CCP5CON2Hbits = 0x1d6 + 0x01da CCP5CON3H = 0x1da + 0x01da _CCP5CON3H = 0x1da + 0x01da _CCP5CON3Hbits = 0x1da + 0x01dc CCP5STAT = 0x1dc + 0x01dc _CCP5STAT = 0x1dc + 0x01dc _CCP5STATbits = 0x1dc + 0x01dc CCP5STATL = 0x1dc + 0x01dc _CCP5STATL = 0x1dc + 0x01dc _CCP5STATLbits = 0x1dc + 0x01e0 CCP5TMRL = 0x1e0 + 0x01e0 _CCP5TMRL = 0x1e0 + 0x01e2 CCP5TMRH = 0x1e2 + 0x01e2 _CCP5TMRH = 0x1e2 + 0x01e4 CCP5PRL = 0x1e4 + 0x01e4 _CCP5PRL = 0x1e4 + 0x01e6 CCP5PRH = 0x1e6 + 0x01e6 _CCP5PRH = 0x1e6 + 0x01e8 CCP5RA = 0x1e8 + 0x01e8 _CCP5RA = 0x1e8 + 0x01e8 CCP5RAL = 0x1e8 + 0x01e8 _CCP5RAL = 0x1e8 + 0x01ec CCP5RB = 0x1ec + 0x01ec _CCP5RB = 0x1ec + 0x01ec CCP5RBL = 0x1ec + 0x01ec _CCP5RBL = 0x1ec + 0x01f0 CCP5BUFL = 0x1f0 + 0x01f0 _CCP5BUFL = 0x1f0 + 0x01f2 CCP5BUFH = 0x1f2 + 0x01f2 _CCP5BUFH = 0x1f2 + 0x0200 SPI1BUF = 0x200 + 0x0200 _SPI1BUF = 0x200 + 0x0200 _SPI1BUFbits = 0x200 + 0x0200 SSP1BUF = 0x200 + 0x0200 _SSP1BUF = 0x200 + 0x0200 _SSP1BUFbits = 0x200 + 0x0202 SSP1CON1 = 0x202 + 0x0202 _SSP1CON1 = 0x202 + 0x0202 _SSP1CON1bits = 0x202 + 0x0204 SSP1CON2 = 0x204 + 0x0204 _SSP1CON2 = 0x204 + 0x0204 _SSP1CON2bits = 0x204 + 0x0206 SSP1CON3 = 0x206 + 0x0206 _SSP1CON3 = 0x206 + 0x0206 _SSP1CON3bits = 0x206 + 0x0208 SSP1STAT = 0x208 + 0x0208 _SSP1STAT = 0x208 + 0x0208 _SSP1STATbits = 0x208 + 0x020a I2C1ADD = 0x20a + 0x020a _I2C1ADD = 0x20a + 0x020a _I2C1ADDbits = 0x20a + 0x020a I2C1BRG = 0x20a + 0x020a _I2C1BRG = 0x20a + 0x020a _I2C1BRGbits = 0x20a + 0x020a SSP1ADD = 0x20a + 0x020a _SSP1ADD = 0x20a + 0x020a _SSP1ADDbits = 0x20a + 0x020a SSP1BRG = 0x20a + 0x020a _SSP1BRG = 0x20a + 0x020a _SSP1BRGbits = 0x20a + 0x020c I2C1MSK = 0x20c + 0x020c _I2C1MSK = 0x20c + 0x020c _I2C1MSKbits = 0x20c + 0x020c SSP1MSK = 0x20c + 0x020c _SSP1MSK = 0x20c + 0x020c _SSP1MSKbits = 0x20c + 0x0210 SPI2BUF = 0x210 + 0x0210 _SPI2BUF = 0x210 + 0x0210 _SPI2BUFbits = 0x210 + 0x0210 SSP2BUF = 0x210 + 0x0210 _SSP2BUF = 0x210 + 0x0210 _SSP2BUFbits = 0x210 + 0x0212 SSP2CON1 = 0x212 + 0x0212 _SSP2CON1 = 0x212 + 0x0212 _SSP2CON1bits = 0x212 + 0x0214 SSP2CON2 = 0x214 + 0x0214 _SSP2CON2 = 0x214 + 0x0214 _SSP2CON2bits = 0x214 + 0x0216 SSP2CON3 = 0x216 + 0x0216 _SSP2CON3 = 0x216 + 0x0216 _SSP2CON3bits = 0x216 + 0x0218 SSP2STAT = 0x218 + 0x0218 _SSP2STAT = 0x218 + 0x0218 _SSP2STATbits = 0x218 + 0x021a I2C2ADD = 0x21a + 0x021a _I2C2ADD = 0x21a + 0x021a _I2C2ADDbits = 0x21a + 0x021a I2C2BRG = 0x21a + 0x021a _I2C2BRG = 0x21a + 0x021a _I2C2BRGbits = 0x21a + 0x021a SSP2ADD = 0x21a + 0x021a _SSP2ADD = 0x21a + 0x021a _SSP2ADDbits = 0x21a + 0x021a SSP2BRG = 0x21a + 0x021a _SSP2BRG = 0x21a + 0x021a _SSP2BRGbits = 0x21a + 0x021c I2C2MSK = 0x21c + 0x021c _I2C2MSK = 0x21c + 0x021c _I2C2MSKbits = 0x21c + 0x021c SSP2MSK = 0x21c + 0x021c _SSP2MSK = 0x21c + 0x021c _SSP2MSKbits = 0x21c + 0x0220 U1MODE = 0x220 + 0x0220 _U1MODE = 0x220 + 0x0220 _U1MODEbits = 0x220 + 0x0222 U1STA = 0x222 + 0x0222 _U1STA = 0x222 + 0x0222 _U1STAbits = 0x222 + 0x0224 U1TXREG = 0x224 + 0x0224 _U1TXREG = 0x224 + 0x0226 U1RXREG = 0x226 + 0x0226 _U1RXREG = 0x226 + 0x0228 U1BRG = 0x228 + 0x0228 _U1BRG = 0x228 + 0x0230 U2MODE = 0x230 + 0x0230 _U2MODE = 0x230 + 0x0230 _U2MODEbits = 0x230 + 0x0232 U2STA = 0x232 + 0x0232 _U2STA = 0x232 + 0x0232 _U2STAbits = 0x232 + 0x0234 U2TXREG = 0x234 + 0x0234 _U2TXREG = 0x234 + 0x0236 U2RXREG = 0x236 + 0x0236 _U2RXREG = 0x236 + 0x0238 U2BRG = 0x238 + 0x0238 _U2BRG = 0x238 + 0x024a AMP1CON = 0x24a + 0x024a _AMP1CON = 0x24a + 0x024a _AMP1CONbits = 0x24a + 0x024c AMP2CON = 0x24c + 0x024c _AMP2CON = 0x24c + 0x024c _AMP2CONbits = 0x24c + 0x0274 DAC1CON = 0x274 + 0x0274 _DAC1CON = 0x274 + 0x0274 _DAC1CONbits = 0x274 + 0x0276 DAC1DAT = 0x276 + 0x0276 _DAC1DAT = 0x276 + 0x0278 DAC2CON = 0x278 + 0x0278 _DAC2CON = 0x278 + 0x0278 _DAC2CONbits = 0x278 + 0x027a DAC2DAT = 0x27a + 0x027a _DAC2DAT = 0x27a + 0x02c0 TRISA = 0x2c0 + 0x02c0 _TRISA = 0x2c0 + 0x02c0 _TRISAbits = 0x2c0 + 0x02c2 PORTA = 0x2c2 + 0x02c2 _PORTA = 0x2c2 + 0x02c2 _PORTAbits = 0x2c2 + 0x02c4 LATA = 0x2c4 + 0x02c4 _LATA = 0x2c4 + 0x02c4 _LATAbits = 0x2c4 + 0x02c6 ODCA = 0x2c6 + 0x02c6 _ODCA = 0x2c6 + 0x02c6 _ODCAbits = 0x2c6 + 0x02c8 TRISB = 0x2c8 + 0x02c8 _TRISB = 0x2c8 + 0x02c8 _TRISBbits = 0x2c8 + 0x02ca PORTB = 0x2ca + 0x02ca _PORTB = 0x2ca + 0x02ca _PORTBbits = 0x2ca + 0x02cc LATB = 0x2cc + 0x02cc _LATB = 0x2cc + 0x02cc _LATBbits = 0x2cc + 0x02ce ODCB = 0x2ce + 0x02ce _ODCB = 0x2ce + 0x02ce _ODCBbits = 0x2ce + 0x02fc PADCFG1 = 0x2fc + 0x02fc _PADCFG1 = 0x2fc + 0x02fc _PADCFG1bits = 0x2fc + 0x0300 ADC1BUF0 = 0x300 + 0x0300 _ADC1BUF0 = 0x300 + 0x0302 ADC1BUF1 = 0x302 + 0x0302 _ADC1BUF1 = 0x302 + 0x0304 ADC1BUF2 = 0x304 + 0x0304 _ADC1BUF2 = 0x304 + 0x0306 ADC1BUF3 = 0x306 + 0x0306 _ADC1BUF3 = 0x306 + 0x0308 ADC1BUF4 = 0x308 + 0x0308 _ADC1BUF4 = 0x308 + 0x030a ADC1BUF5 = 0x30a + 0x030a _ADC1BUF5 = 0x30a + 0x030c ADC1BUF6 = 0x30c + 0x030c _ADC1BUF6 = 0x30c + 0x030e ADC1BUF7 = 0x30e + 0x030e _ADC1BUF7 = 0x30e + 0x0310 ADC1BUF8 = 0x310 + 0x0310 _ADC1BUF8 = 0x310 + 0x0312 ADC1BUF9 = 0x312 + 0x0312 _ADC1BUF9 = 0x312 + 0x0314 ADC1BUF10 = 0x314 + 0x0314 _ADC1BUF10 = 0x314 + 0x0316 ADC1BUF11 = 0x316 + 0x0316 _ADC1BUF11 = 0x316 + 0x0318 ADC1BUF12 = 0x318 + 0x0318 _ADC1BUF12 = 0x318 + 0x031a ADC1BUF13 = 0x31a + 0x031a _ADC1BUF13 = 0x31a + 0x031c ADC1BUF14 = 0x31c + 0x031c _ADC1BUF14 = 0x31c + 0x031e ADC1BUF15 = 0x31e + 0x031e _ADC1BUF15 = 0x31e + 0x0320 ADC1BUF16 = 0x320 + 0x0320 _ADC1BUF16 = 0x320 + 0x0322 ADC1BUF17 = 0x322 + 0x0322 _ADC1BUF17 = 0x322 + 0x0324 ADC1BUF18 = 0x324 + 0x0324 _ADC1BUF18 = 0x324 + 0x0326 ADC1BUF19 = 0x326 + 0x0326 _ADC1BUF19 = 0x326 + 0x0328 ADC1BUF20 = 0x328 + 0x0328 _ADC1BUF20 = 0x328 + 0x032a ADC1BUF21 = 0x32a + 0x032a _ADC1BUF21 = 0x32a + 0x032c ADC1BUF22 = 0x32c + 0x032c _ADC1BUF22 = 0x32c + 0x032e ADC1BUF23 = 0x32e + 0x032e _ADC1BUF23 = 0x32e + 0x0340 AD1CON1 = 0x340 + 0x0340 _AD1CON1 = 0x340 + 0x0340 _AD1CON1bits = 0x340 + 0x0342 AD1CON2 = 0x342 + 0x0342 _AD1CON2 = 0x342 + 0x0342 _AD1CON2bits = 0x342 + 0x0344 AD1CON3 = 0x344 + 0x0344 _AD1CON3 = 0x344 + 0x0344 _AD1CON3bits = 0x344 + 0x0348 AD1CHS = 0x348 + 0x0348 _AD1CHS = 0x348 + 0x0348 _AD1CHSbits = 0x348 + 0x0348 AD1CHS0 = 0x348 + 0x0348 _AD1CHS0 = 0x348 + 0x0348 _AD1CHS0bits = 0x348 + 0x034e AD1CSSH = 0x34e + 0x034e _AD1CSSH = 0x34e + 0x034e _AD1CSSHbits = 0x34e + 0x0350 AD1CSSL = 0x350 + 0x0350 _AD1CSSL = 0x350 + 0x0350 _AD1CSSLbits = 0x350 + 0x0354 AD1CON5 = 0x354 + 0x0354 _AD1CON5 = 0x354 + 0x0354 _AD1CON5bits = 0x354 + 0x0356 AD1CHITH = 0x356 + 0x0356 _AD1CHITH = 0x356 + 0x0356 _AD1CHITHbits = 0x356 + 0x0358 AD1CHITL = 0x358 + 0x0358 _AD1CHITL = 0x358 + 0x0358 _AD1CHITLbits = 0x358 + 0x035a CTMUCON1L = 0x35a + 0x035a _CTMUCON1L = 0x35a + 0x035a _CTMUCON1Lbits = 0x35a + 0x035c CTMUCON1H = 0x35c + 0x035c _CTMUCON1H = 0x35c + 0x035c _CTMUCON1Hbits = 0x35c + 0x035e CTMUCON2 = 0x35e + 0x035e _CTMUCON2 = 0x35e + 0x035e _CTMUCON2bits = 0x35e + 0x035e CTMUCON2L = 0x35e + 0x035e _CTMUCON2L = 0x35e + 0x035e _CTMUCON2Lbits = 0x35e + 0x0360 AD1CTMENH = 0x360 + 0x0360 _AD1CTMENH = 0x360 + 0x0360 _AD1CTMENHbits = 0x360 + 0x0362 AD1CTMENL = 0x362 + 0x0362 _AD1CTMENL = 0x362 + 0x0362 _AD1CTMENLbits = 0x362 + 0x04e0 ANSA = 0x4e0 + 0x04e0 _ANSA = 0x4e0 + 0x04e0 _ANSAbits = 0x4e0 + 0x04e0 ANSELA = 0x4e0 + 0x04e0 _ANSELA = 0x4e0 + 0x04e0 _ANSELAbits = 0x4e0 + 0x04e2 ANSB = 0x4e2 + 0x04e2 _ANSB = 0x4e2 + 0x04e2 _ANSBbits = 0x4e2 + 0x04e2 ANSELB = 0x4e2 + 0x04e2 _ANSELB = 0x4e2 + 0x04e2 _ANSELBbits = 0x4e2 + 0x0620 ALRMVAL = 0x620 + 0x0620 _ALRMVAL = 0x620 + 0x0622 ALCFGRPT = 0x622 + 0x0622 _ALCFGRPT = 0x622 + 0x0622 _ALCFGRPTbits = 0x622 + 0x0624 RTCVAL = 0x624 + 0x0624 _RTCVAL = 0x624 + 0x0626 RCFGCAL = 0x626 + 0x0626 _RCFGCAL = 0x626 + 0x0626 _RCFGCALbits = 0x626 + 0x0628 RTCPWC = 0x628 + 0x0628 _RTCPWC = 0x628 + 0x0628 _RTCPWCbits = 0x628 + 0x0630 CMSTAT = 0x630 + 0x0630 _CMSTAT = 0x630 + 0x0630 _CMSTATbits = 0x630 + 0x0632 CVRCON = 0x632 + 0x0632 _CVRCON = 0x632 + 0x0632 _CVRCONbits = 0x632 + 0x0634 CM1CON = 0x634 + 0x0634 _CM1CON = 0x634 + 0x0634 _CM1CONbits = 0x634 + 0x0636 CM2CON = 0x636 + 0x0636 _CM2CON = 0x636 + 0x0636 _CM2CONbits = 0x636 + 0x0638 CM3CON = 0x638 + 0x0638 _CM3CON = 0x638 + 0x0638 _CM3CONbits = 0x638 + 0x0670 BUFCON0 = 0x670 + 0x0670 _BUFCON0 = 0x670 + 0x0670 _BUFCON0bits = 0x670 + 0x0740 RCON = 0x740 + 0x0740 _RCON = 0x740 + 0x0740 _RCONbits = 0x740 + 0x0742 OSCCON = 0x742 + 0x0742 _OSCCON = 0x742 + 0x0742 _OSCCONbits = 0x742 + 0x0742 OSCCONL = 0x742 + 0x0742 _OSCCONL = 0x742 + 0x0743 OSCCONH = 0x743 + 0x0743 _OSCCONH = 0x743 + 0x0744 CLKDIV = 0x744 + 0x0744 _CLKDIV = 0x744 + 0x0744 _CLKDIVbits = 0x744 + 0x0748 OSCTUN = 0x748 + 0x0748 _OSCTUN = 0x748 + 0x0748 _OSCTUNbits = 0x748 + 0x074e REFOCON = 0x74e + 0x074e _REFOCON = 0x74e + 0x074e _REFOCONbits = 0x74e + 0x0756 HLVDCON = 0x756 + 0x0756 _HLVDCON = 0x756 + 0x0756 _HLVDCONbits = 0x756 + 0x0760 NVMCON = 0x760 + 0x0760 _NVMCON = 0x760 + 0x0760 _NVMCONbits = 0x760 + 0x0766 NVMKEY = 0x766 + 0x0766 _NVMKEY = 0x766 + 0x0766 _NVMKEYbits = 0x766 + 0x0768 ULPWCON = 0x768 + 0x0768 _ULPWCON = 0x768 + 0x0768 _ULPWCONbits = 0x768 + 0x0770 PMD1 = 0x770 + 0x0770 _PMD1 = 0x770 + 0x0770 _PMD1bits = 0x770 + 0x0772 PMD2 = 0x772 + 0x0772 _PMD2 = 0x772 + 0x0772 _PMD2bits = 0x772 + 0x0774 PMD3 = 0x774 + 0x0774 _PMD3 = 0x774 + 0x0774 _PMD3bits = 0x774 + 0x0776 PMD4 = 0x776 + 0x0776 _PMD4 = 0x776 + 0x0776 _PMD4bits = 0x776 + 0x077a PMD6 = 0x77a + 0x077a _PMD6 = 0x77a + 0x077a _PMD6bits = 0x77a + 0x077e PMD8 = 0x77e + 0x077e _PMD8 = 0x77e + 0x077e _PMD8bits = 0x77e + 0x0220 UART1 = 0x220 + 0x0220 _UART1 = 0x220 + 0x0230 UART2 = 0x230 + 0x0230 _UART2 = 0x230 +START GROUP +LOAD /opt/microchip/xc16/v2.10/bin/bin/../../lib/libc99-pic30-elf.a +LOAD /opt/microchip/xc16/v2.10/bin/bin/../../lib/libm-elf.a +LOAD /opt/microchip/xc16/v2.10/bin/bin/../../lib/libc99-elf.a +END GROUP +OUTPUT(dist/default/production/resbox.X.production.elf elf32-pic30) +LOAD /CW/_FGS¨lŸÔþ\ +LOAD /CW/_FBSx0 Ôþ\ +LOAD jump_table +LOAD default_isr +LOAD data_init + +.debug_pubtypes + 0x0000f0 0x42c + .debug_pubtypes + 0x0000f0 0x5b build/default/production/mcc_generated_files/interrupt_manager.o + .debug_pubtypes + 0x00014b 0x2b build/default/production/mcc_generated_files/clock.o + .debug_pubtypes + 0x000176 0x1f build/default/production/mcc_generated_files/pin_manager.o + .debug_pubtypes + 0x000195 0x114 build/default/production/mcc_generated_files/mssp2_i2c.o + .debug_pubtypes + 0x0002a9 0x42 build/default/production/mcc_generated_files/system.o + .debug_pubtypes + 0x0002eb 0x4e build/default/production/mcc_generated_files/traps.o + .debug_pubtypes + 0x000339 0x92 build/default/production/mcc_generated_files/mssp1_spi.o + .debug_pubtypes + 0x0003cb 0x65 build/default/production/main.o + .debug_pubtypes + 0x000430 0x2b build/default/production/SPI.o + .debug_pubtypes + 0x00045b 0xc1 build/default/production/mcc_generated_files/tmr1.o + +__c30_signature + 0x00051c 0x4e + __c30_signature + 0x00051c 0x6 build/default/production/mcc_generated_files/interrupt_manager.o + __c30_signature + 0x000522 0x6 build/default/production/mcc_generated_files/clock.o + __c30_signature + 0x000528 0x6 build/default/production/mcc_generated_files/pin_manager.o + __c30_signature + 0x00052e 0x6 build/default/production/mcc_generated_files/mssp2_i2c.o + __c30_signature + 0x000534 0x6 build/default/production/mcc_generated_files/system.o + __c30_signature + 0x00053a 0x6 build/default/production/mcc_generated_files/traps.o + __c30_signature + 0x000540 0x6 build/default/production/mcc_generated_files/mcc.o + __c30_signature + 0x000546 0x6 build/default/production/mcc_generated_files/mssp1_spi.o + __c30_signature + 0x00054c 0x6 build/default/production/main.o + __c30_signature + 0x000552 0x6 build/default/production/SPI.o + __c30_signature + 0x000558 0x6 build/default/production/mcc_generated_files/tmr1.o + __c30_signature + 0x00055e 0x6 /opt/microchip/xc16/v2.10/bin/bin/../../lib/libc99-pic30-elf.a(crt0_standard.o) + __c30_signature + 0x000564 0x6 /opt/microchip/xc16/v2.10/bin/bin/../../lib/libc99-pic30-elf.a(data_init_standard.o) + +.nbss 0x0800 0x4a + .nbss 0x0800 0x20 build/default/production/mcc_generated_files/traps.o + .nbss 0x0820 0x16 build/default/production/SPI.o + 0x0820 _WriteBuffer + 0x0826 _ReadBuffer + 0x082c _writeData + 0x082e _readData + 0x0830 _addr0 + 0x0831 _addr1 + 0x0832 _write + 0x0834 _total + .nbss 0x0836 0x14 build/default/production/mcc_generated_files/mssp2_i2c.o + 0x083e _yeah + 0x083f _index + 0x0840 _temp + 0x0841 _i2cArray + +.ndata 0x084a 0xa + .ndata 0x084a 0xa build/default/production/mcc_generated_files/mssp2_i2c.o + 0x084a _slaveAddress + 0x084b _regAdd + +.nbss 0x0854 0x4 + .nbss 0x0854 0x4 build/default/production/mcc_generated_files/tmr1.o + 0x0854 _TMR1_InterruptHandler + +.ndata 0x0858 0x2 + .ndata 0x0858 0x2 build/default/production/mcc_generated_files/traps.o + +.nbss 0x085a 0x2 + .nbss 0x085a 0x2 build/default/production/main.o + 0x085a _nullarray + +.ivt._MSSP2Interrupt + 0x000076 0x2 + .ivt._MSSP2Interrupt + 0x000076 0x2 build/default/production/mcc_generated_files/mssp2_i2c.o + +.config_ICS 0xf8000e 0x2 + .config_ICS 0xf8000e 0x2 build/default/production/mcc_generated_files/system.o + +.config_MCLRE 0xf8000c 0x2 + .config_MCLRE 0xf8000c 0x2 build/default/production/mcc_generated_files/system.o + +.config_WINDIS 0xf8000a 0x2 + .config_WINDIS + 0xf8000a 0x2 build/default/production/mcc_generated_files/system.o + +.config_FCKSM 0xf80008 0x2 + .config_FCKSM 0xf80008 0x2 build/default/production/mcc_generated_files/system.o + +.config_IESO 0xf80006 0x2 + .config_IESO 0xf80006 0x2 build/default/production/mcc_generated_files/system.o + +.ivt._OscillatorFail + 0x000006 0x2 + .ivt._OscillatorFail + 0x000006 0x2 build/default/production/mcc_generated_files/traps.o + +.ivt._StackError + 0x00000a 0x2 + .ivt._StackError + 0x00000a 0x2 build/default/production/mcc_generated_files/traps.o + +.ivt._AddressError + 0x000008 0x2 + .ivt._AddressError + 0x000008 0x2 build/default/production/mcc_generated_files/traps.o + +.ivt._MathError + 0x00000c 0x2 + .ivt._MathError + 0x00000c 0x2 build/default/production/mcc_generated_files/traps.o + +.ivt._T1Interrupt + 0x00001a 0x2 + .ivt._T1Interrupt + 0x00001a 0x2 build/default/production/mcc_generated_files/tmr1.o + +.text 0x000464 0x6e2 + .text 0x000464 0x3e6 build/default/production/SPI.o + 0x000464 _Message_OUT + 0x0004ee _Message_BIM + 0x00052a _Message_MAPIN0 + 0x000566 _Message_MAPIN1 + 0x0005a2 _Message_INST + 0x0005b4 _Message_DAGIOL + 0x0005f0 _Message_DAGOSM + 0x000602 _Message_DAGOLON + 0x000614 _Message_DAGOLONEN + 0x000650 _Message_HWCR + 0x000674 _Message_HWCROCL + 0x00069a _Message_HWCRPWM + 0x0006d6 _Message_PWMCR0 + 0x000752 _Message_PWMCR1 + 0x0007ce _Message_PWMOUT + 0x00080c _Message_PWMMAP + .text 0x00084a 0xf6 build/default/production/mcc_generated_files/mssp1_spi.o + 0x00084a _MSSP1_SPI_Initialize + 0x000862 _MSSP1_SPI_Exchange8bit + 0x00087c _MSSP1_SPI_Exchange8bitBuffer + 0x0008f0 _MSSP1_SPI_IsBufferFull + 0x000904 _MSSP1_SPI_HasWriteCollisionOccured + 0x00091a _MSSP1_SPI_HasReceiveOverflowOccured + 0x000930 _SPI_slaveSelect + 0x000938 _SPI_slaveDeselect + .text 0x000940 0xda build/default/production/mcc_generated_files/mssp2_i2c.o + 0x000940 _MSSP2_I2C_Initialize + 0x00096c _MSSP2_I2C_ReadPointerSet + 0x000978 _MSSP2_I2C_WritePointerSet + 0x000984 _MSSP2_I2C_ReadPointerGet + 0x00098c _MSSP2_I2C_WritePointerGet + 0x000994 _MSSP2_I2C_SlaveAddressMaskSet + 0x0009a0 _MSSP2_I2C_SlaveAddressSet + 0x0009d6 _MSSP2_I2C_StatusCallback + .text 0x000a1a 0xa4 build/default/production/mcc_generated_files/tmr1.o + 0x000a1a _TMR1_Initialize + 0x000a3a _TMR1_Period16BitSet + 0x000a48 _TMR1_Period16BitGet + 0x000a50 _TMR1_Counter16BitSet + 0x000a5e _TMR1_Counter16BitGet + 0x000a66 _TMR1_CallBack + 0x000a70 _TMR1_SetInterruptHandler + 0x000a80 _TMR1_Start + 0x000a8c _TMR1_Stop + 0x000a96 _TMR1_GetElapsedThenClear + 0x000aac _TMR1_SoftwareCounterGet + 0x000ab6 _TMR1_SoftwareCounterClear + .text 0x000abe 0x52 build/default/production/main.o + 0x000abe _main + .text 0x000b10 0x36 build/default/production/mcc_generated_files/clock.o + 0x000b10 _CLOCK_Initialize + +.dinit 0x000b46 0x36 + .dinit 0x000b46 0x36 data_init + +.text 0x000b7c 0x6a + .text 0x000b7c 0x26 build/default/production/mcc_generated_files/pin_manager.o + 0x000b7c _PIN_MANAGER_Initialize + .text 0x000ba2 0x1a build/default/production/mcc_generated_files/interrupt_manager.o + 0x000ba2 _INTERRUPT_Initialize + .text 0x000bbc 0x18 build/default/production/mcc_generated_files/traps.o + 0x000bbc _TRAPS_halt_on_error + .text 0x000bd4 0x12 build/default/production/mcc_generated_files/system.o + 0x000bd4 _SYSTEM_Initialize diff --git a/mcc_generated_files/clock.c b/mcc_generated_files/clock.c new file mode 100644 index 0000000..2d07d28 --- /dev/null +++ b/mcc_generated_files/clock.c @@ -0,0 +1,72 @@ +/** + @Generated PIC24 / dsPIC33 / PIC32MM MCUs Source File + + @Company: + Microchip Technology Inc. + + @File Name: + clock.c + + @Summary: + This is the clock.c file generated using PIC24 / dsPIC33 / PIC32MM MCUs + + @Description: + This header file provides implementations for driver APIs for all modules selected in the GUI. + Generation Information : + Product Revision : PIC24 / dsPIC33 / PIC32MM MCUs - 1.171.4 + Device : PIC24FV16KM202 + The generated drivers are tested against the following: + Compiler : XC16 v2.10 + MPLAB : MPLAB X v6.05 +*/ + +/* + (c) 2020 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + +#include +#include "xc.h" +#include "clock.h" + +void CLOCK_Initialize(void) +{ + // RCDIV FRC/2; DOZE 1:8; DOZEN disabled; ROI disabled; + CLKDIV = 0x3100; + // TUN Center frequency; + OSCTUN = 0x00; + // ROEN disabled; ROSEL FOSC; RODIV 0; ROSSLP disabled; + REFOCON = 0x00; + // ADC1MD enabled; SSP1MD enabled; T1MD enabled; U2MD enabled; U1MD enabled; + PMD1 = 0x00; + // CCP2MD enabled; CCP1MD enabled; CCP4MD enabled; CCP3MD enabled; CCP5MD enabled; + PMD2 = 0x00; + // SSP2MD enabled; RTCCMD enabled; CMPMD enabled; DAC1MD enabled; + PMD3 = 0x00; + // CTMUMD enabled; REFOMD enabled; ULPWUMD enabled; HLVDMD enabled; + PMD4 = 0x00; + // AMP2MD enabled; AMP1MD enabled; DAC2MD enabled; + PMD6 = 0x00; + // CLC1MD enabled; CLC2MD enabled; + PMD8 = 0x00; + // CF no clock failure; NOSC PRI; SOSCEN disabled; SOSCDRV disabled; CLKLOCK unlocked; OSWEN Switch is Complete; + __builtin_write_OSCCONH((uint8_t) (0x02)); + __builtin_write_OSCCONL((uint8_t) (0x00)); +} diff --git a/mcc_generated_files/clock.h b/mcc_generated_files/clock.h new file mode 100644 index 0000000..6b6c2d7 --- /dev/null +++ b/mcc_generated_files/clock.h @@ -0,0 +1,80 @@ +/** + @Generated PIC24 / dsPIC33 / PIC32MM MCUs Source File + + @Company: + Microchip Technology Inc. + + @File Name: + clock.h + + @Summary: + This is the clock.h file generated using PIC24 / dsPIC33 / PIC32MM MCUs + + @Description: + This header file provides implementations for driver APIs for all modules selected in the GUI. + Generation Information : + Product Revision : PIC24 / dsPIC33 / PIC32MM MCUs - 1.171.4 + Device : PIC24FV16KM202 + The generated drivers are tested against the following: + Compiler : XC16 v2.10 + MPLAB : MPLAB X v6.05 +*/ + +/* + (c) 2020 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + +#ifndef CLOCK_H +#define CLOCK_H + +/** + Section: Included Files +*/ + +#include + +#ifndef _XTAL_FREQ +#define _XTAL_FREQ 20000000UL +#endif + +#define CLOCK_SystemFrequencyGet() (20000000UL) + +#define CLOCK_PeripheralFrequencyGet() (CLOCK_SystemFrequencyGet() / 2) + +#define CLOCK_InstructionFrequencyGet() (CLOCK_SystemFrequencyGet() / 2) +/** + * @Param + none + * @Returns + none + * @Description + Initializes the oscillator to the default states configured in the + * MCC GUI + * @Example + CLOCK_Initialize(void); + */ +void CLOCK_Initialize(void); + + +#endif /* CLOCK_H */ +/** + End of File +*/ \ No newline at end of file diff --git a/mcc_generated_files/interrupt_manager.c b/mcc_generated_files/interrupt_manager.c new file mode 100644 index 0000000..cc601c1 --- /dev/null +++ b/mcc_generated_files/interrupt_manager.c @@ -0,0 +1,62 @@ +/** + System Interrupts Generated Driver File + + @Company: + Microchip Technology Inc. + + @File Name: + interrupt_manager.h + + @Summary: + This is the generated driver implementation file for setting up the + interrupts using PIC24 / dsPIC33 / PIC32MM MCUs + + @Description: + This source file provides implementations for PIC24 / dsPIC33 / PIC32MM MCUs interrupts. + Generation Information : + Product Revision : PIC24 / dsPIC33 / PIC32MM MCUs - 1.171.4 + Device : PIC24FV16KM202 + The generated drivers are tested against the following: + Compiler : XC16 v2.10 + MPLAB : MPLAB X v6.05 +*/ +/* + (c) 2020 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + +/** + Section: Includes +*/ +#include + +/** + void INTERRUPT_Initialize (void) +*/ +void INTERRUPT_Initialize (void) +{ + // SSPI: MSSP2 - I2C/SPI Interrupt + // Priority: 1 + IPC12bits.SSP2IP = 1; + // TI: T1 - Timer1 + // Priority: 1 + IPC0bits.T1IP = 1; + +} diff --git a/mcc_generated_files/interrupt_manager.h b/mcc_generated_files/interrupt_manager.h new file mode 100644 index 0000000..e88d4cc --- /dev/null +++ b/mcc_generated_files/interrupt_manager.h @@ -0,0 +1,167 @@ +/** + System Interrupts Generated Driver File + + @Company: + Microchip Technology Inc. + + @File Name: + interrupt_manager.h + + @Summary: + This is the generated driver implementation file for setting up the + interrupts using PIC24 / dsPIC33 / PIC32MM MCUs + + @Description: + This source file provides implementations for PIC24 / dsPIC33 / PIC32MM MCUs interrupts. + Generation Information : + Product Revision : PIC24 / dsPIC33 / PIC32MM MCUs - 1.171.4 + Device : PIC24FV16KM202 + The generated drivers are tested against the following: + Compiler : XC16 v2.10 + MPLAB : MPLAB X v6.05 +*/ +/* + (c) 2020 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + +#ifndef _INTERRUPT_MANAGER_H +#define _INTERRUPT_MANAGER_H + +/** + @Summary + Initializes the interrupt priorities of the PIC24FV16KM202 + + @Description + This routine sets the interrupt priorities of the modules that have been configured + for the PIC24FV16KM202 + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + + void SYSTEM_Initialize(void) + { + // Other initializers are called from this function + INTERRUPT_Initialize (); + } + + +*/ +void INTERRUPT_Initialize(void); + +/** + @Summary + Enables global interrupts of the PIC24FV16KM202 + + @Description + This routine enables the global interrupt bit for the PIC24FV16KM202 + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + + void SYSTEM_Initialize(void) + { + // Other initializers are called from this function + INTERRUPT_GlobalEnable (); + } + + +*/ +inline static void INTERRUPT_GlobalEnable(void) +{ + __builtin_enable_interrupts(); +} + +/** + @Summary + Disables global interrupts of the PIC24FV16KM202 + + @Description + This routine disables the global interrupt bit for the PIC24FV16KM202 + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + + void SYSTEM_Initialize(void) + { + // Other initializers are called from this function + INTERRUPT_GlobalDisable (); + } + + +*/ +inline static void INTERRUPT_GlobalDisable(void) +{ + __builtin_disable_interrupts(); +} + +/** + @Summary + Returns the interrupt vector number of the interrupt which is pending. + + @Description + This routine returns the interrupt vector number of the interrupt which is pending. + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + + uint16_t ivrNum; + ivrNum = INTERRUPT_VectorNumberGet(); + + +*/ +inline static uint16_t INTERRUPT_VectorNumberGet(void) +{ + return _VECNUM; +} + +#endif \ No newline at end of file diff --git a/mcc_generated_files/mcc.c b/mcc_generated_files/mcc.c new file mode 100644 index 0000000..f842343 --- /dev/null +++ b/mcc_generated_files/mcc.c @@ -0,0 +1,47 @@ +/** + @Generated PIC24 / dsPIC33 / PIC32MM MCUs Source File + + @Company: + Microchip Technology Inc. + + @File Name: + mcc.c + + @Summary: + This is the mcc.c file generated using PIC24 / dsPIC33 / PIC32MM MCUs + + @Description: + The configuration contents of this file are moved to system.c and this file will be removed in future MCC releases. + Generation Information : + Product Revision : PIC24 / dsPIC33 / PIC32MM MCUs - 1.171.4 + Device : PIC24FV16KM202 + The generated drivers are tested against the following: + Compiler : XC16 v2.10 + MPLAB : MPLAB X v6.05 +*/ + +/* + (c) 2020 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + +/** + End of File +*/ \ No newline at end of file diff --git a/mcc_generated_files/mcc.h b/mcc_generated_files/mcc.h new file mode 100644 index 0000000..090afe8 --- /dev/null +++ b/mcc_generated_files/mcc.h @@ -0,0 +1,65 @@ +/** + @Generated PIC24 / dsPIC33 / PIC32MM MCUs Header File + + @Company: + Microchip Technology Inc. + + @File Name: + mcc.h + + @Summary: + This is the mcc.h file generated using PIC24 / dsPIC33 / PIC32MM MCUs + + @Description: + This file will be removed in future MCC releases. Use system.h instead. + Generation Information : + Product Revision : PIC24 / dsPIC33 / PIC32MM MCUs - 1.171.4 + Device : PIC24FV16KM202 + The generated drivers are tested against the following: + Compiler : XC16 v2.10 + MPLAB : MPLAB X v6.05 +*/ + +/* + (c) 2020 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + +#ifndef MCC_H +#define MCC_H +#include +#include "system.h" +#include "clock.h" +#include "pin_manager.h" +#include +#include + +#include "tmr1.h" +#include "interrupt_manager.h" +#include "traps.h" +#include "mssp1_spi.h" +#include "mssp2_i2c.h" + +#warning "This file will be removed in future MCC releases. Use system.h instead." + +#endif /* MCC_H */ +/** + End of File +*/ \ No newline at end of file diff --git a/mcc_generated_files/mssp1_spi.c b/mcc_generated_files/mssp1_spi.c new file mode 100644 index 0000000..d776f9e --- /dev/null +++ b/mcc_generated_files/mssp1_spi.c @@ -0,0 +1,148 @@ +/** + MSSP1_SPI Generated Driver API Header File + + @Company + Microchip Technology Inc. + + @File Name + mssp1_spi.c + + @Summary + This is the generated source file for the MSSP1_SPI driver using PIC24 / dsPIC33 / PIC32MM MCUs + + @Description + This source file provides APIs for driver for MSSP1_SPI. + Generation Information : + Product Revision : PIC24 / dsPIC33 / PIC32MM MCUs - 1.171.4 + Device : PIC24FV16KM202 + The generated drivers are tested against the following: + Compiler : XC16 v2.10 + MPLAB : MPLAB X v6.05 +*/ + +/* + (c) 2020 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + +/** + Section: Included Files +*/ + +#include "mssp1_spi.h" + +/** + Section: Driver Interface +*/ + + +void MSSP1_SPI_Initialize (void) +{ + // SMP End; CKE Idle to Active; + SSP1STAT = 0x80; + // SSPEN enabled; WCOL no_collision; CKP Idle:Low, Active:High; SSPM FOSC/(2 * (BRG_Value_SPI + 1)); SSPOV no_overflow; + SSP1CON1 = 0x2A; + // ACKEN disabled; GCEN disabled; PEN disabled; ACKDT acknowledge; RSEN disabled; RCEN disabled; SEN disabled; + SSP1CON2 = 0x00; + // SBCDE disabled; BOEN disabled; SCIE disabled; PCIE disabled; DHEN disabled; SDAHT 100ns; AHEN disabled; + SSP1CON3 = 0x00; + // AMSK 0; + SSP1MSK = 0x00; + // SSPADD 1; + SSP1ADD = 0x01; +} + +uint8_t MSSP1_SPI_Exchange8bit( uint8_t data ) +{ + + SSP1BUF = data; + + while (SSP1STATbits.BF == false) + { + + } + + return SSP1BUF; +} + +uint8_t MSSP1_SPI_Exchange8bitBuffer(uint8_t *dataTransmitted, uint8_t bufLen, uint8_t *dataReceived) +{ + uint16_t bytesWritten = 0; + + if(dataTransmitted != NULL) + { + if(dataReceived != NULL) + { + while(bytesWritten < bufLen ) + { + dataReceived[bytesWritten] = MSSP1_SPI_Exchange8bit(dataTransmitted[bytesWritten]); + bytesWritten++; + } + }else + { + while(bytesWritten < bufLen ) + { + MSSP1_SPI_Exchange8bit(dataTransmitted[bytesWritten]); + bytesWritten++; + } + } + } + else + { + if(dataReceived != NULL) + { + while(bytesWritten < bufLen ) + { + dataReceived[bytesWritten] = MSSP1_SPI_Exchange8bit(MSSP1_SPI_DUMMY_DATA); + bytesWritten++; + } + } + } + return bytesWritten; +} + +bool MSSP1_SPI_IsBufferFull( void ) +{ + return (!SSP1STATbits.BF); +} + +bool MSSP1_SPI_HasWriteCollisionOccured( void ) +{ + return (!SSP1CON1bits.WCOL); +} + +bool MSSP1_SPI_HasReceiveOverflowOccured( void ) +{ + return (!SSP1CON1bits.SSPOV); +} +void SPI_slaveSelect(void) +{ + _LATB15 = 0; +} + + +void SPI_slaveDeselect(void) +{ + _LATB15 = 1; +} + +/** + End of File +*/ diff --git a/mcc_generated_files/mssp1_spi.h b/mcc_generated_files/mssp1_spi.h new file mode 100644 index 0000000..83b648d --- /dev/null +++ b/mcc_generated_files/mssp1_spi.h @@ -0,0 +1,254 @@ +/** + MSSP1_SPI Generated Driver API Header File + + @Company + Microchip Technology Inc. + + @File Name + mssp1_spi.h + + @Summary + This is the generated header file for the MSSP1_SPI driver using PIC24 / dsPIC33 / PIC32MM MCUs + + @Description + This header file provides APIs for driver for MSSP1_SPI. + Generation Information : + Product Revision : PIC24 / dsPIC33 / PIC32MM MCUs - 1.171.4 + Device : PIC24FV16KM202 + The generated drivers are tested against the following: + Compiler : XC16 v2.10 + MPLAB : MPLAB X v6.05 +*/ + +/* + (c) 2020 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + +#ifndef _MSSP1_SPI_H +#define _MSSP1_SPI_H + +/** + Section: Included Files +*/ +#include +#include +#include +#include + +#ifdef __cplusplus // Provide C++ Compatibility + + extern "C" { + +#endif + +/** + Section: Data Type Definitions +*/ +//This definition is used during read operation of SPI +#define MSSP1_SPI_DUMMY_DATA 0x0 + +/** + Section: Interface Routines +*/ + +/** + @Summary + Initializes the MSSP instance : 1 + + @Description + This routine initializes the mssp1_spi driver instance for : 1 + index, making it ready for clients to open and use it. + This routine must be called before any other MSSP1_SPI routine is called. + This routine should only be called once during system initialization. + + @Preconditions + None. + + @Param + None. + + @Returns + None. + + @Example + + uint16_t myWriteBuffer[MY_BUFFER_SIZE]; + uint16_t myReadBuffer[MY_BUFFER_SIZE]; + uint16_t writeData; + uint16_t readData; + unsigned int total; + MSSP1_SPI_Initialize; + + total = 0; + do + { + total = MSSP1_SPI_Exchange8bitBuffer( &myWriteBuffer[total], MY_BUFFER_SIZE - total, &myWriteBuffer[total]); + + // Do something else... + + } while( total < MY_BUFFER_SIZE ); + + readData = MSSP1_SPI_Exchange8bit( writeData); + + + +*/ +void MSSP1_SPI_Initialize (void); + +/** + @Summary + Exchanges one byte of data from MSSP1_SPI + + @Description + This routine exchanges one byte of data from the MSSP1_SPI. + This is a blocking routine. + + @Preconditions + The MSSP1_SPI_Initialize routine must have been called for the specified + MSSP1_SPI driver instance. + + @Param + data - Data to be written onto MSSP1_SPI. + + @Returns + Data read from MSSP1_SPI + + @Example + Refer to MSSP1_SPI_Initialize() for an example + +*/ +uint8_t MSSP1_SPI_Exchange8bit( uint8_t data ); + +/** + @Summary + Exchanges data from a buffer of size one byte from MSSP1_SPI + + @Description + This routine exchanges data from a buffer of size one byte from the MSSP1_SPI. + This is a blocking routine. + + @Preconditions + The MSSP1_SPI_Initialize routine must have been called for the specified + MSSP1_SPI driver instance. + + @Param + dataTransmitted - Buffer of data to be written from MSSP1_SPI. + bufLen - Number of words to be exchanged. + dataReceived - Buffer of data to be read into MSSP1_SPI. + + @Returns + Number of words written/read. + + @Example + Refer to MSSP1_SPI_Initialize() for an example + +*/ +uint8_t MSSP1_SPI_Exchange8bitBuffer(uint8_t *dataTransmitted, uint8_t bufLen, uint8_t *dataReceived); + +/** + @Summary + Gets the status of the buffer if its full. + + @Description + This routine gets the status of the buffer if its full. + + @Preconditions + The MSSP1_SPI_Initialize routine must have been called for the specified + MSSP1_SPI driver instance. + + @Param + None. + + @Returns + true - if the buffer is full + false - if the buffer is not full. + + @Example + Refer to MSSP1_SPI_Initialize() for an example + +*/ +bool MSSP1_SPI_IsBufferFull( void ); + +/** + @Summary + Gets the status of write collision. + + @Description + This routine gets the status of write collision. + + @Preconditions + The MSSP1_SPI_Initialize routine must have been called for the specified + MSSP1_SPI driver instance. + + @Param + None. + + @Returns + true - if the write collision has occurred. + false - if the write collision has not occurred. + + @Example + Refer to MSSP1_SPI_Initialize() for an example + +*/ +bool MSSP1_SPI_HasWriteCollisionOccured( void ); + +/** + @Summary + Gets the status of receive overflow. + + @Description + This routine gets the status of receive overflow. + + @Preconditions + The MSSP1_SPI_Initialize routine must have been called for the specified + MSSP1_SPI driver instance. + + @Param + None. + + @Returns + true - if receive overflow has occurred. + false - if receive overflow has not occurred. + + @Example + Refer to MSSP1_SPI_Initialize() for an example + +*/ +bool MSSP1_SPI_HasReceiveOverflowOccured( void ); + +void SPI_slaveSelect(void); + + +void SPI_slaveDeselect(void); + + +#ifdef __cplusplus // Provide C++ Compatibility + + } + +#endif + +#endif //_MSSP1_SPI_H + +/** + End of File +*/ diff --git a/mcc_generated_files/mssp2_i2c.c b/mcc_generated_files/mssp2_i2c.c new file mode 100644 index 0000000..67646e1 --- /dev/null +++ b/mcc_generated_files/mssp2_i2c.c @@ -0,0 +1,386 @@ +/** + MSSP2_I2C Generated Driver File + + @Company + Microchip Technology Inc. + + @File Name + mssp2_i2c.c + + @Summary + This is the generated source file for the MSSP2_I2C driver using PIC24 / dsPIC33 / PIC32MM MCUs + + @Description + This source file provides APIs for driver for MSSP2_I2C. + Generation Information : + Product Revision : PIC24 / dsPIC33 / PIC32MM MCUs - 1.171.4 + Device : PIC24FV16KM202 + The generated drivers are tested against the following: + Compiler : XC16 v2.10 + MPLAB : MPLAB X v6.05 +*/ + +/* + (c) 2020 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + +#include "mssp2_i2c.h" + +/** + Section: Data Types +*/ + +/** + I2C Slave Driver State Enumeration + + @Summary + Defines the different states of the i2c slave. + + @Description + This defines the different states that the i2c slave + used to process transactions on the i2c bus. +*/ +typedef enum +{ + S_SLAVE_IDLE, + S_SLAVE_RECEIVE_MODE, + S_SLAVE_TRANSMIT_MODE, + S_SLAVE_LOW_BYTE_ADDRESS_DETECT, + +} I2C_SLAVE_STATES; + +/** + I2C uint16_t union + + @Summary + Defines the data type to easily manage the slave addresses. + + @Description + This defines the data type to easily swap between lsb and msb + of the slave address when doing 10-bit addressing. + */ +typedef union +{ + uint8_t uint168BitValue[2]; + uint16_t uint16Value; +}UINT16_UNION; + +/** + Section: Macro Definitions +*/ + +/* defined for MSSP2_I2C */ + +#define MSSP2_I2C_TRANSMIT_REG SSP2BUF // Defines the transmit register used to send data. +#define MSSP2_I2C_RECEIVE_REG SSP2BUF // Defines the receive register used to receive data. + +#define MSSP2_I2C_MASK_REG SSP2MSK // Defines the address mask register. +#define MSSP2_I2C_ADDRESS_REG SSP2ADD // Defines the address register. + +// The following control bits are used in the I2C state machine to manage +// the I2C module and determine next states. +#define MSSP2_I2C_SERIAL_PORT_ENABLE_BIT SSP2CON1bits.SSPEN // I2C port enable control bit. +#define MSSP2_I2C_MODE_SELECT_BITS SSP2CON1bits.SSPM // I2C Slave Mode control bit. +#define MSSP2_I2C_RELEASE_SCL_CLOCK_CONTROL_BIT SSP2CON1bits.CKP // I2C clock stretch/release control bit. +#define MSSP2_I2C_RECEIVE_OVERFLOW_STATUS_BIT SSP2CON1bits.SSPOV // I2C receive buffer overflow status bit. +#define MSSP2_I2C_ACKNOWLEDGE_STATUS_BIT SSP2CON2bits.ACKSTAT // I2C ACK status bit. + +// The following status bits are used in the I2C state machine to determine +// the next states. +#define MSSP2_I2C_READ_NOT_WRITE_STATUS_BIT SSP2STATbits.R_NOT_W // I2C current transaction read/write status bit. +#define MSSP2_I2C_DATA_NOT_ADDRESS_STATUS_BIT SSP2STATbits.D_NOT_A // I2C last byte receive was data/address status bit. + +/** + Section: Local Functions +*/ + +inline void __attribute__ ((always_inline)) MSSP2_I2C_TransmitProcess(void); +inline void __attribute__ ((always_inline)) MSSP2_I2C_ReceiveProcess(void); + +/** + Section: Local Variables +*/ + +static I2C_SLAVE_STATES mssp2_i2c_slave_state; +static uint8_t *p_mssp2_i2c_write_pointer; +static uint8_t *p_mssp2_i2c_read_pointer; +static UINT16_UNION mssp2_i2c_slave_address; +uint8_t yeah; + +#define ARRAY_CNT 6 // Number of bytes in array +uint8_t slaveAddress = 0x30; // 7-bit slave address +uint8_t index = 0; // Array pointer +uint8_t temp = 0; // Temp register +uint8_t regAdd = 1; // First data byte was reg add +uint8_t i2cArray[ARRAY_CNT] = +{0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + + +/** + Prototype: void MSSP2_I2C_Initialize(void) + Input: none + Output: none + Description: MSSP2_I2C_Initialize is an + initialization routine that takes inputs from the GUI. + Usage: MSSP2_I2C_Initialize(); +*/ +void MSSP2_I2C_Initialize(void) +{ + + // initialize the state + mssp2_i2c_slave_state = S_SLAVE_IDLE; + + MSSP2_I2C_ReadPointerSet(NULL); + MSSP2_I2C_WritePointerSet(NULL); + + // initialize the hardware + // SMP Standard Speed; CKE Idle to Active; + SSP2STAT = 0x80; + // SSPEN enabled; WCOL no_collision; CKP Clock Stretch; SSPM 7 Bit; SSPOV no_overflow; + SSP2CON1 = 0x2E & 0x26; + // ACKEN disabled; GCEN disabled; PEN disabled; ACKDT acknowledge; RSEN disabled; RCEN disabled; SEN enabled; + SSP2CON2 = 0x01; + // SBCDE disabled; BOEN enabled; SCIE disabled; PCIE disabled; DHEN disabled; SDAHT 300ns; AHEN disabled; + SSP2CON3 = 0x18 | 0x01; + // AMSK 0; + SSP2MSK = 0x00; + // Set up the slave address: SSPADD 7; + //MSSP2_I2C_SlaveAddressSet(0x07); + + SSP2ADD = 0x30; + IFS3bits.BCL2IF = 0; // Clear Bus Collision IF + + + /* MSSP2 - I2C/SPI Interrupt */ + // clear the master interrupt flag + IFS3bits.SSP2IF = 0; + // enable the master interrupt + IEC3bits.SSP2IE = 1; +} + +void __attribute__((interrupt, no_auto_psv)) _MSSP2Interrupt(void) { + if (IFS3bits.SSP2IF) // Check for SSPIF + { + if (SSP2STATbits.R_NOT_W == 1) // Master read (slave transmit) + { + temp = SSP2BUF; + SSP2BUF = i2cArray[1]; // Load array value + SSP2CON1bits.CKP = 1; // Release clock stretch + } + if (SSP2STATbits.R_NOT_W == 0) // Master write (slave receive) + { + TMR1 = 0x00; //Reset our timer when a message is received. + if (SSP2STATbits.D_NOT_A == 0) // Last byte was an address + { + _LATB7 = !_LATB7; + regAdd = 1; // Next byte register address + temp = SSP2BUF; // Clear BF + SSP2CON1bits.CKP = 1; // Release clock stretch + } + if (SSP2STATbits.D_NOT_A == 1) // Last byte was data + { + if (regAdd == 1) // Last byte was register add + { + index = SSP2BUF; // Load register address + regAdd = 0; // Next byte will be true data + } else { + if (index < ARRAY_CNT) // Within boundaries? + { + i2cArray[index] = SSP2BUF; // Yes, read SSP1BUF + } else { + temp = SSP2BUF; // No, discard data + } + } + SSP2CON1bits.CKP = 1; // Release clock stretch + } + } + } + if ((IFS3bits.BCL2IF == 1) || (SSP2CON1bits.SSPOV == 1)) { + temp = SSP2BUF; // Clear BF + IFS3bits.BCL2IF = 0; // Clear BCLIF + SSP2CON1bits.SSPOV = 0; + SSP2CON1bits.CKP = 1; // Release clock stretching + } + IFS3bits.SSP2IF = 0; // Clear SSP1IF + _LATB8 = !SSP2CON1bits.SSPOV; +} + +void MSSP2_I2C_ReadPointerSet(uint8_t *p) +{ + p_mssp2_i2c_read_pointer = p; +} + + +void MSSP2_I2C_WritePointerSet(uint8_t *p) +{ + p_mssp2_i2c_write_pointer = p; +} + + +uint8_t *MSSP2_I2C_ReadPointerGet(void) +{ + return (p_mssp2_i2c_read_pointer); +} + + +uint8_t *MSSP2_I2C_WritePointerGet(void) +{ + return (p_mssp2_i2c_write_pointer); +} + +void MSSP2_I2C_SlaveAddressMaskSet( + uint16_t mask) +{ + MSSP2_I2C_MASK_REG = mask; +} + +void MSSP2_I2C_SlaveAddressSet( + uint16_t address) +{ + UINT16_UNION add; + + add.uint16Value = address; + + if (address > 0xFF) + { + // use 10 bit address + add.uint168BitValue[1] = (0xF0 | ((add.uint168BitValue[1] << 1) & 0x06)); + MSSP2_I2C_ADDRESS_REG = add.uint168BitValue[1]; + } + else + { + // use 7 bit address + MSSP2_I2C_ADDRESS_REG = add.uint168BitValue[0]; + } + mssp2_i2c_slave_address.uint16Value = add.uint16Value; + +} + +inline void __attribute__ ((always_inline)) MSSP2_I2C_TransmitProcess(void) +{ + // get the data to be transmitted + + // sanity check (to avoid stress) + if (p_mssp2_i2c_read_pointer == NULL) + return; + + //MSSP2_I2C_TRANSMIT_REG = *p_mssp2_i2c_read_pointer; + MSSP2_I2C_TRANSMIT_REG = yeah; + + // set the SCL clock to be released + MSSP2_I2C_RELEASE_SCL_CLOCK_CONTROL_BIT = 1; + +} + +inline void __attribute__ ((always_inline)) MSSP2_I2C_ReceiveProcess(void) +{ + // store the received data + + // sanity check (to avoid stress) + if (p_mssp2_i2c_write_pointer == NULL) + return; + + *p_mssp2_i2c_write_pointer = MSSP2_I2C_RECEIVE_REG; + +} + +/* Note: This is an example of the MSSP2_I2C_StatusCallback() + implementation. This is an emulated EEPROM Memory + configured to act as a I2C Slave Device. + For specific slave device implementation, remove + or modify this function to the specific slave device + behavior. +*/ + +static uint8_t mssp2_i2c_slaveWriteData = 0xAA; + +bool MSSP2_I2C_StatusCallback(MSSP2_I2C_SLAVE_DRIVER_STATUS status) +{ + + // this emulates the slave device memory where data written to slave + // is placed and data read from slave is taken + static uint8_t EMULATE_EEPROM_Memory[5] = + { + 0x30, 0x31, 0x32, 0x33, 0x34 + }; + + static uint16_t address = 0; + static bool addressState = true; + + switch (status) + { + case MSSP2_I2C_SLAVE_TRANSMIT_REQUEST_DETECTED: + + // set up the slave driver buffer transmit pointer + //MSSP2_I2C_ReadPointerSet(&EMULATE_EEPROM_Memory[address]); + //address++; + //if(address > 5) address = 0; + SSP2BUF = yeah; + + break; + + case MSSP2_I2C_SLAVE_RECEIVE_REQUEST_DETECTED: + + addressState = true; + + // set up the slave driver buffer receive pointer + MSSP2_I2C_WritePointerSet(&mssp2_i2c_slaveWriteData); + + break; + + case MSSP2_I2C_SLAVE_RECEIVED_DATA_DETECTED: + + /* if (addressState == true) + { + + address = mssp2_i2c_slaveWriteData; + addressState = false; + if(address > 31) _LATB6=0; + else _LATB6=1; + } + else // if (addressState == false) + { + // set the memory with the received data + EMULATE_EEPROM_Memory[address] = mssp2_i2c_slaveWriteData; + + }*/ + yeah = SSP2BUF; + if(yeah > 100) _LATB6=0; + else _LATB6=1; + + break; + + case MSSP2_I2C_SLAVE_10BIT_RECEIVE_REQUEST_DETECTED: + + // do something here when 10-bit address is detected + + // 10-bit address is detected + + break; + + default: + break; + + } + + return true; +} + diff --git a/mcc_generated_files/mssp2_i2c.h b/mcc_generated_files/mssp2_i2c.h new file mode 100644 index 0000000..3fbd36c --- /dev/null +++ b/mcc_generated_files/mssp2_i2c.h @@ -0,0 +1,488 @@ +/** + MSSP2_I2C Generated Driver API Header File + + @Company + Microchip Technology Inc. + + @File Name + mssp2_i2c.h + + @Summary + This is the generated header file for the MSSP2_I2C driver using PIC24 / dsPIC33 / PIC32MM MCUs + + @Description + This header file provides APIs for driver for MSSP2_I2C. + Generation Information : + Product Revision : PIC24 / dsPIC33 / PIC32MM MCUs - 1.171.4 + Device : PIC24FV16KM202 + The generated drivers are tested against the following: + Compiler : XC16 v2.10 + MPLAB : MPLAB X v6.05 +*/ + +/* + (c) 2020 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + +#ifndef _MSSP2_I2C_H +#define _MSSP2_I2C_H + +#include +#include +#include +#include + +#ifdef __cplusplus //* Provide C++ Compatibility */ + + extern "C" { + +#endif + +/** + I2C Slave Driver Status + + @Summary + Defines the different status that the slave driver has + detected over the i2c bus. + + @Description + This defines the different status that the slave driver has + detected over the i2c bus. The status is passed to the + MSSP2_I2C_StatusCallback() callback function that is implemented by + the user of the slave driver as a parameter to inform the user + that there was a change in the status of the driver due to + transactions on the i2c bus. User of the slave driver can use these + to manage the read or write buffers. + + */ + +typedef enum +{ + /* This state indicates that the slave driver has detected a transmit request from the master. + The next transaction will be a read transaction. Application should prime the transmit + buffer with the valid data to be sent to the master using the: I2C2_ReadPointerSet() + + */ + MSSP2_I2C_SLAVE_TRANSMIT_REQUEST_DETECTED, + + /* This state indicates that the slave driver has detected a reception request from the master. + The next transaction will be a write transaction. Application should set up the receive + buffer by setting the location of the receive buffer using the: I2C2_WritePointerSet() + */ + MSSP2_I2C_SLAVE_RECEIVE_REQUEST_DETECTED, + + /* This state indicates that the slave driver has received data from the master. + Application can use this status to process the received data set up the receive + buffer in anticipation of next reception in case the master sends more data. + See MSSP2_I2C_SLAVE_RECEIVE_REQUEST_DETECTED. + */ + MSSP2_I2C_SLAVE_RECEIVED_DATA_DETECTED, + + /* This state indicates that the slave driver has detected the most significant + byte of the 10-bit slave address. Another transaction with the least + significant byte of the 10-bit address with a read/write request will + be detected next. This second detection is automatically done by the + driver which may return one of the following: + a. MSSP2_I2C_SLAVE_RECEIVE_REQUEST_DETECTED + b. MSSP2_I2C_SLAVE_TRANSMIT_REQUEST_DETECTED + c. MSSP2_I2C_SLAVE_10BIT_RECEIVE_REQUEST_DETECTED + a or b is detected depending on the read/write bit of the received + control data. If c is detected next, the master decided to resend + the most significant address. + */ + MSSP2_I2C_SLAVE_10BIT_RECEIVE_REQUEST_DETECTED, + +} MSSP2_I2C_SLAVE_DRIVER_STATUS; + +#define MSSP2_I2C_SLAVE_DEFAULT_ADDRESS 0x7 + +/** + @Summary + Initializes and enables the i2c slave instance : 2 + + @Description + This routine initializes the i2c slave driver instance for : 2 + index, making it ready for clients to open and use it. + + @Preconditions + None + + @Param + None + + @Returns + None + + @Example + + + uint8_t SlaveReadBuffer; + uint8_t SlaveWriteBuffer; + + // initialize the i2c slave driver + MSSP2_I2C_Initialize(); + + // set up the slave driver + + // initialize the location of the read buffer + MSSP2_I2C_ReadPointerSet(SlaveReadBuffer); + // initialize the location of the write buffer + MSSP2_I2C_WritePointerSet(SlaveWriteBuffer); + + +*/ + +void MSSP2_I2C_Initialize(void); + + +/** + @Summary + This function sets the slave address mask. + + @Description + This function sets the 10-bit slave address mask to be able to + respond to multiple addresses. This function should be called + after the initialization of the module. + + @Preconditions + None + + @Param + mask - The address mask to be used when filtering + addresses from the i2c master transactions. + + @Returns + None + + @Example + + Refer to MSSP2_I2C_SlaveAddressSet() for an example + + +*/ + +void MSSP2_I2C_SlaveAddressMaskSet( + uint16_t mask); + +/** + @Summary + This function sets the slave address. + + @Description + This function sets the 10-bit slave address to be used by the + module when filtering transactions from the i2c masters in the + bus. The function analyzes the given address and decides if + the 10-bit or 7-bit mode will be enabled. Once the function + returns, the given address is set for the slave module. + + This function should be called after the initialization of + the module. + + When changing the slave address the module must be idle. + + @Preconditions + None + + @Param + address - The address to be used to determine if the transaction + is intended for this slave module. + + @Returns + None + + @Example + + // initialize the i2c slave driver + MSSP2_I2C_Initializer(); + + // set the slave address and address mask if the default + // values set in the initialize is not the desired values. + MSSP2_I2C_SlaveAddressMaskSet(0x0xF); + MSSP2_I2C_SlaveAddressSet(0x3C); + + + +*/ + +void MSSP2_I2C_SlaveAddressSet( + uint16_t address); + +/** + @Summary + This function sets the read pointer for the slave driver. + + @Description + This function sets the read pointer that the driver will + need to retrieve data that will be transmitted to the master + whenever the master requests a read. + + @Preconditions + None + + @Param + *p - The pointer to the read buffer, that will be used to transmit + data to the requesting i2c master. + + @Returns + None + + @Example + + Refer to MSSP2_I2C_Initialize() for an example + + +*/ + +void MSSP2_I2C_ReadPointerSet(uint8_t *p); + +/** + @Summary + This function sets the write pointer for the slave driver. + + @Description + This function sets the write pointer that the driver will + need to save data that will be received from the master + whenever the master requests a write. + + @Preconditions + None + + @Param + *p - The pointer to the read buffer, that will be used to transmit + data to the requesting i2c master. + + @Returns + None + + @Example + + Refer to MSSP2_I2C_Initialize() for an example + + +*/ + +void MSSP2_I2C_WritePointerSet(uint8_t *p); + +/** + @Summary + This function returns the current read pointer used by the + slave driver. + + @Description + This function returns the current read pointer used by the + slave driver. As the operation executes, the pointer is + incremented. User of the slave driver can use this function + to check on the current address that the pointer is pointing to. + + @Preconditions + None + + @Param + None + + @Returns + The current pointer used to transmit data to the requesting + i2c master + + @Example + + uint8_t *pReadBuffer; + + pReadBuffer = MSSP2_I2C_ReadPointerGet(); + + + +*/ + +uint8_t *MSSP2_I2C_ReadPointerGet(void); + +/** + @Summary + This function returns the current write pointer used by the + slave driver. + + @Description + This function returns the current write pointer used by the + slave driver. As the operation executes, the pointer is + incremented. User of the slave driver can use this function + to check on the current address that the pointer is pointing to. + + @Preconditions + None + + @Param + None + + @Returns + The current pointer used to save received data from the requesting + i2c master + + @Example + + uint8_t *pWriteBuffer; + + pWriteBuffer = MSSP2_I2C_WritePointerGet(); + + + +*/ + +uint8_t *MSSP2_I2C_WritePointerGet(void); + +/** + @Summary + This application implemented function passes the + status of the i2c slave driver. + + @Description + This application implemented function passes the + status of the i2c slave driver. The status passed + can be used by the application to manage the read and + write buffers. This function is called by the slave + driver everytime there is an event in the i2c bus that caused + an interrupt in the i2c slave module to be asserted. + + The function will return boolean. The value of the return + will determine if the next received byte will be ack'ed or + nack'ed. By doing that, the application can have the + ability to delay incoming transactions. When a false is + returned, the next transactions will be nack'ed forcing the + master to restart the transactions. + + Returning a false will give the application a chance to + prepare for the next transactions (for example: a read + requests from the master) or process the recently received + data. + + @Preconditions + None + + @Param + status - The latest status of the slave driver due + to an event in the i2c bus. + + @Returns + True, if the application is ready for the next transaction. + False, if the application is not ready for the next transaction. + + @Example + + + + // Example implementation of the callback + + static uint8_t mssp2_i2c_slaveWriteData = 0xAA; + + bool MSSP2_I2C_StatusCallback(MSSP2_I2C_SLAVE_DRIVER_STATUS status) + { + + // this emulates the slave device memory where data written to slave + // is placed and data read from slave is taken + static uint8_t EMULATE_EEPROM_Memory[64] = + { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + }; + + static uint16_t address, addrByteCount; + static bool addressState = true; + + switch (status) + { + case MSSP2_I2C_SLAVE_TRANSMIT_REQUEST_DETECTED: + + // set up the slave driver buffer transmit pointer + MSSP2_I2C_ReadPointerSet(&EMULATE_EEPROM_Memory[address]); + address++; + + break; + + case MSSP2_I2C_SLAVE_RECEIVE_REQUEST_DETECTED: + + addrByteCount = 0; + addressState = true; + + // set up the slave driver buffer receive pointer + MSSP2_I2C_WritePointerSet(&mssp2_i2c_slaveWriteData); + + break; + + case MSSP2_I2C_SLAVE_RECEIVED_DATA_DETECTED: + + if (addressState == true) + { + // get the address of the memory being written + if (addrByteCount == 0) + { + address = (mssp2_i2c_slaveWriteData << 8) & 0xFF00; + addrByteCount++; + } + else if (addrByteCount == 1) + { + address = address | mssp2_i2c_slaveWriteData; + addrByteCount = 0; + addressState = false; + } + } + else // if (addressState == false) + { + // set the memory with the received data + EMULATE_EEPROM_Memory[address] = mssp2_i2c_slaveWriteData; + } + + break; + + case MSSP2_I2C_SLAVE_10BIT_RECEIVE_REQUEST_DETECTED: + + // do something here when 10-bit address is detected + + // 10-bit address is detected + + break; + + default: + break; + + } + + return true; + } + + + + */ + +#pragma message "MSSP2_I2C_StatusCallback() is an Application implemented function. If this function is already implemented, you can turn off this message by deleting or commenting out this message." +bool MSSP2_I2C_StatusCallback(MSSP2_I2C_SLAVE_DRIVER_STATUS status); + +#ifdef __cplusplus // Provide C++ Compatibility + + } + +#endif + +#endif /* _MSSP2_I2C_H */ \ No newline at end of file diff --git a/mcc_generated_files/pin_manager.c b/mcc_generated_files/pin_manager.c new file mode 100644 index 0000000..8aa798a --- /dev/null +++ b/mcc_generated_files/pin_manager.c @@ -0,0 +1,92 @@ +/** + PIN MANAGER Generated Driver File + + @Company: + Microchip Technology Inc. + + @File Name: + pin_manager.c + + @Summary: + This is the generated manager file for the PIC24 / dsPIC33 / PIC32MM MCUs device. This manager + configures the pins direction, initial state, analog setting. + + @Description: + This source file provides implementations for PIN MANAGER. + Generation Information : + Product Revision : PIC24 / dsPIC33 / PIC32MM MCUs - 1.171.4 + Device : PIC24FV16KM202 + The generated drivers are tested against the following: + Compiler : XC16 v2.10 + MPLAB : MPLAB X v6.05 +*/ + +/* + (c) 2020 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + + +/** + Section: Includes +*/ + +#include +#include +#include "pin_manager.h" + +/** + Section: Driver Interface Function Definitions +*/ +void PIN_MANAGER_Initialize (void) +{ + /**************************************************************************** + * Setting the Output Latch SFR(s) + ***************************************************************************/ + LATA = 0x0000; + LATB = 0x0000; + + /**************************************************************************** + * Setting the GPIO Direction SFR(s) + ***************************************************************************/ + TRISA = 0x00A4; + TRISB = 0x543F; + + /**************************************************************************** + * Setting the Weak Pull Up and Weak Pull Down SFR(s) + ***************************************************************************/ + CNPD1 = 0x0000; + CNPD2 = 0x0000; + CNPU1 = 0x0000; + CNPU2 = 0x0000; + + /**************************************************************************** + * Setting the Open Drain SFR(s) + ***************************************************************************/ + ODCA = 0x0000; + ODCB = 0x01C0; + + /**************************************************************************** + * Setting the Analog/Digital Configuration SFR(s) + ***************************************************************************/ + ANSA = 0x0000; + ANSB = 0x5030; +} + diff --git a/mcc_generated_files/pin_manager.h b/mcc_generated_files/pin_manager.h new file mode 100644 index 0000000..8f18362 --- /dev/null +++ b/mcc_generated_files/pin_manager.h @@ -0,0 +1,1113 @@ +/** + PIN MANAGER Generated Driver File + + @Company: + Microchip Technology Inc. + + @File Name: + pin_manager.h + + @Summary: + This is the generated manager file for the PIC24 / dsPIC33 / PIC32MM MCUs device. This manager + configures the pins direction, initial state, analog setting. + + @Description: + This source file provides implementations for PIN MANAGER. + Generation Information : + Product Revision : PIC24 / dsPIC33 / PIC32MM MCUs - 1.171.4 + Device : PIC24FV16KM202 + The generated drivers are tested against the following: + Compiler : XC16 v2.10 + MPLAB : MPLAB X v6.05 +*/ + +/* + (c) 2020 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + +#ifndef _PIN_MANAGER_H +#define _PIN_MANAGER_H +/** + Section: Includes +*/ +#include + +/** + Section: Device Pin Macros +*/ +/** + @Summary + Sets the GPIO pin, RA0, high using LATA0. + + @Description + Sets the GPIO pin, RA0, high using LATA0. + + @Preconditions + The RA0 must be set to an output. + + @Returns + None. + + @Param + None. + + @Example + + // Set RA0 high (1) + IO_RA0_SetHigh(); + + +*/ +#define IO_RA0_SetHigh() (_LATA0 = 1) +/** + @Summary + Sets the GPIO pin, RA0, low using LATA0. + + @Description + Sets the GPIO pin, RA0, low using LATA0. + + @Preconditions + The RA0 must be set to an output. + + @Returns + None. + + @Param + None. + + @Example + + // Set RA0 low (0) + IO_RA0_SetLow(); + + +*/ +#define IO_RA0_SetLow() (_LATA0 = 0) +/** + @Summary + Toggles the GPIO pin, RA0, using LATA0. + + @Description + Toggles the GPIO pin, RA0, using LATA0. + + @Preconditions + The RA0 must be set to an output. + + @Returns + None. + + @Param + None. + + @Example + + // Toggle RA0 + IO_RA0_Toggle(); + + +*/ +#define IO_RA0_Toggle() (_LATA0 ^= 1) +/** + @Summary + Reads the value of the GPIO pin, RA0. + + @Description + Reads the value of the GPIO pin, RA0. + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + + uint16_t portValue; + + // Read RA0 + postValue = IO_RA0_GetValue(); + + +*/ +#define IO_RA0_GetValue() _RA0 +/** + @Summary + Configures the GPIO pin, RA0, as an input. + + @Description + Configures the GPIO pin, RA0, as an input. + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + + // Sets the RA0 as an input + IO_RA0_SetDigitalInput(); + + +*/ +#define IO_RA0_SetDigitalInput() (_TRISA0 = 1) +/** + @Summary + Configures the GPIO pin, RA0, as an output. + + @Description + Configures the GPIO pin, RA0, as an output. + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + + // Sets the RA0 as an output + IO_RA0_SetDigitalOutput(); + + +*/ +#define IO_RA0_SetDigitalOutput() (_TRISA0 = 0) +/** + @Summary + Sets the GPIO pin, RA1, high using LATA1. + + @Description + Sets the GPIO pin, RA1, high using LATA1. + + @Preconditions + The RA1 must be set to an output. + + @Returns + None. + + @Param + None. + + @Example + + // Set RA1 high (1) + IO_RA1_SetHigh(); + + +*/ +#define IO_RA1_SetHigh() (_LATA1 = 1) +/** + @Summary + Sets the GPIO pin, RA1, low using LATA1. + + @Description + Sets the GPIO pin, RA1, low using LATA1. + + @Preconditions + The RA1 must be set to an output. + + @Returns + None. + + @Param + None. + + @Example + + // Set RA1 low (0) + IO_RA1_SetLow(); + + +*/ +#define IO_RA1_SetLow() (_LATA1 = 0) +/** + @Summary + Toggles the GPIO pin, RA1, using LATA1. + + @Description + Toggles the GPIO pin, RA1, using LATA1. + + @Preconditions + The RA1 must be set to an output. + + @Returns + None. + + @Param + None. + + @Example + + // Toggle RA1 + IO_RA1_Toggle(); + + +*/ +#define IO_RA1_Toggle() (_LATA1 ^= 1) +/** + @Summary + Reads the value of the GPIO pin, RA1. + + @Description + Reads the value of the GPIO pin, RA1. + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + + uint16_t portValue; + + // Read RA1 + postValue = IO_RA1_GetValue(); + + +*/ +#define IO_RA1_GetValue() _RA1 +/** + @Summary + Configures the GPIO pin, RA1, as an input. + + @Description + Configures the GPIO pin, RA1, as an input. + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + + // Sets the RA1 as an input + IO_RA1_SetDigitalInput(); + + +*/ +#define IO_RA1_SetDigitalInput() (_TRISA1 = 1) +/** + @Summary + Configures the GPIO pin, RA1, as an output. + + @Description + Configures the GPIO pin, RA1, as an output. + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + + // Sets the RA1 as an output + IO_RA1_SetDigitalOutput(); + + +*/ +#define IO_RA1_SetDigitalOutput() (_TRISA1 = 0) +/** + @Summary + Sets the GPIO pin, RA4, high using LATA4. + + @Description + Sets the GPIO pin, RA4, high using LATA4. + + @Preconditions + The RA4 must be set to an output. + + @Returns + None. + + @Param + None. + + @Example + + // Set RA4 high (1) + IO_RA4_SetHigh(); + + +*/ +#define IO_RA4_SetHigh() (_LATA4 = 1) +/** + @Summary + Sets the GPIO pin, RA4, low using LATA4. + + @Description + Sets the GPIO pin, RA4, low using LATA4. + + @Preconditions + The RA4 must be set to an output. + + @Returns + None. + + @Param + None. + + @Example + + // Set RA4 low (0) + IO_RA4_SetLow(); + + +*/ +#define IO_RA4_SetLow() (_LATA4 = 0) +/** + @Summary + Toggles the GPIO pin, RA4, using LATA4. + + @Description + Toggles the GPIO pin, RA4, using LATA4. + + @Preconditions + The RA4 must be set to an output. + + @Returns + None. + + @Param + None. + + @Example + + // Toggle RA4 + IO_RA4_Toggle(); + + +*/ +#define IO_RA4_Toggle() (_LATA4 ^= 1) +/** + @Summary + Reads the value of the GPIO pin, RA4. + + @Description + Reads the value of the GPIO pin, RA4. + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + + uint16_t portValue; + + // Read RA4 + postValue = IO_RA4_GetValue(); + + +*/ +#define IO_RA4_GetValue() _RA4 +/** + @Summary + Configures the GPIO pin, RA4, as an input. + + @Description + Configures the GPIO pin, RA4, as an input. + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + + // Sets the RA4 as an input + IO_RA4_SetDigitalInput(); + + +*/ +#define IO_RA4_SetDigitalInput() (_TRISA4 = 1) +/** + @Summary + Configures the GPIO pin, RA4, as an output. + + @Description + Configures the GPIO pin, RA4, as an output. + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + + // Sets the RA4 as an output + IO_RA4_SetDigitalOutput(); + + +*/ +#define IO_RA4_SetDigitalOutput() (_TRISA4 = 0) +/** + @Summary + Sets the GPIO pin, RB6, high using LATB6. + + @Description + Sets the GPIO pin, RB6, high using LATB6. + + @Preconditions + The RB6 must be set to an output. + + @Returns + None. + + @Param + None. + + @Example + + // Set RB6 high (1) + IO_RB6_SetHigh(); + + +*/ +#define IO_RB6_SetHigh() (_LATB6 = 1) +/** + @Summary + Sets the GPIO pin, RB6, low using LATB6. + + @Description + Sets the GPIO pin, RB6, low using LATB6. + + @Preconditions + The RB6 must be set to an output. + + @Returns + None. + + @Param + None. + + @Example + + // Set RB6 low (0) + IO_RB6_SetLow(); + + +*/ +#define IO_RB6_SetLow() (_LATB6 = 0) +/** + @Summary + Toggles the GPIO pin, RB6, using LATB6. + + @Description + Toggles the GPIO pin, RB6, using LATB6. + + @Preconditions + The RB6 must be set to an output. + + @Returns + None. + + @Param + None. + + @Example + + // Toggle RB6 + IO_RB6_Toggle(); + + +*/ +#define IO_RB6_Toggle() (_LATB6 ^= 1) +/** + @Summary + Reads the value of the GPIO pin, RB6. + + @Description + Reads the value of the GPIO pin, RB6. + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + + uint16_t portValue; + + // Read RB6 + postValue = IO_RB6_GetValue(); + + +*/ +#define IO_RB6_GetValue() _RB6 +/** + @Summary + Configures the GPIO pin, RB6, as an input. + + @Description + Configures the GPIO pin, RB6, as an input. + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + + // Sets the RB6 as an input + IO_RB6_SetDigitalInput(); + + +*/ +#define IO_RB6_SetDigitalInput() (_TRISB6 = 1) +/** + @Summary + Configures the GPIO pin, RB6, as an output. + + @Description + Configures the GPIO pin, RB6, as an output. + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + + // Sets the RB6 as an output + IO_RB6_SetDigitalOutput(); + + +*/ +#define IO_RB6_SetDigitalOutput() (_TRISB6 = 0) +/** + @Summary + Sets the GPIO pin, RB7, high using LATB7. + + @Description + Sets the GPIO pin, RB7, high using LATB7. + + @Preconditions + The RB7 must be set to an output. + + @Returns + None. + + @Param + None. + + @Example + + // Set RB7 high (1) + IO_RB7_SetHigh(); + + +*/ +#define IO_RB7_SetHigh() (_LATB7 = 1) +/** + @Summary + Sets the GPIO pin, RB7, low using LATB7. + + @Description + Sets the GPIO pin, RB7, low using LATB7. + + @Preconditions + The RB7 must be set to an output. + + @Returns + None. + + @Param + None. + + @Example + + // Set RB7 low (0) + IO_RB7_SetLow(); + + +*/ +#define IO_RB7_SetLow() (_LATB7 = 0) +/** + @Summary + Toggles the GPIO pin, RB7, using LATB7. + + @Description + Toggles the GPIO pin, RB7, using LATB7. + + @Preconditions + The RB7 must be set to an output. + + @Returns + None. + + @Param + None. + + @Example + + // Toggle RB7 + IO_RB7_Toggle(); + + +*/ +#define IO_RB7_Toggle() (_LATB7 ^= 1) +/** + @Summary + Reads the value of the GPIO pin, RB7. + + @Description + Reads the value of the GPIO pin, RB7. + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + + uint16_t portValue; + + // Read RB7 + postValue = IO_RB7_GetValue(); + + +*/ +#define IO_RB7_GetValue() _RB7 +/** + @Summary + Configures the GPIO pin, RB7, as an input. + + @Description + Configures the GPIO pin, RB7, as an input. + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + + // Sets the RB7 as an input + IO_RB7_SetDigitalInput(); + + +*/ +#define IO_RB7_SetDigitalInput() (_TRISB7 = 1) +/** + @Summary + Configures the GPIO pin, RB7, as an output. + + @Description + Configures the GPIO pin, RB7, as an output. + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + + // Sets the RB7 as an output + IO_RB7_SetDigitalOutput(); + + +*/ +#define IO_RB7_SetDigitalOutput() (_TRISB7 = 0) +/** + @Summary + Sets the GPIO pin, RB8, high using LATB8. + + @Description + Sets the GPIO pin, RB8, high using LATB8. + + @Preconditions + The RB8 must be set to an output. + + @Returns + None. + + @Param + None. + + @Example + + // Set RB8 high (1) + IO_RB8_SetHigh(); + + +*/ +#define IO_RB8_SetHigh() (_LATB8 = 1) +/** + @Summary + Sets the GPIO pin, RB8, low using LATB8. + + @Description + Sets the GPIO pin, RB8, low using LATB8. + + @Preconditions + The RB8 must be set to an output. + + @Returns + None. + + @Param + None. + + @Example + + // Set RB8 low (0) + IO_RB8_SetLow(); + + +*/ +#define IO_RB8_SetLow() (_LATB8 = 0) +/** + @Summary + Toggles the GPIO pin, RB8, using LATB8. + + @Description + Toggles the GPIO pin, RB8, using LATB8. + + @Preconditions + The RB8 must be set to an output. + + @Returns + None. + + @Param + None. + + @Example + + // Toggle RB8 + IO_RB8_Toggle(); + + +*/ +#define IO_RB8_Toggle() (_LATB8 ^= 1) +/** + @Summary + Reads the value of the GPIO pin, RB8. + + @Description + Reads the value of the GPIO pin, RB8. + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + + uint16_t portValue; + + // Read RB8 + postValue = IO_RB8_GetValue(); + + +*/ +#define IO_RB8_GetValue() _RB8 +/** + @Summary + Configures the GPIO pin, RB8, as an input. + + @Description + Configures the GPIO pin, RB8, as an input. + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + + // Sets the RB8 as an input + IO_RB8_SetDigitalInput(); + + +*/ +#define IO_RB8_SetDigitalInput() (_TRISB8 = 1) +/** + @Summary + Configures the GPIO pin, RB8, as an output. + + @Description + Configures the GPIO pin, RB8, as an output. + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + + // Sets the RB8 as an output + IO_RB8_SetDigitalOutput(); + + +*/ +#define IO_RB8_SetDigitalOutput() (_TRISB8 = 0) +/** + @Summary + Sets the GPIO pin, RB9, high using LATB9. + + @Description + Sets the GPIO pin, RB9, high using LATB9. + + @Preconditions + The RB9 must be set to an output. + + @Returns + None. + + @Param + None. + + @Example + + // Set RB9 high (1) + IO_RB9_SetHigh(); + + +*/ +#define IO_RB9_SetHigh() (_LATB9 = 1) +/** + @Summary + Sets the GPIO pin, RB9, low using LATB9. + + @Description + Sets the GPIO pin, RB9, low using LATB9. + + @Preconditions + The RB9 must be set to an output. + + @Returns + None. + + @Param + None. + + @Example + + // Set RB9 low (0) + IO_RB9_SetLow(); + + +*/ +#define IO_RB9_SetLow() (_LATB9 = 0) +/** + @Summary + Toggles the GPIO pin, RB9, using LATB9. + + @Description + Toggles the GPIO pin, RB9, using LATB9. + + @Preconditions + The RB9 must be set to an output. + + @Returns + None. + + @Param + None. + + @Example + + // Toggle RB9 + IO_RB9_Toggle(); + + +*/ +#define IO_RB9_Toggle() (_LATB9 ^= 1) +/** + @Summary + Reads the value of the GPIO pin, RB9. + + @Description + Reads the value of the GPIO pin, RB9. + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + + uint16_t portValue; + + // Read RB9 + postValue = IO_RB9_GetValue(); + + +*/ +#define IO_RB9_GetValue() _RB9 +/** + @Summary + Configures the GPIO pin, RB9, as an input. + + @Description + Configures the GPIO pin, RB9, as an input. + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + + // Sets the RB9 as an input + IO_RB9_SetDigitalInput(); + + +*/ +#define IO_RB9_SetDigitalInput() (_TRISB9 = 1) +/** + @Summary + Configures the GPIO pin, RB9, as an output. + + @Description + Configures the GPIO pin, RB9, as an output. + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + + // Sets the RB9 as an output + IO_RB9_SetDigitalOutput(); + + +*/ +#define IO_RB9_SetDigitalOutput() (_TRISB9 = 0) + +/** + Section: Function Prototypes +*/ +/** + @Summary + Configures the pin settings of the PIC24FV16KM202 + + @Description + This is the generated manager file for the PIC24 / dsPIC33 / PIC32MM MCUs device. This manager + configures the pins direction, initial state, analog setting. + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + + void SYSTEM_Initialize(void) + { + // Other initializers are called from this function + PIN_MANAGER_Initialize(); + } + + +*/ +void PIN_MANAGER_Initialize (void); + + + +#endif diff --git a/mcc_generated_files/system.c b/mcc_generated_files/system.c new file mode 100644 index 0000000..a128daf --- /dev/null +++ b/mcc_generated_files/system.c @@ -0,0 +1,106 @@ +/** + @Generated PIC24 / dsPIC33 / PIC32MM MCUs Source File + + @Company: + Microchip Technology Inc. + + @File Name: + system.h + + @Summary: + This is the sysetm.h file generated using PIC24 / dsPIC33 / PIC32MM MCUs + + @Description: + This header file provides implementations for driver APIs for all modules selected in the GUI. + Generation Information : + Product Revision : PIC24 / dsPIC33 / PIC32MM MCUs - 1.171.4 + Device : PIC24FV16KM202 + The generated drivers are tested against the following: + Compiler : XC16 v2.10 + MPLAB : MPLAB X v6.05 +*/ + +/* + (c) 2020 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + +// Configuration bits: selected in the GUI + +// FBS +#pragma config BWRP = OFF //Boot Segment Write Protect->Disabled +#pragma config BSS = OFF //Boot segment Protect->No boot program flash segment + +// FGS +#pragma config GWRP = OFF //General Segment Write Protect->General segment may be written +#pragma config GCP = OFF //General Segment Code Protect->No Protection + +// FOSCSEL +#pragma config FNOSC = PRI //Oscillator Select->Primary Oscillator (XT, HS, EC) +#pragma config SOSCSRC = DIG //SOSC Source Type->Digital Mode for use with external source +#pragma config LPRCSEL = HP //LPRC Oscillator Power and Accuracy->High Power, High Accuracy Mode +#pragma config IESO = OFF //Internal External Switch Over bit->Internal External Switchover mode disabled (Two-speed Start-up disabled) + +// FOSC +#pragma config POSCMOD = HS //Primary Oscillator Configuration bits->HS oscillator mode selected +#pragma config OSCIOFNC = IO //CLKO Enable Configuration bit->Port I/O enabled (CLKO disabled) +#pragma config POSCFREQ = HS //Primary Oscillator Frequency Range Configuration bits->Primary oscillator/external clock input frequency greater than 8MHz +#pragma config SOSCSEL = SOSCHP //SOSC Power Selection Configuration bits->Secondary Oscillator configured for high-power operation +#pragma config FCKSM = CSDCMD //Clock Switching and Monitor Selection->Both Clock Switching and Fail-safe Clock Monitor are disabled + +// FWDT +#pragma config WDTPS = PS32768 //Watchdog Timer Postscale Select bits->1:32768 +#pragma config FWPSA = PR128 //WDT Prescaler bit->WDT prescaler ratio of 1:128 +#pragma config FWDTEN = OFF //Watchdog Timer Enable bits->WDT disabled in hardware; SWDTEN bit disabled +#pragma config WINDIS = OFF //Windowed Watchdog Timer Disable bit->Standard WDT selected(windowed WDT disabled) + +// FPOR +#pragma config BOREN = BOR3 //Brown-out Reset Enable bits->Brown-out Reset enabled in hardware, SBOREN bit disabled +#pragma config RETCFG = OFF //->Retention regulator is not available +#pragma config PWRTEN = ON //Power-up Timer Enable bit->PWRT enabled +#pragma config I2C1SEL = PRI //Alternate I2C1 Pin Mapping bit->Use Default SCL1/SDA1 Pins For I2C1 +#pragma config BORV = V18 //Brown-out Reset Voltage bits->Brown-out Reset set to lowest voltage (1.8V) +#pragma config MCLRE = ON //MCLR Pin Enable bit->RA5 input pin disabled, MCLR pin enabled + +// FICD +#pragma config ICS = PGx1 //ICD Pin Placement Select bits->EMUC/EMUD share PGC1/PGD1 + +#include "pin_manager.h" +#include "clock.h" +#include "system.h" +#include "tmr1.h" +#include "interrupt_manager.h" +#include "traps.h" +#include "mssp1_spi.h" +#include "mssp2_i2c.h" + +void SYSTEM_Initialize(void) +{ + PIN_MANAGER_Initialize(); + CLOCK_Initialize(); + INTERRUPT_Initialize(); + MSSP2_I2C_Initialize(); + MSSP1_SPI_Initialize(); + TMR1_Initialize(); +} + +/** + End of File +*/ \ No newline at end of file diff --git a/mcc_generated_files/system.h b/mcc_generated_files/system.h new file mode 100644 index 0000000..1125509 --- /dev/null +++ b/mcc_generated_files/system.h @@ -0,0 +1,70 @@ +/** + @Generated PIC24 / dsPIC33 / PIC32MM MCUs Source File + + @Company: + Microchip Technology Inc. + + @File Name: + system.h + + @Summary: + This is the system.h file generated using PIC24 / dsPIC33 / PIC32MM MCUs + + @Description: + This header file provides implementations for driver APIs for all modules selected in the GUI. + Generation Information : + Product Revision : PIC24 / dsPIC33 / PIC32MM MCUs - 1.171.4 + Device : PIC24FV16KM202 + The generated drivers are tested against the following: + Compiler : XC16 v2.10 + MPLAB : MPLAB X v6.05 +*/ + +/* + (c) 2020 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + +#ifndef _XTAL_FREQ +#define _XTAL_FREQ 20000000UL +#endif + +#include "xc.h" +#include "stdint.h" + +#ifndef SYSTEM_H +#define SYSTEM_H + +/** + * @Param + none + * @Returns + none + * @Description + Initializes the device to the default states configured in the + * MCC GUI + * @Example + SYSTEM_Initialize(void); + */ +void SYSTEM_Initialize(void); +#endif /* SYSTEM_H */ +/** + End of File +*/ \ No newline at end of file diff --git a/mcc_generated_files/tmr1.c b/mcc_generated_files/tmr1.c new file mode 100644 index 0000000..25bc139 --- /dev/null +++ b/mcc_generated_files/tmr1.c @@ -0,0 +1,219 @@ + +/** + TMR1 Generated Driver API Source File + + @Company + Microchip Technology Inc. + + @File Name + tmr1.c + + @Summary + This is the generated source file for the TMR1 driver using PIC24 / dsPIC33 / PIC32MM MCUs + + @Description + This source file provides APIs for driver for TMR1. + Generation Information : + Product Revision : PIC24 / dsPIC33 / PIC32MM MCUs - 1.171.4 + Device : PIC24FV16KM202 + The generated drivers are tested against the following: + Compiler : XC16 v2.10 + MPLAB : MPLAB X v6.05 +*/ + +/* + (c) 2020 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + +/** + Section: Included Files +*/ + +#include +#include "tmr1.h" + +/** + Section: File specific functions +*/ +void (*TMR1_InterruptHandler)(void) = NULL; +void TMR1_CallBack(void); + +/** + Section: Data Type Definitions +*/ + +/** TMR Driver Hardware Instance Object + + @Summary + Defines the object required for the maintenance of the hardware instance. + + @Description + This defines the object required for the maintenance of the hardware + instance. This object exists once per hardware instance of the peripheral. + + Remarks: + None. +*/ + +typedef struct _TMR_OBJ_STRUCT +{ + /* Timer Elapsed */ + volatile bool timerElapsed; + /*Software Counter value*/ + volatile uint8_t count; + +} TMR_OBJ; + +static TMR_OBJ tmr1_obj; + +/** + Section: Driver Interface +*/ + +void TMR1_Initialize (void) +{ + //TMR1 0; + TMR1 = 0x00; + //Period = 1.5000128 s; Frequency = 10000000 Hz; PR1 39062; + PR1 = 0xE4E1; + //TCKPS 1:256; TON enabled; TSIDL disabled; TCS FOSC/2; TECS SOSC; TSYNC disabled; TGATE disabled; + T1CON = 0x8030; + + if(TMR1_InterruptHandler == NULL) + { + TMR1_SetInterruptHandler(&TMR1_CallBack); + } + + IFS0bits.T1IF = false; + IEC0bits.T1IE = true; + + tmr1_obj.timerElapsed = false; + +} + + +void __attribute__ ( ( interrupt, no_auto_psv ) ) _T1Interrupt ( ) +{ + /* Check if the Timer Interrupt/Status is set */ + + //***User Area Begin + + // ticker function call; + // ticker is 1 -> Callback function gets called everytime this ISR executes + if(TMR1_InterruptHandler) + { + TMR1_InterruptHandler(); + } + + //***User Area End + + tmr1_obj.count++; + tmr1_obj.timerElapsed = true; + IFS0bits.T1IF = false; +} + +void TMR1_Period16BitSet( uint16_t value ) +{ + /* Update the counter values */ + PR1 = value; + /* Reset the status information */ + tmr1_obj.timerElapsed = false; +} + +uint16_t TMR1_Period16BitGet( void ) +{ + return( PR1 ); +} + +void TMR1_Counter16BitSet ( uint16_t value ) +{ + /* Update the counter values */ + TMR1 = value; + /* Reset the status information */ + tmr1_obj.timerElapsed = false; +} + +uint16_t TMR1_Counter16BitGet( void ) +{ + return( TMR1 ); +} + + +void __attribute__ ((weak)) TMR1_CallBack(void) +{ + _LATB8 = 0; + _LATB7 = 1; +} + +void TMR1_SetInterruptHandler(void (* InterruptHandler)(void)) +{ + IEC0bits.T1IE = false; + TMR1_InterruptHandler = InterruptHandler; + IEC0bits.T1IE = true; +} + +void TMR1_Start( void ) +{ + /* Reset the status information */ + tmr1_obj.timerElapsed = false; + + /*Enable the interrupt*/ + IEC0bits.T1IE = true; + + /* Start the Timer */ + T1CONbits.TON = 1; +} + +void TMR1_Stop( void ) +{ + /* Stop the Timer */ + T1CONbits.TON = false; + + /*Disable the interrupt*/ + IEC0bits.T1IE = false; +} + +bool TMR1_GetElapsedThenClear(void) +{ + bool status; + + status = tmr1_obj.timerElapsed; + + if(status == true) + { + tmr1_obj.timerElapsed = false; + } + return status; +} + +int TMR1_SoftwareCounterGet(void) +{ + return tmr1_obj.count; +} + +void TMR1_SoftwareCounterClear(void) +{ + tmr1_obj.count = 0; +} + +/** + End of File +*/ diff --git a/mcc_generated_files/tmr1.h b/mcc_generated_files/tmr1.h new file mode 100644 index 0000000..cf60e9b --- /dev/null +++ b/mcc_generated_files/tmr1.h @@ -0,0 +1,331 @@ +/** + TMR1 Generated Driver API Header File + + @Company + Microchip Technology Inc. + + @File Name + tmr1.h + + @Summary + This is the generated header file for the TMR1 driver using PIC24 / dsPIC33 / PIC32MM MCUs + + @Description + This header file provides APIs for driver for TMR1. + Generation Information : + Product Revision : PIC24 / dsPIC33 / PIC32MM MCUs - 1.171.4 + Device : PIC24FV16KM202 + The generated drivers are tested against the following: + Compiler : XC16 v2.10 + MPLAB : MPLAB X v6.05 +*/ + +/* + (c) 2020 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + +#ifndef _TMR1_H +#define _TMR1_H + +/** + Section: Included Files +*/ + +#include +#include +#include + +#ifdef __cplusplus // Provide C++ Compatibility + + extern "C" { + +#endif + +#define TMR1_INTERRUPT_TICKER_FACTOR 1 + +/** + Section: Interface Routines +*/ + +/** + @Summary + Initializes hardware and data for the given instance of the TMR module + + @Description + This routine initializes hardware for the instance of the TMR module, + using the hardware initialization given data. It also initializes all + necessary internal data. + + @Param + None. + + @Returns + None + + @Example + + bool statusTimer1; + uint16_t period; + uint16_t value; + + period = 0x20; + + TMR1_Initialize(); + + TMR1_Period16BitSet(period); + + if((value = TMR1_Period16BitGet())== period) + { + TMR1_Start(); + } + + while(1) + { + TMR1_Tasks(); + if( (statusTimer1 = TMR1_GetElapsedThenClear()) == true) + { + TMR1_Stop(); + } + } + +*/ +void TMR1_Initialize (void); + + +/** + @Summary + Updates 16-bit timer value + + @Description + This routine updates 16-bit timer value + + @Param + None. + + @Returns + None + + @Example + Refer to the example of TMR1_Initialize(); +*/ + +void TMR1_Period16BitSet( uint16_t value ); + +/** + + @Summary + Provides the timer 16-bit period value + + @Description + This routine provides the timer 16-bit period value + + @Param + None. + + @Returns + Timer 16-bit period value + + @Example + Refer to the example of TMR1_Initialize(); +*/ + +uint16_t TMR1_Period16BitGet( void ); + +/** + @Summary + Updates the timer's 16-bit value + + @Description + This routine updates the timer's 16-bit value + + @Param + None. + + @Returns + None + + @Example + + uint16_t value=0xF0F0; + + TMR1_Counter16BitSet(value)); + + while(1) + { + TMR1_Tasks(); + if( (value == TMR1_Counter16BitGet())) + { + TMR1_Stop(); + } + } + +*/ + +void TMR1_Counter16BitSet ( uint16_t value ); + +/** + @Summary + Provides 16-bit current counter value + + @Description + This routine provides 16-bit current counter value + + @Param + None. + + @Returns + 16-bit current counter value + + @Example + Refer to the example of TMR1_Counter16BitSet(); +*/ + +uint16_t TMR1_Counter16BitGet( void ); + +/** + @Summary + Assigns a function pointer with a callback address. + + @Description + This routine assigns a function pointer with a callback address. + + @Param + Address of the callback routine. + + @Returns + None + + @Example + + TMR1_SetInterruptHandler(&TMR1_CallBack); + +*/ + +void TMR1_SetInterruptHandler(void (* InterruptHandler)(void)); + +/** + @Summary + Starts the TMR + + @Description + This routine starts the TMR + + @Param + None. + + @Returns + None + + @Example + Refer to the example of TMR1_Initialize(); +*/ + +void TMR1_Start( void ); + +/** + @Summary + Stops the TMR + + @Description + This routine stops the TMR + + @Param + None. + + @Returns + None + + @Example + Refer to the example of TMR1_Initialize(); +*/ + +void TMR1_Stop( void ); + +/** + @Summary + Returns the elapsed status of the timer and clears if flag is set. + + @Description + This routine returns the elapsed status of the timer and clears + flag if its set. + + @Param + None. + + @Returns + True - Timer has elapsed. + False - Timer has not elapsed. + + @Example + Refer to the example of TMR1_Initialize(); +*/ + +bool TMR1_GetElapsedThenClear(void); + +/** + @Summary + Returns the software counter value. + + @Description + This routine returns the software counter value. + + @Param + None. + + @Returns + Software counter value. + + @Example + Refer to the example of TMR1_Initialize(); +*/ + +int TMR1_SoftwareCounterGet(void); + +/** + @Summary + Clears the software counter value. + + @Description + This routine clears the software counter value. + + @Param + None. + + @Returns + None + + @Example + Refer to the example of TMR1_Initialize(); +*/ + +void TMR1_SoftwareCounterClear(void); + +#ifdef __cplusplus // Provide C++ Compatibility + + } + +#endif + +#endif //_TMR1_H + +/** + End of File +*/ diff --git a/mcc_generated_files/traps.c b/mcc_generated_files/traps.c new file mode 100644 index 0000000..65b5ccf --- /dev/null +++ b/mcc_generated_files/traps.c @@ -0,0 +1,122 @@ +/** + System Traps Generated Driver File + + @Company: + Microchip Technology Inc. + + @File Name: + traps.h + + @Summary: + This is the generated driver implementation file for handling traps + using PIC24 / dsPIC33 / PIC32MM MCUs + + @Description: + This source file provides implementations for PIC24 / dsPIC33 / PIC32MM MCUs traps. + Generation Information : + Product Revision : PIC24 / dsPIC33 / PIC32MM MCUs - 1.171.4 + Device : PIC24FV16KM202 + The generated drivers are tested against the following: + Compiler : XC16 v2.10 + MPLAB : MPLAB X v6.05 +*/ +/* + (c) 2020 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + +/** + Section: Includes +*/ +#include +#include "traps.h" + +#define ERROR_HANDLER __attribute__((interrupt,no_auto_psv)) +#define FAILSAFE_STACK_GUARDSIZE 8 + +/** + * a private place to store the error code if we run into a severe error + */ +static uint16_t TRAPS_error_code = -1; + +/** + * Halts + * + * @param code error code + */ +void __attribute__((weak)) TRAPS_halt_on_error(uint16_t code) +{ + TRAPS_error_code = code; +#ifdef __DEBUG + __builtin_software_breakpoint(); + /* If we are in debug mode, cause a software breakpoint in the debugger */ +#endif + while(1); + +} + +/** + * Sets the stack pointer to a backup area of memory, in case we run into + * a stack error (in which case we can't really trust the stack pointer) + */ +inline static void use_failsafe_stack(void) +{ + static uint8_t failsafe_stack[32]; + asm volatile ( + " mov %[pstack], W15\n" + : + : [pstack]"r"(failsafe_stack) + ); +/* Controls where the stack pointer limit is, relative to the end of the + * failsafe stack + */ + SPLIM = (uint16_t)(((uint8_t *)failsafe_stack) + sizeof(failsafe_stack) + - FAILSAFE_STACK_GUARDSIZE); +} + +/** Oscillator Fail Trap vector**/ +void ERROR_HANDLER _OscillatorFail(void) +{ + INTCON1bits.OSCFAIL = 0; //Clear the trap flag + TRAPS_halt_on_error(TRAPS_OSC_FAIL); +} +/** Stack Error Trap Vector**/ +void ERROR_HANDLER _StackError(void) +{ + /* We use a failsafe stack: the presence of a stack-pointer error + * means that we cannot trust the stack to operate correctly unless + * we set the stack pointer to a safe place. + */ + use_failsafe_stack(); + INTCON1bits.STKERR = 0; //Clear the trap flag + TRAPS_halt_on_error(TRAPS_STACK_ERR); +} +/** Address Error Trap Vector**/ +void ERROR_HANDLER _AddressError(void) +{ + INTCON1bits.ADDRERR = 0; //Clear the trap flag + TRAPS_halt_on_error(TRAPS_ADDRESS_ERR); +} +/** Math Error Trap Vector**/ +void ERROR_HANDLER _MathError(void) +{ + INTCON1bits.MATHERR = 0; //Clear the trap flag + TRAPS_halt_on_error(TRAPS_MATH_ERR); +} diff --git a/mcc_generated_files/traps.h b/mcc_generated_files/traps.h new file mode 100644 index 0000000..80443bc --- /dev/null +++ b/mcc_generated_files/traps.h @@ -0,0 +1,86 @@ +/** + System Traps Generated Driver File + + @Company: + Microchip Technology Inc. + + @File Name: + traps.h + + @Summary: + This is the generated driver implementation file for handling traps + using PIC24 / dsPIC33 / PIC32MM MCUs + + @Description: + This source file provides implementations for PIC24 / dsPIC33 / PIC32MM MCUs traps. + Generation Information : + Product Revision : PIC24 / dsPIC33 / PIC32MM MCUs - 1.171.4 + Device : PIC24FV16KM202 + The generated drivers are tested against the following: + Compiler : XC16 v2.10 + MPLAB : MPLAB X v6.05 +*/ +/* + (c) 2020 Microchip Technology Inc. and its subsidiaries. You may use this + software and any derivatives exclusively with Microchip products. + + THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER + EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A + PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP PRODUCTS, COMBINATION + WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. + + IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, + INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND + WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS + BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE + FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN + ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, + THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE. + + MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE + TERMS. +*/ + +#ifndef _TRAPS_H +#define _TRAPS_H + +#include + +/** + * Error codes + */ +typedef enum +{ + /* ----- Traps ----- */ + TRAPS_OSC_FAIL = 0, /** Oscillator Fail Trap vector */ + TRAPS_STACK_ERR = 1, /** Stack Error Trap Vector */ + TRAPS_ADDRESS_ERR = 2, /** Address Error Trap Vector */ + TRAPS_MATH_ERR = 3, /** Math Error Trap Vector */ +} TRAPS_ERROR_CODE; + +/** + @Summary + Default handler for the traps + + @Description + This routine will be called whenever a trap happens. It stores the trap + error code and waits forever. + This routine has a weak attribute and can be over written. + + @Preconditions + None. + + @Returns + None. + + @Param + None. + + @Example + None. + +*/ +void TRAPS_halt_on_error(uint16_t code); + +#endif \ No newline at end of file -- cgit v1.2.3