Handle USB reconnect while out of park

This commit is contained in:
2026-06-07 12:14:43 +09:00
parent 7d672019b0
commit 582311ed47
3 changed files with 118 additions and 40 deletions
+8 -1
View File
@@ -187,6 +187,13 @@ targetPosMs = storedSeatPositionMs
relay = UP until currentPosMs reaches targetPosMs</pre>
<p>P단 외 상태가 80ms 유지되면 EEPROM에 저장된 위치까지 상승합니다.</p>
<h3>3.4.1 P단 외 상태에서 USB/시리얼 리셋</h3>
<pre>boot with IG1 = HIGH and P = LOW:
currentPosMs = storedSeatPositionMs
targetPosMs = storedSeatPositionMs
relay = OFF</pre>
<p>USB 시리얼 연결로 보드가 리셋되더라도 이미 주행 위치에 있다고 가정합니다. 따라서 리셋 직후 오상승하지 않고, 이후 P단으로 바뀌면 저장 위치 기준으로 하강합니다.</p>
<h3>3.5 P단 복귀 또는 시동 OFF</h3>
<pre>confirmedDriveMode = LOW
targetPosMs = 0
@@ -261,7 +268,7 @@ if useCount >= 10 and IG1 LOW for 5 minutes:
<h2>8. 현재 주의 사항</h2>
<ul>
<li>시트 위치는 실제 센서가 아니라 시간 기반 추정값입니다.</li>
<li>전원 차단 후 재부팅하면 <code>currentPosMs</code>는 0에서 시작합니다.</li>
<li>전원 차단 후 P단/IG1 OFF 상태로 재부팅하면 <code>currentPosMs</code>는 0에서 시작합니다. 단, IG1 ON + P단 외 상태에서 재부팅하면 저장 위치에서 시작한 것으로 간주합니다.</li>
<li><code>u</code>/<code>d</code>는 위치 조절만 하고 EEPROM 저장은 하지 않습니다. 저장은 반드시 <code>p</code>로 합니다.</li>
<li><code>d</code>는 하강, <code>g</code>는 debug입니다. debug 충돌을 피하기 위해 <code>d</code>를 debug로 쓰지 않습니다.</li>
<li>debug 상태에서는 <code>x</code>만 작동하며, <code>r</code>, <code>a</code>, <code>s</code>, <code>u</code>, <code>d</code>, <code>p</code>, <code>c</code>는 모두 무시됩니다.</li>