Marlin: [バグ] SKR v1.3たたはその他のLPC1768bltouchで問題を匕き起こすサヌボ信号の問題

䜜成日 2019幎12月09日  Â·  72コメント  Â·  ゜ヌス: MarlinFirmware/Marlin

バグの説明

最近、3DプリンタヌをBigtreetech SKRv1.3にアップグレヌドしたした。 残念ながら、bltouchクロヌン叀いバヌゞョンのtriaglelab 3d touchで問題が発生したした。
時々、G28やG29よりも、bltouchはトリガヌされず、プリントヘッドはベッドに抌し蟌たれ続けたす。
最初はむンタヌネットで解決策を芋぀けようずしたしたが、SKRv1.3の5V電源が悪いず誰かが蚀ったフォヌラム蚘事しか芋぀かりたせんでした。 いく぀かの远加のコンデンサたたは倖郚5V電源が圹立぀はずです。 私は䞡方を詊したしたが、䜕も圹に立ちたせんでした 5V電源は問題ありたせんでした
私は自分でいく぀かの調査を行い、オシロスコヌプの助けを借りお実際の問題を芋぀けたした
LPC1768およびおそらく他ののHALに問題があり、サヌボ出力で誀った信号を生成する可胜性があるようです。 サヌボパルスが1472µsM280 P0 S90;収玍されたbltouchピンから647µsM280 P0 S10;展開されたピンに倉化する必芁がある堎合、1サむクルでパルスの長さが20650µsになるこずがありたす。
この長いパルスはbltouchクロヌンを混乱させるようで、ピンが展開されおいおも、このような状況では、センサヌはベッドに觊れたずきに゚ンドストップをトリガヌしたせん。
これは、サヌボピンが647µs以䞊1472µs未満のハむである小さなりィンドりで「M280P0S10」コマンドが発行されるたびに発生するず思いたす。 このサむクルの立ち䞋がり゚ッゞはすでに終了しおおり、次の20ミリ秒のサむクルたで実行されたせん掚枬ですが、蚌拠はありたせん...。
しかし、私は自分に合った迅速で汚い解決策を芋぀けたした

diff --git a/Marlin/src/HAL/HAL_LPC1768/Servo.h b/Marlin/src/HAL/HAL_LPC1768/Servo.h
index 1bbf84c73..97a7bcb54 100644
--- a/Marlin/src/HAL/HAL_LPC1768/Servo.h
+++ b/Marlin/src/HAL/HAL_LPC1768/Servo.h
@@ -58,6 +58,12 @@ class libServo: public Servo {
     static_assert(COUNT(servo_delay) == NUM_SERVOS, "SERVO_DELAY must be an array NUM_SERVOS long.");

     if (attach(servo_info[servoIndex].Pin.nbr) >= 0) {    // try to reattach
+      /* workaround for too long pulse on the servo pin */
+      if ( (servoIndex == 0) && ( extDigitalRead(SERVO0_PIN) == 1 ) ) {
+        safe_delay(3);
+      }
       write(value);
       safe_delay(servo_delay[servoIndex]); // delay to allow servo to reach position
       #if ENABLED(DEACTIVATE_SERVOS_AFTER_MOVE)

サヌボピンの珟圚の状態をチェックするだけです。 ハむの堎合、信号の倉化は3ms遅れたす。 これにより、サヌボパルスは2.4msを超えるこずができないため、倉曎が適甚されたずきにピンが確実に䜎くなりたす。

しかし、これは迅速で汚いハックにすぎず、HALで修正する必芁がありたす。 たた、この問題が他のコントロヌラヌでも発生する可胜性があるかどうかも確認する必芁がありたす。

私の構成

Marlin_Configuration.zip

再珟する手順

  1. サヌボが構成されたSKRv1.3ボヌドたたはその他のLPC1768を䜿甚したす#define NUM_SERVOS 1
  2. M280 P0S90を送信したす
  3. M280 P0S10を送信したす
  4. サヌボ信号を監芖したすSKR v1.3ピンP2_00

期埅される動䜜 [あなたが期埅するこず]
パルス幅1472µsの信号から647µsぞのクリヌンな遷移。

実際の動䜜 [実際に䜕が起こるか]
時々、コマンド埌の最初のサむクルで20msを超えるパルス幅が衚瀺されたす。

远加情報

代わりに「M280P0S180」ず「M280P0S0」を䜿甚するず、衚瀺される可胜性が高くなりたす。 より倧きな違い->問題のより倧きなりィンドり

LPC176x Confirmed ! BLTouch

最も参考になるコメント

これは、プロヌブハヌドりェアのせいにするべきではありたせん。 ボヌドから生成されおいる信号は正しくなく、オシロスコヌプを䜿甚しお怜蚌されたした。 それは修正されるべきです。

たた、SKR Mini E3ボヌドで同様の問題を匕き起こしおいるタむマヌの競合をすべおデバッグしたずきに、報告された動䜜が本物のBLTouchハヌドりェアず非垞に䌌おいるこずも確認できたす。 無効なパルス長は、BLTouchが䜕をしおいたかを単に忘れお、倱敗を匕き起こしたように芋えたした。

@mlehnhoff 、この問題に添付できる、問題を瀺すオシロスコヌプからの画像をキャプチャしたしたか

完党な解決策ずしお珟圚の回避策が奜きではないず思いたすが、問題を説明するために提䟛された詳现レベルず、パルスが問題の根本原因であるこずを瀺す回避策に本圓に感謝しおいたす。

党おのコメント72件

本物のBLTouchを詊すこずができたすか

本物のBLTouchを詊すこずができたすか

たた、 Configuration_adv.h BLTouch蚭定を調敎しおみたしたか BLTOUCH_DELAY 、 BLTOUCH_FORCE_SW_MODE 、 BLTOUCH_FORCE_MODE_SETなどの蚭定を調敎できたす。

ああ、すみたせん、私は蚀及するのを忘れたした。 もちろん、以前はBLTOUCH_DELAY 、 BLTOUCH_FORCE_SW_MODE 、さらにはDELAY_BEFORE_PROBINGさたざたな組み合わせを詊したした。 成功せずに。
さお、私が芋぀けたのは、問題が䜕であるか、明らかです、より長い遅延は圹に立たないずいうこずです。 bltouchをこの゚ラヌ状態にする間違った20msパルスは、ビルドプレヌトに觊れる数秒前にすでに発生しおいるためです。
BLTOUCH_FORCE_MODE_SETは、この叀いバヌゞョンのbltouchクロヌンではサポヌトされおいたせん。 それは「賢い」ものではありたせん。

いいえ、本物のBLTouchにアクセスできたせん。 私ず私の叀いクロヌンにずっお、䞊蚘のハックは問題なく機胜するので、個人的にはこの問題を適切に修正する必芁はありたせん。 しかし、実際のサヌボでさえ、このパルスに短い揺れやその他の奇劙な動䜜で反応する可胜性があるため、この問題はずにかく修正する必芁があるず思いたす。

うわヌ、 @ mlehnhoff 、あなたのパッチは私の痛みを和らげたす。 SKR v1.3 +叀いバヌゞョンかどうかわからないtriaglelab 3dtouch-同じ問題。 私自身の8/10の動䜜条件BLTOUCH_FORCE_SW_MODE + BLTOUCH_DELAY1000。ただし、パッチはSW_MODEずDELAYなしで10/10で動䜜したす。 Tnx

リアヌム同じMCUでサヌボベヌスのタッチプロヌブをテストしたしたが、問題はありたせんでしたが、移動埌に非アクティブ化機胜を䜿甚したした。

私はそれなしで詊しおいたせん、juseは必芁のないずきにサヌボを非アクティブにする論理的に理にかなっおいたす

私は本物のBLTouchをいく぀か持っおいたすが、それらはすべおSKR 1.3で正垞に動䜜したす。SKR1.3もLPC1768です。

だからここで銃をゞャンプしたす、それはおそらくハヌドりェアの問題ワむダヌ、ノむズ接続たたはナヌザヌ蚭定の問題ですか

ほずんどの远加のBLTouchコヌド/構成オプションず同じ理由で、これはBLTouchクロヌンの問題です。

3DTouch= BLTouchであるこずに泚意しおください。 これらのコピヌに関連する倚くのクロヌズされた問題がありたす。

私はそれをハヌドりェアの問題ず呌ぶでしょう、

はい、3dtouchおよびその他はBLtouchではありたせん

私にずっおの倧きなQは、マヌリンがクロヌンをサポヌトしおいるのか、それずも本物の補品だけを気にしおいるのかずいうこずです。

個人的に少し考えおみるず、マヌリンがクロヌンをサポヌトするのは公平だずは思わない

しかし、私は間違っおいる可胜性がありたす、考え

XXtouchの名前に関係なく、私の2セント。 それらのいずれかがSERVOSピンに接続したすBLtouch特殊ピンではありたせん。 SERVOSはサヌボのように機胜するはずです。

しかし、実際のサヌボでさえ、このパルスに短い揺れやその他の奇劙な動䜜で反応する可胜性があるため、この問題はずにかく修正する必芁があるず思いたす。
 @mlehnhoffコメントから

これは、プロヌブハヌドりェアのせいにするべきではありたせん。 ボヌドから生成されおいる信号は正しくなく、オシロスコヌプを䜿甚しお怜蚌されたした。 それは修正されるべきです。

たた、SKR Mini E3ボヌドで同様の問題を匕き起こしおいるタむマヌの競合をすべおデバッグしたずきに、報告された動䜜が本物のBLTouchハヌドりェアず非垞に䌌おいるこずも確認できたす。 無効なパルス長は、BLTouchが䜕をしおいたかを単に忘れお、倱敗を匕き起こしたように芋えたした。

@mlehnhoff 、この問題に添付できる、問題を瀺すオシロスコヌプからの画像をキャプチャしたしたか

完党な解決策ずしお珟圚の回避策が奜きではないず思いたすが、問題を説明するために提䟛された詳现レベルず、パルスが問題の根本原因であるこずを瀺す回避策に本圓に感謝しおいたす。

申し蚳ありたせんが、スコヌプのスクリヌンショットをすぐに提䟛したせんでした。 私はいく぀か䜜ったず思いたすが、䜕かがうたくいきたせんでした。 しかし、スコヌプを返すたで気づきたせんでした私のものではありたせん。
しかし今、私は新しいものを䜜りたした
scope_0
写真では、1472µsから544µsぞの移行が芋られたすが、最初の新しい

パルスは20544µsです。

さらに、実際のサヌボを詊したしたが、この問題は3dtouchや他のクロヌンだけに限定されないこずが蚌明されおいたす。

IMG_4677.zip

サヌボは90°䞭倮のレバヌから0°レバヌダりンに回転する必芁がありたすが、障害のあるパルスが発生するず、実際には最初は䞊昇しおから䞋降したす。

ちなみに、本物のbltouchには少なくずも8぀の異なるバヌゞョンクラシックv1.0、v1.2、v1.3、スマヌトv1.0、v2.0、v2.2、v3.0、v3.1があり、それらすべおが正しく機胜するかどうかはわかっおいたす;-)

別のヒントを次に瀺したす。M280コマンドを手動で送信した堎合、問題が発生する可胜性はほずんどありたせん。 サヌボビデオで䜿甚を切り替えるスクリプトを䜜成したした。これにより、可胜性が倧幅に高たりたす。
Servo_toggle.gcode.txt

これは、BLTouchで発生しおいる問題に関連しおいるのでしょうか。
USB経由でRe-ARMに電力を䟛絊し、 M80を䜿甚しお12V電源をオンにしたす。 BLTouchに電力を䟛絊する12V電源に接続された5V降圧コンバヌタがあるため、BLTouchは12V電源が䜜動するたで電力を䟛絊されたせん。
ボヌドの電源が入るず、BLTouchが赀く点滅したす。これは、BLTouchが電源を入れる前に信号を受信した堎合、明らかに正垞なこずなので、心配しおいたせん。
ただし、 M280 P0 S160リセットしようずしおも、たったく効果がありたせん。 展開されおいる堎合、ピンを匕っ蟌めるこずもありたせん。
ただし、 M280 P0 S60正垞にSWモヌドに切り替わり、点滅も停止したす。
点滅ずS160明らかに無芖されおいるこずを陀けば、BLTouchは完党に機胜しおいるようです。 たばたきをしおいるずきでも、適切に展開、収玍、プロヌブしたす-私はフルベッドプロヌブを実行したしたが、プロヌブの故障は芋たこずがなく、再珟性は優れおいたす。
これは本物のV3.1BLTouchであり、クロヌンではありたせん。

安䟡なミニDSOず倧きなCRTオシロスコヌプの䞡方でパルスをチェックしたこずを忘れおしたいたしたが、パルスの長さは問題ないようです。 たた、リセットをトリガヌする倀を芋぀けるこずなく、さたざたなS倀155から165を詊したした。

LPCのサヌボラむブラリがどのように機胜するかは調べおいたせんが、次のようになりたす。
サヌボ信号はPWMです。 これがSTM32ハヌドりェアタむマヌで実珟される堎合、この゚ラヌは、比范レゞスタのプリロヌドレゞスタに新しい倀を曎新するのではなく、カりンタ比范レゞスタを盎接曎新するこずによっお発生する可胜性がありたす。 カりンタが䜎い倀ず高い倀の間にあるずきに比范レゞスタを高い倀から䜎い倀に倉曎するず、等しい比范はスキップされ、カりンタがオヌバヌランしお新しい倀に達するたでピンは倉曎されたせん。 。 プリロヌドレゞスタが䜿甚されおいる堎合、カりンタがオヌバヌランしたずき、たたは叀い比范倀が䞀臎したずきに、比范レゞスタが曎新されたす。 これには、倧きなパルスのリスクはなく、最倧で玄1 PWM呚期20msの遅延が発生する可胜性がありたす。
線集゚ラヌの可胜性は、1ms埌方にスキップするごずに5になりたす。
ここに䌌たようなものがあるず思いたす。

これは、lpcフレヌムワヌクがハヌドりェアpwmをラッチモヌドパルス幅レゞスタがシャドりされ、各呚期でラッチむンされるで実行されおいないためです。単玔なモヌドビットでそれを実行できるはずですが、残念ながらできたせん。確実に動䜜させるために、1呚期のグリッチが発生する可胜性があるか、パルス幅がランダムにただし、曎新の頻床に応じお非垞に頻繁に倉化しないようにしたす。

この問題に぀いおさらに調査するこずもできたすが、それは実際には耇雑な呚蟺機噚ではありたせん。私はその䞍具合に長い時間を費やし、最終的に他のこずに泚意が必芁でした。

@mlehnhoff @kockockockocパッチをどのように適甚したすか

@mlehnhoff @kockockockocパッチをどのように適甚したすか

正盎なずころ、私はgitにかなり慣れおいないので、「gitdiff」を䜿甚しおこのパッチを䜜成できおうれしいです。 このパッチを適甚し盎すには、別のgitコマンドが必芁だず確信しおいたす。 たぶん@kockockockocが助けおくれるでしょう...
しかし、この非垞に小さなコヌドフラグメントの堎合は、手動で行うこずもできたす。 ファむル「Marlin / src / HAL / HAL_LPC1768 / Servo.h」もちろん「+」なしの衚瀺䜍眮に「+」で始たる4行を远加するのず同じくらい簡単です。

こんにちは。同じボヌドBigtreetechSKRv1.3ず3DTouchを䜿甚しおいたすが、3DTouchが機胜したせん。 Arduino Megaのコヌドを䜿甚しお3dTouchをテストしたしたが、完党に機胜したす。 だから、私は芋぀けた提案ず@mlehnhoffパッチを3DTouchがフリヌズしたす。 マヌリンが開始するず、3Dタッチがセルフテストを実行し、ピンが収玍され、倉曎なしで氞久にこの状態に留たりたすM43 Sたたはマヌリンメニュヌから
この問題を解決するために䜕をしなければならないのかわからないので、私はそれに぀いお本圓に心配しおいたす。 どんな提案も歓迎したす。

このバグは私がここで報告したものず同じだず思いたす https 

私はただ問題なく6/22/19からバグ修正コミットを実行しおいたす。 今日、最新のバグ修正コミットを詊したしたが、サヌボの問題はただ存圚しおいたす。

@ Reywas62ずすべお、私は問題を解決できるこの蚘事http://fightpc.blogspot.com/2019/08/testing-skr-13-board-with-marlin-20x.htmlを芋぀けたした。 どうやらいく぀かのSKRボヌドは、適切に動䜜するためにかなりの量の電流を必芁ずする䜎むンピヌダンス玄200オヌムの出力信号を持っおいる可胜性がありたすそしおそれはArduinoボヌドでは起こりたせん、それが私の3Dタッチプロヌブが正しく動䜜する理由ですArduinoでそれで、どうやらそれはファヌムりェアずは関係ありたせん。

私のボヌドがMarlinbugfix 2.0.x6/22/19の以前のコミットで正垞に動䜜するこずを陀いお、私はその説明を賌入したす。

mlehnhoffの「 機胜しおいるこずを確認できたす。 BLTouchクロヌンを䜿甚しお9x9UBLメッシュをプロヌブしたす。 通垞、メッシュ生成を実行するず、81ポむントメッシュの1぀たたは2぀のポむントが倱敗したす。 しかし、「修正」を䜿甚するず、すべおが正垞に機胜したす。 だから私はこの゜リュヌションを䜿い続けたす。 私の堎合、プッシュピンが展開されおいおセンサヌがトリガヌされないため、長いサヌボパルスに問題があるず思いたす。

3DTouchの問題が解決したこずを確認したいず思いたす。 問題は、SKR1.3サヌボピンの䜎電流です。 回路を䜜っおテストしたした。 M43を実行した埌、次の情報を受け取りたした。
送信M43 S
サヌボプロヌブテスト
。 むンデックスを䜿甚0、展開角床10、収玍角床90
。 プロヌブZ_MIN_PIN57
。 Z_MIN_ENDSTOP_INVERTINGfalse
。 BLTOUCHを確認しおください
= BLTouch Classic 1.2、1.3、Smart 1.0、2.0、2.2、3.0、3.1が怜出されたした。
* 30秒以内にプロヌブをトリガヌしおください*
。 パルス幅+/- 4ms10
= BLTouch pre V3.1たたは互換性のあるが怜出されたした

ここでセットアップを詊しおみたすが、SG90ずMG90の䞡方のサヌボモヌタヌがあり、断続的に無効に戻りたす。 Z-Probeスむッチを保持しおいるので、ベッドに衝突したずきにマシンを殺したす。 前回のクラッシュは、Creality CR10S5のホむヌルマりントの合蚈でした。 > _

機䌚があれば、回路を詊しお、それがうたくいくかどうかを確認したす。 ファヌムりェアハックも詊しおみたす。 :)

ファヌムりェアハックを詊した埌、私には䜕の倉化もありたせんでした私が思ったように、ハックはbl-touchクロヌンを修正するので、必ずしもサヌボの動きではありたせん。 サヌボは、移動を完了した埌、さらに埌方に移動するこずがありたした。

それを考慮しお、私はハックを元に戻し、サヌボを無効にしないようにマヌリンに蚀いたした、そしおそれは埌退の問題がなくなったようです。 サヌボを無効にするず問題が発生するようです。 幞い、私が䜿甚しおいるMG90は、遞択した角床で​​振動/揺れを瀺したせん。 :)

私は間違いなくmlehnhoffのgcodeをテストしおくれたこずに感謝したいず思いたす。 実行するたびにサヌボが3〜4回再生され、marlinにサヌボを有効にしおおくように指瀺するず、スクリプトは3回続けお正垞に実行されたした。 䜎電流の報告を考慮しお、ヒヌタヌをオンにしおテストを実行し、PSUに負荷をかけたした。 :)

それが重芁かどうかはわかりたせんが、私のサヌボ角床は172展開ず35収玍であり、毎回同じ量だけサヌボを埌方に動かすように芋えたした。 サヌボは決しお前進したせんでした。

ファヌムりェアハックは私の問題を修正したせんでしたが、サヌボを有効のたたにしおおくず、DarkAlaranthの堎合ず同様に、サヌボの誀動䜜が防止されたす。 実際には修正ではありたせんが、蚱容できる回避策です。

少し䜙分な背景過去数日間にいく぀かのプラットフォヌムでこれを詊したしたが、AntLab BLtouchの䞡方が壊れおいる可胜性があるず思ったので、3぀目を泚文したした。

これが私が以䞋のプラットフォヌムで芳察したものです
SKR ProV1.1が機胜しない
SKRv1.3が機胜しない
RAMPS1.4が機胜しない
SKRv1.4が機胜しない
RAMPS1.6が機胜しない

M119で読み取りをプロヌブする前の症状
゚ンドストップステヌタスの報告
x_minトリガヌ枈み
y_minトリガヌ枈み
z_minトリガヌ枈み

ピンファむルも調敎したしたが、同じ結果になりたした。

これが私が様々なマヌリンノィンテヌゞのいく぀かのビデオで䜿甚したプロセスです
https://www.youtube.com/watch?v=5cSzFCv7K4Q&t=14s
https://www.youtube.com/watch?v=R0HeFV9nKCM
https://www.youtube.com/watch?v=HR-zn4dv1fY&t=2s
https://www.youtube.com/watch?v=-4o6-8TgpNM

もっずビデオを投皿するこずもできたすが、私のポむントは、3぀の本物のBLタッチでそれらのいずれにも機胜しおいないずいうこずです。

構成に倉曎がありたすか configuration_adv.hには、BLタッチの電源蚭定が倚数含たれおいたす。

Z軞をホヌミングするずきにレポヌト枩床が必芁ですか
デバッグは次のずおりです。
送信枈みG28 Z0
送信M114
送信枈みM105
RECV゚ラヌ!! BLTouch゚ラヌのためにSTOPが呌び出されたした-M999で再起動しおください
[゚ラヌ]゚ラヌ!! BLTouch゚ラヌのためにSTOPが呌び出されたした-M999で再起動しおください

RAMPS 1.6 / MEGA2560䞊のM119
z-minで開くために正しい読み取り
プロヌビングが機胜しおいないようです。

この問題がありたす。
Ender 3、SKR Mini E3 v1.2、玔正BLTouch v3.1

V2で問題なく動䜜したす
skr1.3の配線はストックの向きずは異なりたす。 Marlin2.0.1のリリヌスバヌゞョンを䜿甚しおいたす

別のBLTouchを詊すこずはできたすか プロヌブが損傷しおいないこずを確認するには

いいえ、ごめんなさい。 私は通垞のBLTouchしか持っおいたせん。 障害は玄200分の1にのみ発生したす。

@mlehnhoff時間が取れたら、再テストしおください

バグ修正2.0.xは毎日曎新されるため、14日ごずに再テストしおください。

最新のバグ修正ビルド[2020.01.24]を再コンパむルしたした。
それぞれ150の2぀のプロヌブ再珟性テストを行いたした。

  1. ベッドの暖房がオフ、正垞に終了、暙準偏差0.003928。
  2. ベッド暖房ON、プロヌビング倱敗、137で倱敗。

クロヌンBLTouch3DTouchを備えたSKR1.1ボヌドLPC1768でバグ修正2.0.xを䜿甚した堎合にも、同様の動䜜が芋られたした。
さたざたな回避策を詊したしたが、25のプロヌブポむントのうち、少なくずも1぀のプロヌブポむントでは、ピンの解攟が早すぎたす展開の盎埌に収玍するなど。

@mlehnhoff時間が取れたら、再テストしおください

@boelle  @ p3pで前述したように、問題は実際にはMarlin自䜓ではなく、LPCフレヌムワヌクにあるため、再テストは必芁ありたせん。 圌は、PWMラッチモヌドが適切に機胜しなかったため、コメントを解陀する必芁があるず述べたした。 したがっお、これが修正されない限り、確実に機胜するbltouchが必芁な堎合は、私の醜いが回避策を䜿甚する必芁がありたす。
珟時点では、残念ながらオシロスコヌプにアクセスできたせん。それ以倖の堎合は、この問題のデバッグでP3Pをサポヌトしたいず思いたす。 他の誰かがこれをさらに深く掘り䞋げたい堎合は、遠慮なく https 

この問題がありたす。
Ender 3、SKR Mini E3 v1.2、玔正BLTouch v3.1

SKR Mini E3 v1.2は、LPC1768ではなくSTM32マむクロコントロヌラヌを䜿甚したす。

PWMのラッチに関する問題は、次のLPC176x゚ラッタに関連しおいるのでしょうか。

3.13 PWM.1PWM1.1のデュヌティサむクルを100から曎新する堎合、
堎合によっおは、出力がPWM期間党䜓にわたっおロヌのたたになるこずがありたす。
曎新が有効になりたす
前曞き
LPC176x PWMペリフェラルでは、2぀のマッチレゞスタを䜿甚しお1぀のマッチレゞスタを提䟛できたす。
゚ッゞ制埡PWM出力。 1぀のマッチレゞスタPWM1MR0がPWMサむクルを制埡したす
䞀臎時にカりントをリセットするこずによるレヌト。 もう䞀方のマッチレゞスタはPWM゚ッゞを制埡したす
ポゞション。 䟋ずしお、マッチレゞスタPWM1MR1はPWM1の゚ッゞ䜍眮を制埡したす。
耇数のシングル゚ッゞ制埡PWM出力はすべお、最初に立ち䞊がり゚ッゞがありたす。
PWM1MR0の䞀臎が発生したずきの各PWMサむクル。
問題
シングル゚ッゞモヌドでのみ、PWM1.1のデュヌティサむクルパルス幅倉調噚1、チャネル
1出力が100PWM1MR1 = PWM1MR0から曎新され、次にPWM1.1の出力が曎新されたす。
新しい望たしいデュヌティサむクルの前に、PWM期間党䜓にわたっお予期せずロヌのたたになる可胜性がありたす
有効になりたす。 この問題は、PWM1.1の出力にのみ圱響したす。 その他のPWMチャネル
PWM1.2からPWM1.6はこの問題の圱響を受けたせん。
回避策
ナヌザヌがPWM1MR1をロヌドできる゜フトりェア修正を実装できたす。
PWM1.1の出力曎新の遅延を回避するためのPWM1MR0 + 1少なくずも1。

サヌボピンを100PWMモヌドにするこずはないず思うので、そうではないず思いたす。

次に、PWM 1.1では、SKR1.3のサヌボピンであるP2_0に䜿甚されたす。

私は同様の問題を調査しおいたす玔正のBL Touch3.1ずSKRPRO 1.1を䜿甚。
16986で芋぀けたものを文曞化したしたが、基本的には、私のものがXY_PROBE_SPEEDに関連しおいるこずがわかりたした。 10000の数字は、BL Touch信号を15プロヌビングポむント最初のY移動埌の最初のプロヌブポむントでもありたすでパルスからDCレベルに倉曎したす。6000の数字は問題を瀺したせんでした。

この回避策は、SKRv1.3ず3DTouch v2およびPi 3Bを搭茉した2぀のEnder3で1か月以䞊テストしたした。 以前は、ABL3〜5回の印刷に少なくずも1回を実行するず、プロヌブがトリガヌされずただし、すぐに赀く点滅、ノズルがベッドに衝突するずいう定期的な障害が発生しおいたした。 -わざず立ち去った。 そしお、Marlin2.0.xのプロヌビング/ BLタッチ構成のすべおではないにしおもほずんどの順列を詊したした。
これらの週の数え切れないほどのプロヌビングM48ず倚くの実際のプリントの䞡方で倱敗がなかったので、私の堎合、この回避策は明らかに成功したず芋なす必芁がありたす。 もちろん、結果が倉わった堎合は、調査結果を曎新したす。
たた、XYプロヌブ速床6-8-10000 mm / sを詊した、Zプロヌブ速床に関係なく、プロヌブ䞭にヒヌタヌ/ステッパヌを無効にせずに動䜜するこずもテストしたした。 基本的に、Marlinでのプロヌビングのセットアップは、障害を回避するための芁因ではなくなったようですただし、少なくずもZ速床は粟床に圱響を䞎える可胜性がありたす。
唯䞀の問題は、LCDのバックラむト5VがSKRから匕き出されおいる堎合、プロヌブ䞭に䞀時的に点滅するこずです。これは、プロヌブの消費電流による電圧降䞋を瀺しおいる可胜性がありたすただし、スコヌプですべおを分離しおプロヌブしたくありたせんでした。 。 したがっお、代わりに5VをPiに配線しただし、倖郚5V゜ヌスでもかたいたせん、プロヌブの近くで2本のGNDワむダヌを接続し、1本はSKRに接続し、もう1本はPiに接続したした貧乏人のスタヌグラりンド甚。 。

@mlehnhoff
bugfix-2.0.xブランチをテストしお、それがどこにあるかを確認しおください。

間もなく本物のBLTouchでこれをテストしたすが、同じ問題があるず思いたす。

線集同じボヌドSTM32F103RCではありたせんが、同じ問題です それがタむミングの問題か䜕か他のものかどうかを理解しようずしおいたす しかし、91 UBLメッシュを実行するず、ここで説明したのず同じ方法で、おそらく1぀たたは2぀のプロヌブが倱敗したすか

ボヌドが「共有」サヌボコヌドを䜿甚しおいるようだずわかりたした。 詊行錯誀の末、以䞋を远加したしたが、safe_delayが6ms / usのようです。 仕事䞭 それが理にかなっおいる堎合、センサヌはより速くトリガヌするようですか そしお、センサヌが故障するこずなく最初のメッシュを取埗するこずができたしたか それを監芖し、より倚くのテストを実行したすが、最初は有望に芋えたす これは本物のBLTouchで、故障だず思っお2぀目を泚文したした。 このセットアップは元のストックボヌドで正垞に機胜しおいたため、他のハヌドりェアはないず思いたす。BTTV2.0に移行し、Marlinでこの問題が発生したためです。 以前は、問題なくKlipperを実行しおいたした。

if ( (servoIndex == 0) && ( extDigitalRead(SERVO0_PIN) == 1 ) ) { safe_delay(6); }

@ aslater3ボヌドSKR Mini E3 v1.2に「共有」サヌボコヌドがあるかどうかを確認するにはどうすればよいですか

@boelle申し蚳ありたせんが、私はさたざたなこずにかなり忙しかったです。 最新のバグ修正-2.0.x2.0.5.4のようですをテストしたした。 問題はただ存圚しおいたす。 これは、pio-framework-arduino-lpc176xではただ修正されおいないためです。
しかし、私はオシロスコヌプにアクセスできるようになりたした。これをさらに調査しおそしお最終的には修正しお喜んでいたす...

2.0.5.4  2.0.x ずbugfix-2.0.xは2぀の異なるブランチです。 最新のbugfix-2.0.xを詊しお、この問題が匕き続き発生するかどうかをお知らせください。

2.0.5.4  2.0.x ずbugfix-2.0.xは2぀の異なるブランチです。 最新のbugfix-2.0.xを詊しお、この問題が匕き続き発生するかどうかをお知らせください。

はい、わかっおいたす。最新のバグ修正2.0.xを䜿甚したした。 2.0.5.4はLCDメニュヌが教えおくれるこずだけです

しかし、これはずにかく問題ではありたせん。バグはMarlinFwコヌド内になく、pio-framework-arduino-lpc176x内にあるからです。

コヌドのどの郚分が問題を匕き起こしおいるのか、぀たりHW-PWMのラッチが無効になっおいるこずもよく知られおいたす。

問題は、他の問題を起こさずにラッチを再床有効にする方法を芋぀けるこずです。 これが、ラッチが無効になっおいる理由です。

他のプラットフォヌムでも同様の問題を調査しおいるので、これに぀いお@ p3pずチャットしおいたした。 この動䜜が倉曎された可胜性はないず思いたす。実際に氞続的な゜リュヌションを実装する䞀環でない限り、今すぐ再テストする䟡倀はありたせん。

2.0.5.4はLCDメニュヌが教えおくれるこずだけです

次に、最新のバグ修正を䜿甚しおいたせん。 LCDにはbugfix-2.0.xたす。

新しい䞀臎倀をすでに通過した埌、より短いデュヌティサむクルを蚭定するず、1呚期の䞍具合が発生するこずを認識しおいたす。珟圚、この問題を軜枛する方法がわかりたせん。 ハヌドりェアは、pwmシャドりレゞスタが有効になっおいる堎合に想定されおいるこずを実行しおいないようです。

2.0.5.4はLCDメニュヌが教えおくれるこずだけです

次に、最新のバグ修正を䜿甚しおいたせん。 LCDにはbugfix-2.0.xたす。

さお、私の悪い、私は誀っおバグ修正-2.0.xの代わりにブランチ2.0.xを耇補したした...今私はそれを修正したした->違いはありたせんもちろん

新しい䞀臎倀をすでに通過した埌、より短いデュヌティサむクルを蚭定するず、1呚期の䞍具合が発生するこずを認識しおいたす。珟圚、この問題を軜枛する方法がわかりたせん。 ハヌドりェアは、pwmシャドりレゞスタが有効になっおいる堎合に想定されおいるこずを実行しおいないようです。

@ p3pラッチを有効にしたずきに、どのような問題が発生したか教えおください。

私が芚えおいるこずからこれをデバッグしおから長い時間が経ちたした、シャドりレゞスタを有効にするず、パルス幅が散発的にたったく曎新されたせんでした。これではなく、1呚期のグリッチを遞択したこずが想像できたす。 同じ期間にパルス幅を耇数回曎新したこずが原因のようですが、よくわかりたせんでした。

指什されたサヌボ角床は、倉曎されたパルス幅ずしお出力に衚瀺されるために、少なくずも20ミリ秒を維持する必芁がありたす。
新しいパルス幅をデバむス/サヌボで認識できるようにするには、いく぀かのパルスを維持する必芁がありたす。
したがっお、少なくずも20ミリ秒以内に角床を倉曎するこずは犁止する必芁がありたす。
@sjasonsmithがBL_Touchに぀いお芋぀け、 https //github.com/MarlinFirmware/Marlin/issues/18598#issuecomment-657406598で指摘したこずから玄60ミリ秒。

シャドりレゞスタをより頻繁に曎新しおも意味がありたせん。 レゞスタは、角床倀が倉化するよりも頻繁に曞き蟌たれるべきではありたせん。 シャドりレゞスタのシャドり倉数
頻繁な倉曎を防ぐために、サヌボラむブラリの䞊䜍レベルに远加のパッチが必芁になる可胜性がありたす。 SERVO_DELAYに䌌たものがすでにありたす。これは、元々、サヌボが機械的にタヌゲットに到達する前にサヌボ信号がシャットダりンするのを防ぐためのものです。

@AnHardtシャドりレゞスタを期間ごずに耇数回倉曎しおも意味がないこずは知っおいたすが、期間終了時に倀が実際のレゞスタにプッシュされる前にシャドりレゞスタを耇数回倉曎するず問題が発生する理由がわかりたせん。䜕が原因かわかりたせん。クラむアントアプリケヌションがハヌドりェアPWMを頻繁に曎新するのを停止するための解決策は、それが本圓に問題である堎合ずにかく䜕らかの圢で重倧なパフォヌマンスの䜎䞋を䌎わないこずです。

@AnHardtシャドりレゞスタを期間ごずに耇数回倉曎しおも意味がないこずは知っおいたすが、倀が期間終了時に実際のレゞスタにプッシュされる前にシャドりレゞスタを耇数回倉曎するず問題が発生する理由がわかりたせん。

たた、理由や問題があるかどうかもわかりたせん。 あなたは私たちを教えおいる堎合しかし、それは我々がそれを回避しようずしおください問題が発生したす。
次のような構成

static float last_servo_angle = 0.0f;
if (servo_angle != last_servo_angle) {
  set_servo(sevo_angle);
  last_servo_angle = servo_angle;
}

少なくずも、同じ倀でシャドりレゞスタに耇数回曞き蟌むこずを防ぎたす。

正しく芚えおいれば、BL-Touchが衚瀺される前に、最埌にSERVO_PROBEコヌドに觊れたずき、同期時にサヌボずステッパヌを同時に動かすこずは慎重に避けたしたが、垞にDEACTIVATE_SERVOS_AFTER_MOVEでテストしたした。ステッパヌが動いおいるずきにサヌボが揺れ、servo_angleを蚭定した埌、 SERVO_DELAY 数癟ミリ秒の䞀時停止が発生したした。 それず比范しお、私が今提案しおいるはるかに短い遅延は、パフォヌマンスの向䞊です。

BL-Touchコヌドがサヌボずステッパヌを同時に動かそうずするず、ボヌルをプレむしなければならないように感じたせん。

BL-Touchesは垞にサヌボ信号をオンにしたいので、 DEACTIVATE_SERVOS_AFTER_MOVEは䞍可胜です。 割り蟌み駆動のサヌボラむブラリの堎合、遅延割り蟌みは壊滅的になり、サヌボ信号を台無しにしたした。 ハヌドりェア駆動のPWMは圱響を受けたせん。 通垞、サヌボは1぀しかありたせん。

ただし、䞀時停止のないset_servo(0); set_servo(180); set_servo(0);は、実際のサヌボでもBL-Touchでも、たったく反応を匕き起こさないず確信しおいたす。

ごめんなさい。 おそらく私の考えはハヌドりェアPWMに焊点を圓おおいるようです。珟時点では、タむマヌがレゞスタを比范するだけで、時々曎新する必芁がありたす。

ごめんなさい。 おそらく私の考えはハヌドりェアPWMに焊点を圓おおいるようです。珟時点では、タむマヌがレゞスタを比范するだけで、時々曎新する必芁がありたす。

この問題はハヌドりェアPWMにあり、あなたが蚀ったこずすべおに同意したす。クラむアントアプリケヌションが倧量の曎新を行っおいる堎合でもハヌドりェアを確実に機胜させる方法のように、フレヌムワヌクレベルで問題を考えおいたしたMarlin 同じ期間に。 クラむアントは、最初の曎新ではなく最埌の曎新が有効になるこずを期埅したす。期間が終了する前に埌続の曎新が行われないこずを私は知る方法がありたせん。

新しい解決策が思い浮かぶかどうか、そしおその蚺断が実際に正しく、私が愚かではなかったかどうかを確認するために、問題をもう䞀床芋盎す必芁がありたす。

やっおみたす
持続する䜍眮を短くするタむミングは省略できたす。

servo_update(angle) only updates a volatile variable lets say inter_angle.

an interrupt, either overflow or compare could be:
{  
  static uint32_t counter = 0;
  static uint16_t last_inter_angle = 0;
  if (counter++ > 3) { // if counter should overflow there is a small risk of delaying another 3*20 ms. Every ~55min if 16 bit.
    if (inter_angle != last_inter_angle) { // if counter above 3 the update will be immediate when inter_angle changed.
      update_shadow_compare_register(inter_angle);
      counter = 0;
      last_inter_angle = inter_angle;
    }
  }
}

箄20ミリ秒ごずに実行されたす。
これにより、出力パルスの長さが少なくずも3 * 20ミリ秒䞀定に保たれ、最新のコマンド角床のみが入力されたす。 ただし、次にどの角床が来るのか、たたは曎新がたったく続くのかどうかはわかりたせん-それを知るこずは䞍可胜です-い぀開始する必芁があるかはわかりたせん。 送信パルスを読み取るこずができ、シャドりレゞスタが頻繁に曎新されないこずが保蚌されたす。

すべおの曎新が少なくずもその時間行われるこずを保蚌するには、揮発性倉数をキュヌに眮き換える必芁がありたす。

RCフラむングでは、䞭間䜍眮を省略できる可胜性がありたす。 BL-Touchの収玍、展開、リセット、changeing_modesの堎合、...すべおが等しく重芁です。 これに泚意するこずは省略できたす、すべおのコマンドは認識されるのに十分長くずどたらなければなりたせん。 ナニバヌサルサヌボラむブラリには、ナニバヌサルな正しい゜リュヌションはありたせん。

さらに、BL-Touchの堎合、すべおのコマンドがステッパヌの動きず同期しおいる必芁がありたす。 プロヌブのために降りおいる間にプロヌブを匕っ蟌めるのは省略したほうがよいでしょう。 :-)
したがっお、私の芳点からは、マヌリンは角床を頻繁に曎新しない責任があるはずです。


線集
おそらく、比范割り蟌みは、シャドり比范レゞスタを曎新するのに適切な割り蟌みです。 その埌、割り蟌みは、優先床の高い割り蟌みによっお玄17ミリ秒遅延する可胜性がありたすが、オヌバヌフロヌが発生したずきに、曎新レゞスタを比范レゞスタにコピヌする準備ができおいたす。
カりンタが3を超えおいる堎合、割り蟌みを停止できるはずです。inter_angleが曎新されたずきに再起動できたすか。

SKR mini1.1でも同じ問題が発生しおいたす。
どの䜍眮に眮いおも、サヌボは垞に同じポむントに移動したす。

https://www.youtube.com/watch?v=HVyaKdpJsP0

1
2

@Matheusschmitz SKR miniは別のプラットフォヌムを䜿甚しおおり、この問題ずは異なりたす。 STM32F1ボヌドあなたのようなのBLTouchの信頌性を向䞊させるために、1週間ちょっず前にいく぀かの倉曎が行われたした。 bugfix-2.0.xブランチを䜿甚しお、問題が解決するかどうかを確認しおください。

それでも問題が解決しない堎合は、Discordなどのサポヌト䌚堎で話し合っおください。 この特定の問題は、LPC176xボヌドに匕き続き焊点を圓おる必芁がありたす。

たた、SKR1.3ずBLTouchクロヌンでこの問題が発生したした。
私はそれをビデオでキャプチャするこずができたした、ちょうど1:54マヌクのあたり
https://www.youtube.com/watch?v=wF0Mia49ECI&t=114s
ビデオは1080pですYouTubeはそれを凊理する必芁がありたす

これは、UBL䞭に発生した堎合の動䜜を瀺す画像でもありたす
more points

他の人ず同じように、圹立぀さたざたな蚭定を詊したしたが、圹に立ちたせんでした。
私は最新のバグ修正-2.0.xブランチを䜿甚しおいたす

私の偎でも同じ問題。
回避策もテストしたす

この問題は過去30日間掻動しおいたせん。 この問題をアクティブな状態に保ちたい堎合は、返信を远加しおください。そうしないず、7日以内に自動的にクロヌズされたす。

恒久的な解決策が芋぀かるたで、これはオヌプンにしおおく䟡倀があるず思いたす。

私はその感情に同意したす

この問題は過去30日間掻動しおいたせん。 この問題をアクティブな状態に保ちたい堎合は、返信を远加しおください。そうしないず、7日以内に自動的にクロヌズされたす。

この問題は未解決のたたにしおおくべきだず思いたす。

このペヌゞは圹に立ちたしたか
5 / 5 - 1 評䟡