From b70e9ddb5876baa2265c9d21a36322e99114a3d4 Mon Sep 17 00:00:00 2001 From: mlewis Date: Fri, 10 May 2024 09:47:39 -0400 Subject: [PATCH] . --- Arduino-WDT/Arduino-WDT.ino | 131 ++++++++++++++++++++++++++++++++++++ Desktop/QuitWDT.lnk | Bin 0 -> 577 bytes Desktop/Reboot.lnk | Bin 0 -> 1243 bytes Desktop/TestWDT.lnk | Bin 0 -> 1250 bytes EMSAStartup.py | 5 ++ Feed-WDT.py | 108 +++++++++++++++++++++++++++++ QuitWDT.py | 6 ++ Startup/00-Feed-WDT.lnk | Bin 0 -> 1454 bytes Startup/01-SignalVu-PC.lnk | Bin 0 -> 1726 bytes Startup/02-EMSAStartup.lnk | Bin 0 -> 1460 bytes TestWDT.py | 6 ++ port0.py | 6 ++ port1.py | 6 ++ port2.py | 6 ++ port3.py | 6 ++ port4.py | 6 ++ reboot.py | 10 +++ 17 files changed, 296 insertions(+) create mode 100644 Arduino-WDT/Arduino-WDT.ino create mode 100644 Desktop/QuitWDT.lnk create mode 100644 Desktop/Reboot.lnk create mode 100644 Desktop/TestWDT.lnk create mode 100644 EMSAStartup.py create mode 100644 Feed-WDT.py create mode 100644 QuitWDT.py create mode 100644 Startup/00-Feed-WDT.lnk create mode 100644 Startup/01-SignalVu-PC.lnk create mode 100644 Startup/02-EMSAStartup.lnk create mode 100644 TestWDT.py create mode 100644 port0.py create mode 100644 port1.py create mode 100644 port2.py create mode 100644 port3.py create mode 100644 port4.py create mode 100644 reboot.py diff --git a/Arduino-WDT/Arduino-WDT.ino b/Arduino-WDT/Arduino-WDT.ino new file mode 100644 index 0000000..210fa92 --- /dev/null +++ b/Arduino-WDT/Arduino-WDT.ino @@ -0,0 +1,131 @@ +const int statePin = 3; // Connect LattePanda's S3 pin to Arduino's D3 +const int resetPin = 4; // Connect LattePanda's RST pin to Arduino's D4 +const int D10 = 10; +const int D11 = 11; +const int D12 = 12; + +bool watchdogActive = false; +unsigned long lastReceivedTime; +unsigned long currentTime; + +bool lastLEDState = LOW; +unsigned long lastLEDTime; +unsigned long currentLEDTime; + +void setup() +{ + pinMode(LED_BUILTIN, OUTPUT); + + digitalWrite (LED_BUILTIN, LOW); + lastLEDTime = millis (); + + pinMode(statePin, INPUT); // Set as input to read the state pin's level + pinMode(resetPin, INPUT); // By default, the RST pin on LattePanda is 3.3V. Initialize Arduino pin as INPUT to match this level. + + pinMode(D10, OUTPUT); + pinMode(D11, OUTPUT); + pinMode(D12, OUTPUT); + + Serial.begin(9600); +} + +void loop() +{ + //-- Check to see if it's time to change the LED state. + currentLEDTime = millis (); + if (currentLEDTime > lastLEDTime) //-- Check for millis overflow + { + if (currentLEDTime - lastLEDTime > 1000U) + { + if (lastLEDState == LOW) + { + digitalWrite (LED_BUILTIN, HIGH); + lastLEDState = HIGH; + } + else + { + digitalWrite (LED_BUILTIN, LOW); + lastLEDState = LOW; + } + + lastLEDTime = millis (); + } + } + else + lastLEDTime = currentLEDTime; + + // Check if the watchdog should be activated + if (digitalRead (statePin) == HIGH) + { + if (Serial.available () > 0) + { + char receivedChar = Serial.read (); + if (receivedChar == 'A') + { + watchdogActive = true; + lastReceivedTime = millis(); + } + else if (receivedChar == 'Q') + { + watchdogActive = false; + } + else if (receivedChar == '0') + { + digitalWrite (D10, LOW); + digitalWrite (D11, LOW); + digitalWrite (D12, LOW); + } + else if (receivedChar == '1') + { + digitalWrite (D10, LOW); + digitalWrite (D11, LOW); + digitalWrite (D12, LOW); + + digitalWrite (D10, HIGH); + } + else if (receivedChar == '2') + { + digitalWrite (D10, LOW); + digitalWrite (D11, LOW); + digitalWrite (D12, LOW); + + digitalWrite (D11, HIGH); + } + else if (receivedChar == '3') + { + digitalWrite (D10, LOW); + digitalWrite (D11, LOW); + digitalWrite (D12, LOW); + + digitalWrite (D10, HIGH); + digitalWrite (D11, HIGH); + } + else if (receivedChar == '4') + { + digitalWrite (D10, LOW); + digitalWrite (D11, LOW); + digitalWrite (D12, LOW); + + digitalWrite (D12, HIGH); + } + } + } + else + { + watchdogActive = false; + } + + // If watchdog is active and 's' character isn't received within 1 minute, reboot LattePanda board + currentTime = millis (); + if (currentTime > lastReceivedTime) //-- Check for millis overflow and wait for the next cycle if it has + { + if (watchdogActive && (currentTime - lastReceivedTime > 60000U)) + { + pinMode(resetPin,OUTPUT); // Set pin to OUTPUT mode + digitalWrite(resetPin, LOW); // Pull down the RST pin to reboot the LattePanda board + delay(50); // Maintain a LOW level for 50ms + pinMode(resetPin, INPUT); // Set pin back to INPUT mode to match default 3.3V level of LattePanda's RST pin + watchdogActive = false; // Stop the watchdog function after rebooting the LattePanda board + } + } +} diff --git a/Desktop/QuitWDT.lnk b/Desktop/QuitWDT.lnk new file mode 100644 index 0000000000000000000000000000000000000000..33d262bc1f6a39f75a67d58d811549faa46fcacb GIT binary patch literal 577 zcmeZaU|?VrVFHp23^FkfD?zlc9tmoWX@5gh7v?fB|R(gA@?Q0I>`ZgLHyu6CehGXdspVVrC#- zkda>{0Hnh+^HTE5iy54)VnT~ki;81>5=%-_0}}I65@TFai?d7e3u2Jn$OE(~2CLoD z49>t%iD3w3C}v1yC<2l(3_c8rKo^z(`2j#y9zzO{i~+hg6)2kx6we2`IsxLM1rb0R z1X3Wj>gJagSsE4=GU)yE+oZR3k?+zyt?X`jO@982)`^90-U+rx&YGn2Qzw9syerU5 zPN0V^fwW<8K=4MfT$i=I1s=;i9Q2mhR`kdM#WR4I!2^gd^U3+QMNadXq;jPw=aum* IkT?tg0Gy|iivR!s literal 0 HcmV?d00001 diff --git a/Desktop/Reboot.lnk b/Desktop/Reboot.lnk new file mode 100644 index 0000000000000000000000000000000000000000..d0efcfee78ea0fb6f0085b08e407cbbe99f147cd GIT binary patch literal 1243 zcmcIjT}YEr7=BhpiX@66CY1}q8|!m(&Oay=-O`vkoX~YoVa$oNdlsMBQ{=-kJcyE@NzHQl5uiX3EN=iPjFX~lx~NK9c=xr|IFydd{| zSr6cb4h_SUeuP-I6DooTz+glp&-yzk^OyoEwBpH zfYK^mt1vmx4iB2pLTo?#46|Eu?7%Uy_)h3*vREOqI6p|98PRU! zQ(siWgIdf0Z{MwJ!@56YcB;XE;Y*CyCnuu%hr^l?RR=uUP&DS(1HN?0oWDZyWyn9@ zw=d%c#O~iG=acix>{vlF8kqh6WE2xR#9@g)`wdx4Gnf091HJd&f9z;md>nXHwXt3* z&icrl?2MOMtigbBC8|ZvXjk=m>*y$y-Ht_NX}108^4MW#_*TbOUE}k@yq$vazFo)I z#=8G+=j+7GA^s$_)#LVjzw31_yXuR4? zTGS-T!ZRDGhEaAtw0c@LY7uMW)3d`upLm8<635EDpwz0TA&PlX9BO$s8EKtwZB*vY hUY|Hl|A+``C2!=N=)8UDq3iysFM4p>wk`ar^&0|6{%QaK literal 0 HcmV?d00001 diff --git a/Desktop/TestWDT.lnk b/Desktop/TestWDT.lnk new file mode 100644 index 0000000000000000000000000000000000000000..85f0171300ae572e8bb5201e86c58ad628e8b48c GIT binary patch literal 1250 zcmcIjT}YEr7=BhpiX@66HYyi|H|E@rQzul4+tQdi+`t7>HgxJ&+rIgItEGgHU{NT9 zMg$dz6yZftg8h*619e-X1>sc`6?o%CS3*J0`L?A(Q8%5#^SG#LH> zAOjpqS0XCRRPy73NL{SuUl*_DCgEfa5;G2Jxr=e?SIo{NW43r39L=J?u1!%pwfPIi;Z`^GIeO?3n=_66t(nb<{$FNLlm z#E20k#8zUeUmnV*?vP?Va#98V0FNT~DWRyrB}Kw&AVqONV?_$}#bh-hb$jLBL^7m= z0~^ae%;ZJ{HpxFj&Lkm!7?7 zZJxazerQ=*)QhtqL2{@3)ME66)e{LhULl`U?B;<17}r{7jdRm2x8_H;yJ91)7JL1@ z!o1aj^T9Re=+a{7Z|94QnZx+w)Ml^8`|+aRHSex%eDb|;vg~T~^#J#?2$T|)gqQEg zOxV)zNxZ5mZPuVVJxx5ba#qvJ#`k8YWu+FrR=z+ROxzQ%(W1pMb1i0O*lCDj?iWWL rcgEvQx0~vXHxHg3+s*xc;nYMdWWVL@5h2UceNun%ZDtu{xIy0xZlIa=nbOL%d2b4<6jd%+1&QdAUK z^xdxtii#p4h@g}{kqXkF?2k}J{VGC#Sbw6g=iRQAu!`Q7^PZ3Qyw5rJoWpeiFyxHj z3EWMdaI|9#@-qSJ{rknXXs=<#clW`T-+0Om7(FEDeBlTyW>>Dt&DaoMalyW~v*y^h za8Z8&3@E_B?QD8gUCw)2Mx_3dv)K)MdJR2&)vf!;bFc#%X2Rz1I;O&u#8Z6dFHS;v zEM}KAnHDW~!{+0C&z)_-X(b)~^KW%_eeOFQTwlI-Rp-O--5cA>kcCXf5$|^Syhn|E zGjY6tN`0M>QfqAcYm_6#ZHLUb0=)trJ#N6abxt;1(R#TN%Z6bN91@uG(qit8-+&8I z)Dx|dUOA9-Jk{5DDI4xe+uCaHHh!9Y80O1k0&_uH%n$je;6{j;aU!dv0J8fa7O`$Ct#di16vAsBo&vGk{hqT=xbavBE9PxPcKOFhW6s1muzuq?sgx&KHx5 z)l8aB${=0-H0q<6n%YprA8l4)vr09p5?3XctZ9lzj`(FspARY7FUcLMk4M#LK$G-0 zyjG>(^S3Y$BYX4r^H(ROG#!xsP&p~>_nKjYl@V)LV}+emDZ7$$r&0G%5{!QIiayVU=+#Kz%y%v;WzpYp)VEIP9yC-wsoL#)(X%>p;Gnpx zBeBP4eB@&J6*a6yV~a|IN?0{1h#0lDD$ASI9a)JwtL^ZC@Z0N-O@sXt_sD})Q|<)b z{pxy+JrRNgH=|e|=Ec<+|EBrsDmpftA8Ow0;0AghiJC literal 0 HcmV?d00001 diff --git a/Startup/01-SignalVu-PC.lnk b/Startup/01-SignalVu-PC.lnk new file mode 100644 index 0000000000000000000000000000000000000000..f6f319d49c9a1d6f4b9cf305f23a88a918f923ec GIT binary patch literal 1726 zcmb_cS!k0%5T0n2R7G2~5{sH3SSy+|X{|XxXiamdv58I4AVCwFG>y4x5-}i%BGiLa z!~+BmL|glyA{MHMSHu?um0Cr#f|U9oC|VQ+@c_U1b19^V;{JTIGrRN8emk?f79tYO z7zas|79<&uk(gwx-~G1WwdRRvwxTyE>L#* znV1$Sl_zFVjb7&}c;&SesRX^vc}7-Fwic_YrExok5>!ehGjI@P!Q?V6LMg!Aow$*2zVqhEg^S4wiU7M zD@@Ie7LINHEw)aG9V{Aq+r~#^M?62Gda#4Fv;{k`kzR-&!d|!}6|4J7Wcm0CgVR9p z$>fsfI-PaG8qe=D|4hjfg$+O}zJ>z3N&-Z)fl#*RTClwY;1&cVzqf{9o(5=gr20e{33TDwJV)Bma~d`T?WjEX5xo4=J~ zp9xoy8o9>U_gLe(d{iO-I3ECm(<#Se~*s{biP95K_n z&@q9LeNN+bi$;I#`}9LqN5c;{V_dj^OrQp^<36Z>`s~eSON-lGkG__av=sMWot@Lb z;&C;4HO{Xbb6VjoP{Oxf_}Ev4|M<(beke>v`CGq8Tw!yk8Q9#}5!5HEl8a@4@%x%LwxBT(c3 literal 0 HcmV?d00001 diff --git a/Startup/02-EMSAStartup.lnk b/Startup/02-EMSAStartup.lnk new file mode 100644 index 0000000000000000000000000000000000000000..3394e84c4ec9c6f3e632dee0662c9d6be1f51248 GIT binary patch literal 1460 zcmb7EYe-XJ7=A3fSWsGavr_AaUBK1s;v9vS%{6VS(J*Hn!h<`TW4f)K6HbVVqQuCe zEA^-R5fw#55J4$jkqXkF%b%bN^{WW|Vf~42&v$mLgjMt%-tWDB&-;Gg`))1(Y1t#V z1Gn@YjxLNvemY>ibEn7_eV$hO-F=|-H=YdRxgo*e3rARySG6i=Uti8Rb=IFQZ z;{F206=2{-CZnn^ezuwdP`PHf5`ttTwJ@>-5u5K?w2GW^FoZId59x?Gu z)&v2Syq%DeYh2fBlq1H^4w-ocdIda2-hglGoJ_c)4RRA!48t5aC@|-x#M~3V3Kybi zAX*cnvLP9Gs;}vMCfrrFb!)xbcs2Vl%oj%m=7N-%AM#JajSw;8L{>=wRtro=y@9>k zSCPm@ZPgn4+FF6_9ELsSl)zq?5_{U)T+|Xf0zYwEh@N~A)xa+z2Lit4-2C)dtJWBe zn3RM9IDTe$a9(&thELbT3nyQBCa{AF*X_akeBoAB+{g?On4lm*0&++R(kzmgA;FiD z#A+c;CygXs_%!;Xn3~#9#2;-@VY5m#suEWvm#k@uM~?Vq$(RpG@0a8bHN>N8G@wbw z8M;;J_xdfY!^GbFegD--DMbgQKfIij^1j8e!ODy^d}D>3R4Kdkxznh7D2X1(v<{z1 z5j8YV|5HUN<{BA2`rHJ$%VFV@> z1HxBNVy8QOOj<{^<<08uj6}WFc4&Y2?G?wy!Tzi^d9ZrQ z&A_{V`5zNAgZLffX0ONlX0OlD?XuXqzDzz`aJ;#1GwuAN1M*0VNM023r&Wk$q#|81 zqXZV}X6lQv97|Aa_$<_fy_me116)X72_*~Tis%uah&59e-_Rwb_2LBj!Bo mEHj;6nb