Arduino互換機 2枚目 [転載禁止](c)2ch.net
>>262
ソース見てみました。
https://github.com/LGTMCU/LarduinoISP/blob/master/swd_drv.[ch]
SWDポートは双方向通信に使われてるから出力時はオープンドレインで出力すべきなのにpush-pull出力しているね。
故障につながるような事はまず無いとは思うけど改良の余地がありそう。 バージョン番号ですが、間違いがありました。
1.5 とか 1.8 は、stk500.c のバージョンのようです。
肝心のブートローダーは、やはり Optiboot5.0 のまま変わらずでした。
>>264-265
Optiboot8.0 との diff を取ろうかと思ってたところでした。
私も色々とカスタマイズしてみます。 >>266
arduinoのLGT対応部分の出来が悪いとは思ってたが
optibootのLGT対応箇所にも一目でおかしいと分かる所がある
例えば疑似EEPROMの読み出し部分
do {
EEARL = address++; <−−インクリメントするタイミングを間違えている
EEARH = address >> 8;
EECR = 0x01;
__asm__ __volatile__ ("nop" ::);
__asm__ __volatile__ ("nop" ::);
putch(EEDR);
} while (--length);
address=0x00ffが0x01ffに化けちゃう。
これ真面目に作ってないな 疑似EEPROM(実体はflash)の書き込み処理の方は1バイト書く度にページ消去とコピー処理が走るモードが使われてる。。。
疑似領域は2ページ交互に使うから例えば1000バイト書くと500回書き換えが発生する
外からeepromに書き込む事は少ないと思うがこれは嫌だなw そういえばLGT8F328のデータシートって電気的特性のページってないよね、
この前リセットのパルス幅と電圧レベルどれくらいかなと思ってみてたんだけどリセットに関する説明ページにさらっと乗ってるだけで詳細が不明だったり…
フラッシュの書き換え保証回数とかは乗ってるんだっけ >>269
pdfにこうある
程序FLASH能保?至少100,000次以上的擦写周期。
これのおかげで少しだけ中国語読めるようになったわ。 >>270
英語版もあるよ。有志による翻訳だけど。 英訳版も見た事あるけど英語どころか国語も苦手だから中国語でも大差無いわw SWDをオープンドレイン化したLarduinoISP使って20ピンバージョンのLGTに書き込みしてみたらちゃんと書けました。
261の報告通りプルアップ抵抗は不要。
あと仕様なのか不具合なのかは分からないけど読み出しをしようとするとフラッシュが消えちゃうっぽい。
https://i.imgur.com/YiWINx4.jpg
ついでにoptiboot-8.0もLGTに移植してみました。珍しく一発で動いて驚いたわ
https://i.imgur.com/vt9cC4j.jpg
ある程度確認したら何らかの形でリリースしようとは思うけど試作版試したい人いますか? LGTボードのデフォルトのクロックは4MHzなんだが(追加ファイルが必須な理由がこれ)
ブートローダ側で16MHzに加速してからユーザープログラムをスタートするようにしてみた。
ボードマネージャにLGTボードを追加しなくても本家のunoとかnanoのボード設定でも大体は動くようになるぞ。
機能によっては互換性が上がるかも。 楽しそうだが持ってないからなあ、ちょっくらポチるか >>273
元の言い出しっぺと言うか、人柱ですけど、8.0 のテスト参加します。
あれから道具箱を探したらピンヘッダさえ付いてない物が 2つ 出てきたので、
とりあえずピンだけ付けましたので、環境は OK です。
SWD もL字ヘッダがもったいないw ので、ピンクリップで環境作りました。
スルーホールテストケーブルを持ってないので。。。
一番のネックと言うか問題点のレジストリ関係のテストプログラムもあります。 どうにも書き込みが不安定でダメっぽいけどとりあえずhexだけあげときます
あと一息なんだけどなぁ
http://www.mediafire.com/file/2foacm3l4xgiwan/lgt.7z/file
中身は
optiboot_lgt8f328p.hex >>261に映っている32ピンタイプのlgt8f328p用
optiboot_lgt8f328ps20.hex >>273の20ピンタイプ用 >>277
どうやらブートローダー書き込み直後の初回書き込みだけは必ず成功するっぽい。
あと電源を入れなおした時も成功率があがる。揮発性の何かが悪さをしてるんだろうな。 早速、試してみます。
私の方でも、同様に Optiboot8.0 のバイナリを作成してみました。
(コンパイル環境が無かったので Debian でやりました)
まだ公開できる程のことを試してないのですが、
31kオーバーのバイナリが動作することは、確認できました。
(元の5.0はサイズ的に無理だった)
よって EEPROM も使えないっぽい(試してない)。 これが成功すれば、ボード定義も追加する必要が無くなりますね。
極端に言うと、ダウンロードした ArduinoIDE の UNO 設定で動作する
ようになります。
そういえばレジストリを直接いじる、電波時計が動作しませんでした(当たり前?)。 安定書き込み出来るようになったよ。1KBのE2PROMにも対応したけどまだ試してない
http://www.mediafire.com/file/pg6pbpxmdrm0j12/new.tar.gz/file
ところでmakeオプションは何を指定してる??
おれは
make target BAUD_RATE=57600 BIGBOOT=1
てな感じでやってるんだけど、何故かBIGBOOT=1を指定しないと正常動作しなくなる >>何故かBIGBOOT=1を指定しないと正常動作しなくなる
bssセクションとバッファ領域がオーバーラップしてたわ。 これでほぼ完成だとおもう。
http://www.mediafire.com/file/5hcni9xafu3ky66/%25E5%25B0%258F%25E6%25B8%2595%25E5%2584%25AA%25E5%25AD%2590%25E6%25AC%25B2%25E5%25BC%25B5%25E3%2582%258A%25E3%2582%25BB%25E3%2583%2583%25E3%2583%2588.tar.gz/file
E2PROMの読み書き試したけど、書き込むと必ず2バイト目と3バイト目が化ける。
多分手元の個体の不良だと思うが可能ならE2PROMの書き込みを試してみて欲しい。
これで10バイト書ける
avrdude -c arduino -P COM名 -b 57600 -p m328p -U eeprom:w:1,2,3,4,5,6,7,8,9,10:m
化けるとこんなエラーがでる
avrdude.exe: verifying ...
avrdude.exe: verification error, first mismatch at byte 0x0002
0x00 != 0x04
avrdude.exe: verification error; content mismatch
ちなみに>>268の問題も書き換え頻度が1/4程度になるようには改良したよ > E2PROMの読み書き試したけど、書き込むと必ず2バイト目と3バイト目が化ける。
> 多分手元の個体の不良だと思うが可能ならE2PROMの書き込みを試してみて欲しい。
optibootそのもののバグだったわ。。。玩具のプログラムとは言えもっと真面目に作って欲しい。
直した完全体をこちらにまとめました。
http://www.mediafire.com/file/twoxm03aac3vehl/%25E5%25B0%258F%25E6%25B8%2595%25E5%2584%25AA%25E5%25AD%2590-8.0LGT.tar.gz/file すっかり出遅れたというか、全ておまかせ状態になってしまいました。
最新版の動作確認ですが、
> optiboot_lgt8f328p_115200.hex(動作未確認)
> 通信速度115200bpsバージョン
が、動作しました。元々の Nano も 8.0 にしていますので、
OldBootloader である 57600bps は、使ってませんので未確認です。
make に関してですが、BIGBOOT 不要で 2kb の hexファイルが作成できてます。
--
05/17/2020 11:12 1,442 optiboot_atmega328.hex
--
make OS=windows ENV=arduino AVR_FREQ=32000000L BAUD_RATE=115200L atmega328
E2PROM を元々使ったプログラムを書いたことが無いので、未確認ですが、
I2C を使った FMラジオ は、プログラムの変更なしで動いてます。 しかし delay() の動作がおかしいようです。
--
void setup(){
pinMode(LED_BUILTIN, OUTPUT);
}
void loop(){
for(int i = 0; i < 20; i++){
digitalWrite(LED_BUILTIN, LOW);
delay(20 - i);
digitalWrite(LED_BUILTIN, HIGH);
delay(i);
}
}
--
ボードを LGT8F と Optiboot で、動作間隔が違います。
未確認ですが、mills() とかが違うのかもしれません。 確認ありがとう。
こちらではボードに「pro mini/16MHz」を指定したときにdelay(1000)が一秒であることは確認出来てるけど何か違うのかな?
>>ボードを LGT8F と Optiboot で
具体的に何をさしてますか? >>288
言葉足らずですみません。
> >>ボードを LGT8F と Optiboot で
> 具体的に何をさしてますか?
書き込み時というか、コンパイル時に ツール->ボード設定 のことです。
ボードマネージャから追加した LGT9F328P だと期待した動き。
ボードマネージャから追加した Optiboot on 32pin だと上記のプログラムが
もっさりというか、単なるLチカが遅い(目視で分かるぐらい)。 >>Optiboot on 32pin
これは何処から入れたのもの??
ボードの選択で素のArduino Nano/UNOを選択したときに期待した速度で動くことを想定して作ったので
一度Arduino Nanoでやってみてね。
それでも明らかに遅い場合はデフォルトの4MHzで動いちゃっている。
その場合はブートローダーの書き込みが出来ていないと思うよ。 ESP8266(ESP-12F)が100円で買えるから、
電池駆動の省電力プロジェクト以外はATMega328系は使わなくなったな
もっともATTinyで事足りるならなおさらだ >>290
Optiboot8.0 をボードマネージャからいれました。
ご指摘の通り、4MHz で動いているようです。
クリーンインストールの Nano/UNO 設定でも結果は同じでした。
Bootloader の書き込みに問題は無いと思われます。
自分のソースで LED を強制的に ON にしたものも反映されている
ので、環境的には、問題ないと思われます(物理的な結線って意味)。
もう少し色々とやってみます。と、考えていたのですが、折角コンパイル
環境を作ったので、micronucleus が 328P 対応したのを移植してみようかと
手を付けてしまいました。HIDデバイスにできれば Tiny85 より
膨大なピン数、莫大なメモリ空間www STM32も転がってるけど。。。
https://github.com/micronucleus/micronucleus >>292
SWC/SWDが端子が引き出されていないWAVGATで試す為にoptiboot界初?wの
ISP不要の自己書き換えバージョンを作ってみました。
書込んだ結果、32ピンLGTが載ったWAVGATでも期待通りの速度で動いたぞ。
論理的にも4MHzになることは考えられないので何かしらの誤解か間違いがあると思うよ。
https://i.imgur.com/DB1qDGM.jpg
自己書き換えと外部水晶に対応したnewバージョン
http://www.mediafire.com/file/vmr1kf9kgjjlmpi/lgtboot.tar.gz/file >>環境を作ったので、micronucleus が 328P 対応したのを移植してみようかと
digisparkのローダーだね。今まさに使ってる25年前のmac用キーボードもdigisparkでusb変換して使ってる。
あとブートローダー処理に関してはatmega328pとlgt328pで共通点は少ないから328Pのコードをベースする意味はないよ。 USBaspを書き換えて古いバスマウスをUSB変換するアダプタにしてみました。
gccとlibcで作ったけどボードの定義をすれはarduinoの代わりにもなりそうだね。
https://i.imgur.com/MYo13mq.jpg >>296
スペシャルクリックがあるんだぜ!AMIGAには AMIGA知ってるとは物知りだね。他にも新品のA500とかC64Cも複数保管してるよ
骨董品としての価値が付くまで持ってるつもり 俺のvic1001はプリントパターンが浮いてミミズ腫れのようになってしまった
もはや電源を入れることすらかなわぬ
ESP32のエミュで我慢するわ 実機に値段は付くだろうけど、優秀なエミュがあるからね。。。
Apple2 のように再販も無いだろうし。
実際に エミュ で LightWave が PC版 より爆速で動く(バージョンが全く違うけどw) >>298 AMIGA2000を持ってたんだよ。当時、パソコンよりゲーム機のほうが高性能なのではと疑問を思っていたんだよ。何が違うんだろうと・・・ よくある Nasno互換機 と同じ CH340 搭載 & MicroUSB(Miniじゃないのが便利)、
328PB だけど、328P として動作。Nano OldBootloader 搭載だけど、Optiboot8.0 に変更可能。
片面実装なので、裏側に実装部品が無い。
今はタイトル通りに送料無料じゃないみたい。
https://ja.aliexpress.com/item/32828478049.html
ちなみに電源LEDは緑(眩しくないタイプ)、D13 と RX/TX 動作 LED は赤。 >>302
miniUSBじゃなくてmicroUSBなのも良いな >>302
それレビューの写真がPBだったから期待して買ったら
328Pが届いた
PBがよかったのに 去年その店で2回かったけど4個全部PBだったよ
PBだったラッキーってコメントしたら消されたw
お店の人はPBよりPのほうが価値があると思ってるぽい 時期によって安く調達できた方を使うから気が付かれたくないとか
328シリーズとは書いてるけど328何なのか書いてないくらいだから LEDの制限抵抗が1kじゃなく4.7kで眩しくなかったり
小型のCH340Eが付いてほんのり省電力だったり割りと良い互換ボードなんだけどね Arduino互換機を秋葉で買える店としてShigezoneはいいね
東京ラジオデパートだから秋月や千石とかにも近いしな Aliは安いけど、通販で面倒だし、すぐに手に入るわけじゃない
都内の住民にとって秋葉で手に入るというのは重要 ALI眺めてるとLOLIN32liteが288円と物凄く安いけど、GNDとかの重複ピン省くだけじゃなく、
素のLOLIN32と比べてGPIO1・3・21、RX・TX・I2C SDAと普通のGPIOも削られてしまってるのね…
マトリクスで他のピンに割り当てれば使えるとしても、何でこんな所削ったかな
ピンが削られて不人気だとしても安すぎるから、まだ何か他の罠、充電コントローラが駄目な奴
だったりするのかな ブートローダとして利用する容量が少ないからプログラムで使える領域が多い
書き込み時の転送速度が2倍(まぁこれはそこまで影響があるわけじゃないけど) boards.txtを見ればわかるがoldもnewもプログラム領域のサイズは同じだ Nano に使われているブートローダーは Optiboot じゃないので、
新バージョンでも転送速度2倍意外の違いはない。
Uno を始めとする多くで使われている Optiboot に変更することで、
転送速度だけじゃなく、容量の増加が行える。
どうも Nano が Uno と同じ構成なのにブートローダーが見捨てられている
感じがあるので、 Optiboot に変更する意味が大きい。
ここの最後にふらっと書かれている。
https://ht-deko.com/arduino/nano.html#03 nano純正新バージョンはoptibootでUNOのものと全く同じものだよ
ヒューズビットと最大スケッチサイズの更新忘れだね
## Arduino Nano w/ ATmega328P
略
nano.menu.cpu.atmega328.bootloader.file=optiboot/optiboot_atmega328.hex ここが
uno.name=Arduino Uno
略
uno.bootloader.file=optiboot/optiboot_atmega328.hex 同一 それともユーザーが混乱しないようにあえて変更しなかったのかもな NanoにUnoのブートローダーを書き込んだほうがメモリ増えるんだよね? 328搭載のnanoとunoのブートローダーは同じ物だよ
違うのはローダーの区画サイズとarduino ideで管理されている最大スケッチサイズ 正規品は持ってないので分からないけど、よく出回ってる CH340+328P の Nano は、
2k のブートローダーが載ってる。0.5k の Optiboot が載ってる Uno とは違う。
それも 115200転送 に対応していない OldBootloader って奴。
Optiboot が載ってない理由がここらに書かれている。
http://nuneno.cocolog-nifty.com/blog/2018/03/arduino-nanoard.html 最新の ArduinoIDE1.8.13 でも Optiboot では無い。
nano.menu.cpu.atmega328old.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex
ここのスレッドで書かれている Nano=Uno=Optiboot ってのは、この記述を見てる
nano.menu.cpu.atmega328.bootloader.file=optiboot/optiboot_atmega328.hex
んだろうけど、中華 Nano の多くは、OldBootloader が載ってるので、Optiboot では無い。
数日前に届いた 328PB 搭載のものも OldBootloader が載ってたし Optiboot が載ってるのを
一つも見たことが無い。 届いたらまずブートローダをOptibootに書き換える。
混在してると面倒だから、これがうちの決まりになってる。 あ、>>327はAliで買った中華Nanoの話です。
正規品は1つも持ってないから知らない。 Arduino IDEに収録されているNanoのbootloaderは明らかにoptibootじゃん
oldバージョンとしてoptibootじゃないbootloaderも収録されてはいるが
それをもってNanoはoptibootではないと強弁するのは詭弁なんだわ
そもそも>>318で新バージョンもoptibootではないと主張したんだから
中華云々も言い訳になってないでしょ >>330
とりあえずアンカー打ってくれ
あんたが何に怒ってるのかわからん 自分以外の全てに怒ってるんだよ
言わせんな恥ずかしい 中華NanoのCH340Gが壊れたらしく、シリアルからスケッチが書き込めない
ICSP経由のUSBaspからは書き込めるけど、
Nanoはデバッグ用に使ってるからシリアルがないと辛い・・・
すっごい大雑把な質問だけど原因分かる人いますw?
https://i.imgur.com/dnZkutc.jpg
https://i.imgur.com/oBpkJG5.jpg >>334
やけに金属粉っぽいものがくっついてるけど何した?
それが現認では? 直そうと思って思ってコンデンサ取って容量測ったり、CH340Gの足をハンダし直したり、色々したw とりあえずもう一度そのコンデンサを外して半田くずっぽいものを全部きれいにしてからコンデンサを再度取り付ける
テスタがあったらコンデンサの両端を測ってショートしてないか見る 特にそのコンデンサの右側に写ってるクリスタルとその周辺が汚れているとうまく発振できなくなって動作しない >>337
だとすると現場荒らされ過ぎで写真から故障原因を見極めるのは無理
新しいの買った方が早いし安いからこれを機に数台はストックしておきなよ
うちなんか無駄に10台はあるわw >>338
>>339
クリスタルは手付かずでなんか怪しいなーと思ってた。もう一回キレイにしてやってみます。ありがとう
>>340
予備買っとくw ありがとう よくあるダイオード焼けじゃない?
URL が貼れないようなので、検索で、arduino nano diode
とりあえずショートさせれば動作確認ぐらいできるかも? あら?抵抗の数が足りない?
と、思って手元の奴を見たら、>>334 と同じ1個だったわ。
>>344 の奴はバージョンが違うだけのようですね。 >>343
おお!神よ!あなたはどこにおられたのですかw!
すごい!ショートさせたら直りましたよ!スケッチも書き込めるしシリアル通信もでけた!
https://i.imgur.com/VUpmjWM.jpg
テスターでダイオードを調べたらご指摘どおりぶっ壊れてた。
何のダイオードか調べたら
>MBR0520ファミリーのダイオードす。電流定格が0.5Aのショットキーバリア整流器またはショットキーパワー整流器を選びます。
らしいので代替品を探してみます。感謝!
https://forum.arduino.cc/index.php?topic=405230.0
https://www.mikrocontroller.net/topic/402242
https://www.arduino.cc/en/uploads/Main/ArduinoNano30Schematic.pdf >>342
たぶん過電圧か過電流か、逆電圧はないかも・・・あるかも・・・でもそんな感じだと思いますw >>334の
>シリアルからスケッチが書き込めない
という書き方からダイード焼けが候補に挙がらないのは当然では?
PC上でCOMが認識されない、とかなら分かるけど >>346
もちろん神じゃないけど、Nanoのダイオードが焼けるのは、あるあるらしい。
(うちでは1個も焼けたことないけど)
何にせよ、原因が特定できて良かったです。
色々なリンク先を見る限り、修理代とNanoの値段。。。幾つか用意するのが
正解に間違いないのは確か。
届いたらOptibootに変更。。。
予備が10個。。。
うちにもピンすら付けてないのが10個以上。。。
みんな道具箱に一杯あるのがフツーなんでしょうねw 自分もProMiniいくつもあるUSB-TTLもFT232、CP2102、CH340、PL2303あたりを一通りそろえて遊んでる ArduinoIDEで使えるものということでうちはこんな感じ
在庫表の更新サボることもあるので多少違うかもしれないけど
---UNO
Arduino UNO R3 ATMega328 16MHz 1
---NANO
Arduino NANO 328 16MHz mini-USB 青 0
Arduino NANO 328 16MHz mini-USB 黒 1
Arduino NANO 328 16MHz microUSB 緑 328PB 3
Arduino NANO 328 16MHz microUSB 緑 328U-PH 1
Arduino AVGA328P 16MHz microUSB 黄 2
---Pro-mini
Arduino Promini328 5V 16MHz 青 2
Arduino Promini328 3.3V 8MHz 青 1
Arduino Promini328 5V 16MHz osc A4中 黒 3
Arduino Promini328 5V 16MHz xtal A4外 黒 3
Arduino Promini328 3.3V 8MHz xtal A4外 黒 1
Arduino Promini168 5V 16MHz xtal A4外 黒 3
---DigiSpark
DigiSpark ATTiny85 USB 3
---chip
A90S2313 DIP20 7
ATTiny13A DIP8化 5
ATTiny13A sop8 3
ATTiny44A DIP14化 11
ATTiny44V DIP14化 3(2つは動作怪しい)
ATMega328U-PH sop32 1
---ESP8266
Wemos D1-mini ESP12F 16pin CH340 2
NodeMcu v3 ESP12E 30pin CH340 1
ESP12F 7
ESP01 8pin 1
---ESP32
ESP32-CAM OV2640 CP2102 16pin 1
ESP32 Development Board 30pin CP2102 1
ESP32 Development Board 34pin CP2102 1
---STM32
STM32F103C8T6 Flash128k 2 何かをするための道具なのに、
その道具自体を揃えることに夢中になる奴いるよな。 ありきたりのこと以外は、たいていの趣味って、それを理解していない人から見ればキモいもの。みんなお互い様なんだし。
それに、たくさんもってる人は、もってない人より比較をすることもできる。
掲示板の価値は、自分とは嗜好や考え方が違う人からお話を聞けることなんだし、排除するような言い方はおかしいよ。 >>360
ならば「排除するような言い方」も趣味なんだから認めろ
お前は頭が足りないからいつも言ってることが中途半端 >>361
>排除するような言い方」も趣味
「排除するような言い方」の趣味を語るスレじゃないしね。 ホビー板にでも建てたらどう?
通じないならスルーするから。 >>362
>たいていの趣味って、
限定せず趣味一般を語り出したのはお前の方でしょ
まず自分のレスをよく読みなよ