Arduino互換機 2枚目 [転載禁止](c)2ch.net
>>181
Atmel Studioとか使えるな
大きめのプログラムの時は使う >>180
PlatformIO IDEならデバッグできるのもあるよ
STM32、ESP32ならデバッグできる
AVR関連はデバッグに対応してないみたいだけどね マルツからのトピックスメールでSeeeduinoのXIAOを知り注文してみた
https://www.marutsu.co.jp/pc/i/1631560/
これだけ小さいといろいろ勝手が良くて夢が広がりそう 555でPWM回路組もうかと思ったけど、LGT8F328Pが80円位な事思うと萎える やっすいな Flash8KB SRAM1KB?
あと書き込むのに別途200円位のST-LINKV2てのがあれば、外付け部品無しで動くのかな ぐぐると他にチップコンデンサ100nFと1uFが必要なのか ATMega328上位互換のLGT8F328Pって、AliExpressでメチャメチャ安いな!今更ながらだけどw
Nano互換が150円、Pro mini互換が100円ぐらいで売ってる
調べた限り、そのままArduinoとして使っても特に不具合とかない感じ? STM32F103C8T6ボード
https://www.aliexpress.com/item/4000018885169.html
これ2個で261円送料無料だったわ、1個130円
Flash128kの可能性もある Flash多かったりクロックアップできたりDACついてたりブートローダーおかしかったりとなかなか愉快なFakeチップが乗ってるらしい fakeと言うか普通に別物扱いになってないかな
自分が使ってる店はバリエーション選択でSTM/CKSがあってCKSにすると0.15$安いw 8ビットマイコンに慣れてしまってるから
32bitパワーで何ができるのか想像ができない体になってしまいました long演算のコード量がびっくりするくらい少ないくらいで
Cで書いてたらあまり意識しないよな
ATMega328 16MHz/Flash32k/Ram2k/UART1(PB=2)
Mega2560 16MHz/Flash256k/Ram6k
STM32F103C8T6 72MHz/Flash64k(128k)/Ram20k/UART3
Mega2560と比較しても優位な点は多い
特にRAM20kが魅力、ESP8266やESP32には劣るものの
LCD表示用のダブルバファやオシロ、ロジアナのようなデータサンプリングに威力を発揮しそう 品名のタイトルはSTM32Fの検索でひっかけるためだろうな
ProductInformationにCS32Fと書いてあるくらいだから物はCS32Fだろう ATMega32U4使ってるLeonardo系で安い良さげなのありますか?
USBコントローラー作るのにDa Vinci 32U使ってるんですけど、
以外に作りが良いから組み込むのが勿体ないのと、
複数個作ることになりそうだから、もっと安いの無いかなとw
それと、Da Vinci 32UにArduino Microのブートローダ書き込んでるの見たんですが、
利点は定義ファイル書き換えないで済むとかそういうのだけ? >>213
その安いのというのがまさにMicroなのでは?
どっちもATMega32U4積んでるのでブートローダが共通でも違和感ない 組み込むなら32u4をそのまま買えばいいのでは…? >>216
(Arduino 使いがそんなこと出来るわけないだろ) (Arduino 使いでも生AVRぐらい扱えるだろ。どんだけ下に見てるんだ) Pro microが295円+配送32円
https://www.aliexpress.com/item/32840365436.html
生チップが10個2911円送料無料 @291円
https://www.aliexpress.com/item/32916694199.html
自分でパターン起こして中華PCB業者に発注するより
Pro micro買ったほうがたぶん安くて手間も掛からないと思う
安くしたいだけならv-USBで80円のSTMや120円のmega168使うとか
AVRじゃなくて51だけど1個40円のCH552Gという手もある USB使うの? 使わないで本気で安くしたいのに32u4使うというのは無いだろ 生産量にもよるだろ
100個とか1千個作るならともかく、
数個しか作らないなら数千円しか変わらない
開発環境や移植作業の手間考えると割りに合わない
趣味や学習用ってなら話は別 皆さんありがとうございます。
>>217
>>218
出来んことは無いと思うけど、さっさと形にしたいので…
>>219
良さげですね。
>>220>>221
多分10個も作らないから大丈夫かなあと。
電子工作自体にハマったらまた別ですけど。
正直言うと生AVRにはちょっと憧れてる。 俺はプリント基板を外注するときにせっかくやし見た目スマートにしたくてIC単体で置いたわ 変換ボードに乗せるなら別にpromicroでもよくね?マイコン単体で使うのは小型化メリットでしょ
ATtinyの3217とか4mm角で24ピンあってUSB以外32u4より圧倒的に内蔵が高性能でdigikey価格で32u4の1/4の値段だぜ
https://www.electronics-lab.com/wp-content/uploads/2019/09/attinys.jpg
ちゃんとArduinoとして使えるコアもあるよ
https://github.com/SpenceKonde/megaTinyCore
外部クリスタルなしで20MHzで動く Tiny1614で小型なNANO作ってみたかったけど
Aliで売ってないから浮気してしまった PCB起こすならIC単体置き必須、見栄えが全く違う!
ユニバーサルで一個作るなら安いボードをソケットに挿すけど IC単体置きってのはソケットなしでってことかw
当たり前すぎて、MPU単騎かと思ったわ
OSCやパスコンくらい乗せればいいのにと 単体ってそういうことか
俺も基板にポツンとicが1つだけ置かれてるの想像して?ってなってたわ LGT8F328P-LQFP32 のPro miniタイプ、ALI見ても大分前から取扱店が全然無いけど
コロナの影響で生産が止まってたりするのかね 自分はほったらかしにしてたLGT8F328P SSOP-20のPro miniタイプ使ってみたけどいろいろめんどくさいことに引っかかってようやくLチカができた 上の方でLGT8F328P SSOP-20は合計で100mAくらい流せるって書いてあったから
小さいモーターとか電磁石とかで使ってみてる 今のところ壊れてない LGT8F328Pの亜種AVGA328Pなんだけど
周波数カウンター作ったら44.1kが44k、192kが193kになった
プログラムのミスかと色々悩んだ末、ATMega328でやってみると正常にカウントした
あとLowレベルで0.3-0.7Vの出力があってFETスイッチング繋ぐとONになりっぱなしで既存回路が使えない
I2Cは追加パッチで動くようになったが、SPIもwireでエラー吐いて使えなかった。
色々問題があったんだけど、LGT8F328Pは大丈夫なの? >>236
いろいろ問題ありそうですね。労力とコストを天秤にかけたら考えものですね >>236
今ちょうどLGT8F328で遊んでるところだから簡単にできそうなら検証してみようか?
ただ、SSOP-20のやつでポートは少ない(Max15ポート)、クロックは32M内部CRオシレータ(誤差1%くらい)
SPIやI2Cは使ったことないけどそのうちやってみるつもり
Lレベル電圧が少し高いやつって全部のポート?それとも特定のポートだけかな? LGT8F を随分前に書き込みしたものですけど、
以下のサイト通りにセットアップすると 32MHz も問題なく使える。
ATmegaのレジスタ系意外は、ほぼそのまま動作する。
https://github.com/dbuezas/lgt8fx
ボードマネージャーに追加する奴ね
しかしここでも問題になった Wire.h 関連を使った場合、
(SPIやI2Cを使った LCD や OLED を組み合わせた場合)
外部の電源を使うと正常動作しないことがある。
PC接続時や、それなりのUSBハブ経由だと正常動作する。
それ系をずっと検索しても見つからず、とりあえず以下の方法で解決してる。
USB端子の GND と D+ をショートする。 問題が USBチップの Holtek にありそうだとは突き止めたのですが、
(たまたま Holtek をショートさせてしまって壊れたものは、外部電源で動くw)
ソフトで解決したいものの、PCに接続してると動作するので、デバッグ方法が
無く行き詰まっている所。 >>206到着
FLASHは128k
CH340G_TTLシリアルでブートローダー書きこみ
直接USBに挿してLチカスケッチをアップロードまで問題なし
STLINK持ってないし確認方法もわからないのでCPUTAPIDは未確認
刻印は"CS32F"じゃなくて2個とも"STM32F"だった
https://i.imgur.com/qtyGUJX.jpg >>239
うちのLGT8Fはどうやら16MHzで動いてるようだ
32MHzで動かすにはブートローダも書き換えないとダメなのかな?
それともブートローダは16MHzで動いてスケッチは32MHzで動くっていうことなのかな? >>243
https://github.com/RalphBacon/LGT8F328P-Arduino-Clone-Chip-ATMega328P
ここにベンチマークがある。それ以外の情報は古いので参考にならない。
ボード設定から 1MHz〜32MHz まで設定すると、
動作時間に変化が出る。デフォルトでは 32MHz で動いてるはずなので、
意識して変更しない限り 16MHz にならない。
ちなみにブートローダーは Optiboot5.0 を独自に変更したもので、
個人で書き換えるのは、ほぼ不可能。
Arduino as ISP では駄目で、専用の装置が必要。
Larduino の一部では、2台あれば書き換えできるものもあるみたいだけど、
ATmega とは結線も違う&情報もロシア語しか無いみたい。プログラムも専用が必要。 >>244
ありがとう
boards.txtやライブラリは本家(LogicGreen)のLarduino_HSP_latest.rarから入れたからボードの選択に周波数が出てこなくて
LGT8F328P-LQFP48 MiniEVB
LGT8F328P-LQFP32 MiniEVB
LGT8F328P-SSOP20 MiniEVB
Larduino w/ LGT8F328D
Larduino w/ LGT8F328D-SSOP20
Larduino w/ LGT8F88D-SSOP20
の6つしか選択肢がないのでいつもは3番目か5番目を使ってうごいている(使っているのはSSOP20のProMiniタイプ)
リンク先のを見ていろいろやってみる >>245
LogicGreen の奴だと駄目で、色々とやらないと 32MHz にならないし、
boards.txtをごまかしてクロックを上げるとシリアルが使えなくなる。
今の環境を辞めて >>239 の奴に変更するのをお勧めする。
ベースは LogicGreen そのままで、クロック数の変更やシリアルの
不具合などを細かくまとめた奴になってる。環境も1行追加で
アップデートも自動的に受け取れる。 なるほど、そうなんだ
本家のやつはrarを解凍してライブラリとかをスケッチのフォルダにコピーしてとかだったけどこれはボードマネージャからいけるんだ、しかも選択肢がかなりいろいろあるな
これでしばらく遊べそうだ >>239の方が以前ここで紹介されて、自分もLGT8F328を購入した口です。
ちょうどその時Aruduino Nanoですすめていた自分のプロジェクトが、LGT8F328がぴったりでした。
利点の一つはADCが8bitではなく12bitだったことと、
その他>>239の方法でArduino IDEにLGT8F328の開発環境を追加すると、Visual Studio Codeでもコードがかけ、書き換え可能となったことです。 >>236
>>周波数カウンター作ったら44.1kが44k、192kが193kになった
wavgatでしょ?同じの使ってるけどショップやネットの情報通りに使うと内部RC発振32MHz/2で動作しちゃうから
LGT固有のPMCRレジスタを弄ってクロック源を外部水晶に切り替える必要がある。
>>色々問題があったんだけど、LGT8F328Pは大丈夫なの?
Lowレベルについては分からないけど追加ファイルの出来が悪いのだと思う。
俺はarduino ide使わないでavr-gcc+avr-libcで使ってるけど特に問題ないよ。 こんな感じ
// 外部400K〜32MHz高速晶振発振回路を起動
PMCR = _BV(PMCE);
PMCR = _BV(WCLKS) | _BV(OSCMEN) | _BV(RCKEN) | _BV(RCMEN);
// 安定発振を待つ
_delay_ms(1);
// メインクロックを外部400K〜32MHz高速晶振へ切替
GPIOR0 = PMCR | _BV(CLKSS);
PMCR = _BV(PMCE);
PMCR = GPIOR0;
// ?行几个NOP操作,提高?定性(可?操作)
_NOP(); _NOP(); _NOP(); _NOP(); // 省略できる
// メインクロックの分?参数を1にする
CLKPR = _BV(WCE);
CLKPR = 0;
LGTはドキュメント見てレジスタ弄れる人でないと使いこなせないと思う >>235
誘導負荷が繋げるかどうかは別の話だが、それをやっていいのはHDRレジスタで80mAモードをONにしたPD5,6 PF1,2,4,5だけ
LGT8FX8P_databook_v1.0.4.pdf
の63ページを見てね 互換チップでそんなに苦しむなら普通に純正品買えばいいのにみんなマゾだね
その気持ち大事に AVRと全く同じ様に使おうとすると問題が出るのかも知れないけど普通にLGTの方が高性能だし >>252
前に書いた Larduino の奴がそれ。
実際に LGT8F328P でやると壊れる。
実際は、書き込みエラーが出るんだけど force オプションで
強制すると、認識しない超軽い文鎮になる。電源LEDだけは点灯するけどw 人間は苦労したい生き物なんだよ!
あっさり出来てしまうと面白くない!
苦労してできた時の悦び快楽脳内麻薬を求めているんだよ! ATmega搭載品よりちょっと安く買える時期があったから数枚買ってみたけど最近はたいして価格差無くなったしSTM32Fも結構安いし…
新規には買わないと思うけど前に買ったやつは何らかの形で消費したい >>255
>>実際に LGT8F328P でやると壊れる。
328Pに対応したのは先月の24日なんだけどそれ以降の話?? >>258
お!本当だ。トップページの画像だけで、あぁこれね!って判断してました。
失礼しました。
add lgt8f328p support Apr 24, 2020
となってる。壊れるのは、それ以前の話しで、壊れた奴は数日前に捨てたところ。
今は人柱になる LGT8F が余ってないのですが、試してみる価値はあるかも。
しかし bootloader が 1種類 しか存在しないんだよね。
Optiboot5.0 の改造版で、本家ARM版 Optiboot は 8.0 が最新版。 >>257
それね。STM32 が送料を除けば、同じような値段なんだよね。
メモリ、スピードも段違いなので、ATmega328P を電池駆動したい
とか特殊な場合意外に選択する余地がないのよね。
ESP32 も 500円以下 で買えるしね。 気になったので、分解してきて LGT8F を確保して試してみた。
結果から言うとブートローダー成功、書き込み装置を使ったスケッチの
書き込み共に成功しました。>>258 の指摘に感謝です。
https://imgur.com/XnkqNIX.jpg 連投で申し訳ない。詳細を。。。
書き込み装置は Nano でも LGT8F でも、どちらでも結果 OK です。
16MHz、32MHz 共にアップロードスピードが同じなので、違いは無く
問題ない。
また LarduinoISP の画像にあった 10kΩ抵抗 も入れてみましたが、
あっても無くても安定度などに差異は無かった(無くて良い)。
また私の書き込みにあったブートローダーの種類ですが、
1.15 から 1.18 になりました。変更箇所は不明(まだ何も調べてない)。 ATMegaとかATTiny使ってるけど、これらでほとんど高速な処理はしないので
やっぱメモリサイズが一番ネックかな。アセンブラとか使えないし >>261
GJ!これでoptibootの嫌がらせから解放される。
optiboot勝手にMCUSRをクリアするから俺にとっては迷惑な存在だった。 >>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チカが遅い(目視で分かるぐらい)。