Skip to content

Commit

Permalink
Tibbit #62 library with the ability to automatically update the firmw…
Browse files Browse the repository at this point in the history
…are.

The library of in-circuit LVP programming of PIC processors has also been changed to allow use from Tibbits libraries.
  • Loading branch information
DAT540 committed Jun 11, 2024
1 parent cd79234 commit 213127f
Show file tree
Hide file tree
Showing 5 changed files with 401 additions and 58 deletions.
10 changes: 1 addition & 9 deletions pic/PIC_LVP.tbh
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

#ifndef PIC_LVP_MAX_DATA_LEN
#define PIC_LVP_MAX_DATA_LEN 8192
#endif
Expand All @@ -23,12 +22,6 @@
#define PIC_LVP_DEBUG_PRINT 1
#endif

' You must define this define in your code with the type of the PIC processor that needs to be flashed.
' See enum PIC_TYPE
#ifndef PIC_LVP_TARGET_TYPE
#define PIC_LVP_TARGET_TYPE 0 ' Unknown PIC type
#endif

' PIC TYPE
enum PIC_TYPE
PIC_16F1826 = &b10011110000000,
Expand Down Expand Up @@ -89,7 +82,6 @@ enum PIC_TYPE
PIC_16LF18456 = &h30DA
end enum

declare sub pic_lvp_start(SCL as byte, SDA as byte, MCLR as byte)
declare sub pic_lvp_start(target as PIC_TYPE, SCL as byte, SDA as byte, MCLR as byte)

declare function pic_lvp_upload_firmware(byref fwname as string) as boolean

17 changes: 7 additions & 10 deletions pic/PIC_LVP.tbs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
include "global.tbh"

dim icsp_target as PIC_TYPE = 0
dim icsp_sda as pl_io_num = PL_IO_NULL
dim icsp_scl as pl_io_num = PL_IO_NULL
dim icsp_mclr as pl_io_num = PL_IO_NULL
Expand Down Expand Up @@ -48,12 +49,6 @@ type firmware
end type


' Global flag to enable/disable SSI use
#define T_ERAB_MS 5
#define T_PINT_MS 6
#define T_PEXT_MS 3
#define T_INCADDR_MS 1

function swab(w as word) as word
swab = ((w shr 8) and &hFF) or ((w and &hFF) shl 8)
end function
Expand Down Expand Up @@ -1340,7 +1335,7 @@ function check_pic(options as byte) as boolean
#ifdef PIC_LVP_DEBUG_PRINT
sys.debugprint(" Detected old " + model + " revision " + str(rev) + "\r\n")
#endif
if (pic and mask) <> PIC_LVP_TARGET_TYPE then
if (pic and mask) <> icsp_target then
#ifdef PIC_LVP_DEBUG_PRINT
sys.debugprint(" Wrong PIC!!!\r\n")
#endif
Expand All @@ -1363,7 +1358,7 @@ function check_pic(options as byte) as boolean
#ifdef PIC_LVP_DEBUG_PRINT
sys.debugprint(" Detected new " + model + "\r\n")
#endif
if pic <> PIC_LVP_TARGET_TYPE then
if pic <> icsp_target then
#ifdef PIC_LVP_DEBUG_PRINT
sys.debugprint(" Wrong PIC!!!\r\n")
#endif
Expand Down Expand Up @@ -1409,7 +1404,7 @@ function program_firmware(byref fw as firmware) as boolean

program_firmware = false

if pic_id(PIC_LVP_TARGET_TYPE, name, rev, options, mask) <> true then
if pic_id(icsp_target, name, rev, options, mask) <> true then
#ifdef PIC_LVP_DEBUG_PRINT
sys.debugprint("Unknown TARGET PIC\r\n")
#endif
Expand Down Expand Up @@ -1533,8 +1528,10 @@ function pic_lvp_upload_firmware(byref fwname as string) as boolean

end function

sub pic_lvp_start(SCL as byte, SDA as byte, MCLR as byte)
sub pic_lvp_start(target as PIC_TYPE, SCL as byte, SDA as byte, MCLR as byte)

icsp_target = target

icsp_scl = SCL
icsp_sda = SDA
icsp_mclr = MCLR
Expand Down
292 changes: 292 additions & 0 deletions tibbits/tbt62/Tibbit62_FW_00_02.hex
Original file line number Diff line number Diff line change
@@ -0,0 +1,292 @@
:1000000080311F28740808007E1480314E01961A32
:100010008C1E0E288731E52780311D280B1F1D28D7
:10002000991C14288F18172819180F1C1D28400117
:1000300039088A0038080A0080317E1009008031B2
:100040002128F001F101F201F301F401F501F601BB
:10005000203084000030850034308F315A278031C1
:10006000A03084000030850024308F315A277E1064
:10007000400180313B288731172780311210181436
:1000800012111811921492129812921398138B173E
:100090000B178531A12580318F31122780318431B2
:1000A000C2248031F5010030E5000030E40000306A
:1000B000E3000030E20084298B138F3193278031D5
:1000C0008F319B278031003A03196D280830D40006
:1000D0004C308631642680317D290830DB00FF30CA
:1000E00086317C2680317D298B138F319327803197
:1000F000833155238031003A031985280830D40014
:100100004C308631642680317D290830DB00FF3099
:1001100086317C2680317D298B138F319327803166
:1001200087318C278031003A0319982801309928AB
:10013000003087319C2780317D298B138F319327A5
:10014000803187318C2780315530D8008F3193270B
:100150008031863117268031EC016C08203E860004
:1001600087010108D8008F31932780318631172607
:1001700080310130E1006108EC0708306C02031C9B
:10018000AD28E90180310220803169020318D828A6
:1001900069088731CC278031D8008F31932780318F
:1001A0008631172680310130E1006108E907C22855
:1001B0008F318B2780317D298B138F3193278031AD
:1001C00087318C2780315530D8008F31932780318B
:1001D000863117268031ED016D08203E86008701AB
:1001E0000108D8008F31932780318631172680315E
:1001F0000130E1006108ED0708306D02031CEC28B6
:10020000EA018031022080316A02031817296A0846
:100210008731CC278031D8008F31932780318631C8
:10022000172680310130E1006108EA0701298F318A
:100230008B2780318F319327803186314C26803156
:10024000003A03191A297D298B138F317C278031BD
:10025000003A031966298331D5238031003A031906
:1002600058294B088231CE228031003A03194A299D
:10027000EB014B086B0203187A296B08A03E86003D
:100280008701010887319C2780310130E100610836
:10029000EB073929E6014B08660203187A29FF307B
:1002A00087319C2780310130E1006108E6074B2946
:1002B000E7014B08670203187A29FF3087319C2732
:1002C00080310130E1006108E70759294001E80168
:1002D0004B08680203187A298F31932780318631C1
:1002E0003226803187319C2780310130E10061085E
:1002F000E80768298F311D2780318B17F501822986
:10030000F5014001181464007508003A03198329A7
:10031000013A03195C28033A03197428013A0319B6
:100320008C28073A03192429013A03199D28033A16
:100330000319DC28802983298F3106278131F000B9
:10034000C42A54308731AC27813142308731AC2701
:10035000813154308731AC27813162308731AC270D
:10036000813100308731AC27813102308731AC27B1
:10037000813101304001CA00F3014001C801F2019E
:10038000912A700801398F31AE278131BD298F3113
:1003900075278131003A031D912A7018D7297508F5
:1003A000031DBD2940011810F501F50ABD29750886
:1003B000031DBD29400118100230182A8F317527FE
:1003C0008131003A031D912AF0307005FA00D030D7
:1003D0007A06031DEF2901304001C900F1294001CF
:1003E000C90170080F39013EF200F401CA01F3019E
:1003F000F1010130C800912A7508031D0A2A18105E
:10040000F401CA01F301F2010430F50070080F395C
:10041000013ECB00C801912A8F3175278131003A06
:10042000031D912A7508031DBD29400118100330D2
:10043000F500BD291810701C1F2A0130202A003039
:100440008531C0258131662A1810701C292A18159B
:10045000662A1811662A1810442A0330302A0830F8
:100460008731BC2781317808FD007708FC00582AC5
:100470000C0C0139FA00FB017A08FC007B08FD0036
:10048000582AFC01FD01582A70080339FA00FB01C3
:100490007B08003A03194D2A412A7A08003A0319C9
:1004A0002D2A013A03192F2A033A0319382A412A1F
:1004B0007D088731AC2781317C088731AC278131B9
:1004C00001304001CA00F301C801F2011814912A59
:1004D0007008F039FA00FB017B08003A0319712A11
:1004E000912A7A08103A03192B2A303A0319242A40
:1004F000103A03191A2AB03A0319C129103A0319FC
:100500000C2A303A0319C729103A0319FC29703A0A
:100510000319DE29103A0319DE29203A0319A1290B
:10052000912A4001C70108004803031DAB2A083087
:1005300071020318A92A7108203E860087017008FD
:1005400081000130FA007A08F10708307106031DB6
:100550000800C801080072080319080070088731F4
:10056000AC2781310130F2027208031D08007508C2
:10057000031D0800400149080319C02A0630C12A9A
:100580000530F5001810080040014708003A03192B
:10059000942A013A0319682ACD2A0800DB00113099
:1005A0005B02031CD52A0F30DB005B08031DDA2A2F
:1005B000DB01DB0ADC01DD01ED2A5D08D7005C0808
:1005C000D600DC0A0319DD0A003057026530031932
:1005D0005602031CED2A003008008F319327823128
:1005E000003A0319F52A0130F62A003086314C26EC
:1005F0008231003A031DDD2AD8015B085802031836
:10060000532BDA01D901DC01DD018F3193278231CF
:1006100086314C268231003A031D1D2B5D08D70020
:100620005C08D600DC0A0319DD0A00305702653089
:10063000031956020318EB2A052BDC01DD018F316B
:100640009327823186314C268231003A0319372BA9
:100650005D08D7005C08D600DC0A0319DD0A00300B
:1006600057026530031956020318EB2A1F2B5A351F
:10067000DA0000305D02053003195C0203185A14D9
:100680000130D6005608D90708305902031C032B45
:100690005808A03E860087015A0881000130D60024
:1006A0005608D807FD2A013008004001DD00BA01D4
:1006B0003F08031D622B642B41080319872B5D083B
:1006C00087312C27003008005D0887318C27833163
:1006D000003A0319622BBB01BB03C0018F31E02735
:1006E0008331F030D8005D088631172683318F3191
:1006F000E02783315D088631ED268331C2005D0835
:100700008631ED268331C1004208031D5C2B42086F
:10071000031DA92B4108031DA92B40083D06031DFD
:10072000942BBE01BE0AAB2B3D08803ADC0040088A
:10073000803ADC0203189E2BBE01A32B40088531B2
:1007400081258331BE003E08031DAB2B4008BB0052
:10075000AB2B4208BE003E08031DB52BD401400858
:10076000853132258331D601BD2BD401D40A40080E
:10077000853132258331D601D60A5D088531DF25E2
:1007800083310130DC005C08C0074008803A403EFD
:10079000031C7A2B3B08BD00BD1FD02BBF01BF0A35
:1007A0005D0887312C27013008008F319327833172
:1007B0008731682783318F3193278331873102272F
:1007C0008331DA01DB018731F127833164000130A5
:1007D0004001DA070030DB3D01305B023A3003199B
:1007E0005A02031CE32B8F319327833187317A27F9
:1007F0008331D801D9018F319327833186314C263B
:100800008331003A0319142C5908D7005808D60030
:10081000D80A0319D90A0030570265300319560265
:10082000031CFB2B00300800D801D9018F3193271E
:10083000833186314C268331003A031D2E2C590812
:10084000D7005808D600D80A0319D90A0030570231
:100850006530031956020318122C162C01300800BB
:100860008F31092784318F3167278431003A03198A
:10087000462C8F3115278431003A0319412C013061
:10088000522C8F310C2784310230522C8F31152796
:100890008431003A03194E2C0330522C8F310C272F
:1008A000843104304001C500712C8F31A42784317C
:1008B0008F316E278431003A031908008F31F527F4
:1008C00084318F310C2708008F31A4270800582C61
:1008D0008F3119278431003A031908008F31EA2734
:1008E00008004508013A0319552C033A0319642CF2
:1008F000013A0319672C073A0319682C7F2C08006A
:10090000D600D701D801560886314C268431003AEA
:100910000319952C0130D7070030D83D003058021C
:10092000133003195702031C832C560886314C26BA
:100930008431003A03199E2C00300800D701D801F9
:10094000560886314C268431003A031DB22C013002
:10095000D7070030D83D0030580232300319570213
:10096000031CA02C560886314C268431003A03190A
:100970009C2C00305802073003195702031C9C2C92
:10098000013008008F31B827843180308F314E27F5
:100990008431FE308F315427843130304001D4000F
:1009A0000430D5008F31352784310030D400003039
:1009B000D5008F31302784315B30D4000530D5002D
:1009C0008F31442784319C30D4000130D5008F31E1
:1009D0003A2784316030D4000F30D5008F312B2777
:1009E00084310030D4000030D5008F313F2784316E
:1009F0008F310F2784318F318B2708009C0198019C
:100A000099019A01083096005A309200FF30930005
:100A1000C3309400C3307E01CE003F30C300583055
:100A2000B800E501C401B901CF01E601BA01C50171
:100A30001830D000FF30BB00FF30C600FF30D100BF
:100A40003F30BC003F30C7003F30D2000E307D0148
:100A5000C50013307E019E0014309F000F307D01D1
:100A6000C6000800D6005608D5000330D536890BDD
:100A7000362D5508D7000130D50056080739890AA8
:100A8000422DD535890B412D5508D800540803193E
:100A9000522D5808D50057084C3E8600870155084E
:100AA000810408005809D50057084C3E860087018C
:100AB00055088105080074080319722D4A03031DA7
:100AC000722D740873020318722D7308B43E8600E9
:100AD000870101088F31212785310130F80078081E
:100AE000F307762DFF308F31212785317308740687
:100AF000031D0800740803190800F4014001CA012D
:100B00000800D7005708D4000330D436890B852D50
:100B10005408D5000130D40057080739890A912DAF
:100B2000D435890B902D5408D60055084C3E8600CC
:100B3000870101085605031D9F2D00300800013074
:100B4000080094151416141194121A119A120030F8
:100B5000873168278531013087316827853100303A
:100B600087317A278531013087317A278531003006
:100B700087312C278531013087312C27F601080079
:100B8000F8008F3183278531283E86008701780859
:100B9000810078080319D32D8F3183278531873160
:100BA00040278531D92D8F31832785318631942691
:100BB00085318F3183278531873154270800D7004D
:100BC000570887310227853156080319EB2D8F31DD
:100BD000D6278531EE2D8F31E027853157088731B3
:100BE0007A27853156080319F82D8F31E027080040
:100BF0008F31D627080041018C018D018E018F01B4
:100C00009201930198019A019F0142018C018D018B
:100C10008E018F019001920193019401950103309F
:100C2000960097010F309800843091000800400131
:100C3000DB00DA0158181E2ED601202ED601D60A66
:100C40005B088531DF2586310310D80C0130D900CF
:100C50005908DA0708305A02031C1A2E5B0887313C
:100C60002C2708004001DA00D901DB010310D90C60
:100C70005A088631ED268631003A031DD917013016
:100C8000D8005808DB0708305B02031C372E5A08CF
:100C900087312C27590808004001D4005A2E552EC0
:100CA00000300E1A0130D500622E00308E1901304E
:100CB000D500622E5408003A03194F2E013A031949
:100CC000502E552E55080800D600B43086008701F6
:100CD00040015608840085015408D50055080319C1
:100CE000752E12001E00D50B712E40015408F40021
:100CF0000130CA00F3010800E0006008DC00DD01FB
:100D00005C08D4005D08D5005B08DE00DF015E08EA
:100D1000D6005F08D700B4308631D7265B08F400D0
:100D20000130CA00F3010800F700A22E400194151B
:100D30001A110800400114169A1208004001941577
:100D40001A1108007708003A0319962E013A031980
:100D50009A2E9E2E0800D50055088731022786312D
:100D6000D601D7010130D6070030D73D01305702F8
:100D7000133003195602031CB22E550887317A2707
:100D800008004E304B019F0004309D009C014E0135
:100D90008C12961626304001D4000F30D5008F31CA
:100DA00049274B019E014001AC01AD010800D9006B
:100DB0005908DA000130D6020030D73B560A031931
:100DC000570A031908005A08860087015408810051
:100DD0000130D8005808DA07DA2ED70057088731D3
:100DE000022786318F31D6278631570887317A27F7
:100DF0008631570886314C268631D6008F31E02760
:100E0000560808004001D4000E2F94119A110800D2
:100E100014121A12080094119A1108005408003A8A
:100E20000319052F013A0319082F0B2F08008F31E2
:100E3000CC2787318F31C22787318431FE24873117
:100E40008731D92787318731FC2787318531FB25C9
:100E500087318631C1260800D400372F94151A1126
:100E6000080014169A12080094151A110800540864
:100E7000003A03192E2F013A0319312F342F08009D
:100E8000F7004B2F40011A15080040019A16080080
:100E900040011A1508007708003A0319422F013A59
:100EA0000319452F482F0800F7005F2F40019415C4
:100EB0000800400114160800400194150800770846
:100EC000003A0319562F013A0319592F5C2F0800D5
:100ED0004001D400712F1A1508009A1608001A153F
:100EE00008005408003A03196B2F013A03196D2FBB
:100EF0006F2F08004001D400832F941508001416AA
:100F00000800941508005408003A03197D2F013A8F
:100F100003197F2F812F08004001DA005A0886311B
:100F2000AB2687315A08843180248731D9005A088A
:100F300087312C2759080800D50010307402031897
:100F400008007408B43E860087015508810001300E
:100F5000D4005408F4070800F80010307402031895
:100F600008007408B43E86008701780881000130CB
:100F7000F7007708F4070800F900790841019F009D
:100F800042019117111311141118C42F41011E08A9
:100F9000F8001D08F7000800D400103054020318B0
:100FA000D72F5408B43E8600870101080800FF309F
:100FB0000800103051018D008F0191010530930020
:100FC0009001920110180800E22F8C1240012A08AB
:100FD0002B04031908002B088A002A080A0087310D
:100FE00008004001D5010130D4005408D50729304C
:100FF000550203180800F32FB33052018C0008008B
:101E0C0043010C0808004E010F1008004301101686
:101E1C0008004E0119140800A801A90108000F0CB4
:101E2C00890C0139080043010F0801390800013001
:101E3C00CA00F3010800F700770843018C00080082
:101E4C000130AC070030AD3D08005508B300540814
:101E5C00B20008005508B1005408B000080055083D
:101E6C00B9005408B80008005508B7005408B6006B
:101E7C0008005508AF005408AE0008005508B5001E
:101E8C005408B40008005508AB005408AA00080018
:101E9C004001D400540843018D0008004001D400D7
:101EAC00540843018E000800640080010131890B45
:101EBC005B2F00348F3106274001C6000130C7006C
:101ECC000800031043018F1E03140030093D080065
:101EDC00031043010F1C03140030093D08008F311F
:101EEC008327283E86008701010808008F3193273D
:101EFC00283E86008701010808000230760203188C
:101F0C00892F7608080000300800F4014001CA014E
:101F1C00F301F201C901C80108000230760203186E
:101F2C00992F76080800003008004001DE00BF0140
:101F3C00BD01BD035E08833155230800320833040C
:101F4C000319080033088A0032080A008F31080090
:101F5C00F700023077020318B62F7708F600080056
:101F6C00F60108004301901A08008F01063090001A
:101F7C00013091009016080043018F01063090004B
:101F8C000130910090128F318B2708004F01960180
:101F9C009701980199019A019B019C019D010800F0
:101FAC00D5010130D4005408D5070630550203186A
:101FBC000800D72FD5010130D4005408D50729309B
:101FCC00550203180800E12F4001360837040319A5
:101FDC00080037088A0036080A008F3108004001D3
:101FEC00340835040319080035088A0034080A003F
:041FFC008F31080019
:020000040001F9
:08000000FF3FFF3FFF3FFF3F00
:0A000E009C3FFF3FDF3FFF3FFF3F35
:00000001FF
Loading

0 comments on commit 213127f

Please sign in to comment.