Open Nobutarou opened 2 months ago
https://forum.microchip.com/s/topic/a5C3l000000McDZEA0/t376969 https://community.infineon.com/t5/%E3%83%8A%E3%83%AC%E3%83%83%E3%82%B8%E3%83%99%E3%83%BC%E3%82%B9%E3%82%A2%E3%83%BC%E3%83%86%E3%82%A3%E3%82%AF%E3%83%AB-KBA/PSoC-4-%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%81%A7%E3%83%95%E3%82%A1%E3%83%BC%E3%83%A0%E3%82%A6%E3%82%A7%E3%82%A2%E3%81%8B%E3%82%89-UART-%E3%81%AE-Tx-%E3%81%A8-Rx-%E3%83%94%E3%83%B3%E3%82%92%E5%88%B6%E5%BE%A1%E3%81%99%E3%82%8B-KBA224950-Community-Translated-JA/ta-p/251055#.
RX だけプルアップとか書いてあるが Arduino は RX -> TX, TX -> RX っていう双方向の通信だから、結局両方とも pull up なのでは?
USB シリアルに PIC16F1455 を使って kit scope で TX, RX (PIC から見て) の様子を見てみた。TX は High が出ている。RX は 1~2.5V くらいをふらふらしていると思ったが、ブートローダは終了してスケッチが走ってるだけだ。
RX (実際は ATMega の TX) を R 1k でプルアップしてみたとろ、ずっと High のままだった。書き込めた。
逆に RX (実際は ATMega の TX) を R 1k でプルダウンしてみた。こちらは書き込み中に High も出てた。ATMegaの TX は output で High, Low は出さないということになる。これも書き込めた。ATMega328P からの通信は全部無視なのであろうか。
TX (実際は ATMega の RX) をプルダウンしてみた。もともと直列で 1kΩが入っているので電圧降下を避けるため 22kΩを入れておいた。書き込める。どうやら PIC 側は High も Low も output するようだ。
逆に TX (実際は ATMega の RX) を R22kΩでプルアップしてみた。書き込める。
ATMega の TX が一番怪しいんだけど、TX が何を出そうが無視してるみたいなので、どうなろうが問題ない気がする。
やはり、書き込めなくなったときに調べないといけない。
atmega の tx はブートローダー実行中、つまり外部リセットから2秒弱の間を見なくてはいけない
適当に Lチカを書きこんでから ATMega の TX を見てみる。Lチカ中は浮いていて、リセット掛けたあとも浮きっぱなしである。つまりブートローダ中は、自分から TX 信号を出さないし、かつ、データ無転送状態を示すための H にもしないことが分かる。
TX を 1kΩでプルアップして書き込むと、書き込み中に H, L は出る。プルダウンしておいても H, L 出る。ただ TX の何も無し状態は H なので、するならプルアップだろう。
ブートローダ実行中に TX が浮いているのが気になるが、これでも書き込めている。
リセットピンも見てみたが DTR によるパルスも 0V に到達していた。
PIC の DTR 側を見ておこうとして一つ発見。kit_scope のプローブを当てると、ASOBoard をリセットしても H に戻らなかったり、4V くらいまでしか戻らないときがある。USB を抜き差ししなおしたら書き込めたし、ちゃんと 0, 5V での L, H も出てた。
おかしいときは DTR を疑うのが良いかもしれない。
また出た。
結局分からない。7の時点でマイコンがちょっと怪しかったのかと思ったが結局は動いた。
今考えているのは、飛び散ったはんだが、変なところで微妙なショートを起こしていたり、残ってしまったフラックスのせいで、ソケットなどで微妙に接触不要をしてたりで、テスターの抵抗チェックでは問題ないんだけど、実は微妙なチャタリングみたいなのが起きてたりしてたのが、こねこねしてるうちに、解消した、みたいな物理的な問題なのかなあと思っている。
RX (ATMega側) - GND 間に C 0.1uF を入れると書き込めない。 TX - GND 間は大丈夫。通信機側からの信号を受けとれなかったということだろう。
UART とか シリアル通信とかで調べていると TX, RX をプルアップしている例がある。R 2k 入れてみたが、書き込みできる。 https://www.ele-lab.com/mcu11.php
書き込めない症状が出たら試してみよう。