カテゴリ:arduino, AVR( 80 )

Japanino ArduinoISPで ATtiny13 で 中国製USB CH340 ドライバ (9/6)

arudino 界隈で 中国製の安いやつ(300円前後)がよくamazonで出ているが、ドライバがCH340なので、中国のチップドライバが必要。
なので、正式なドライバにもかかわらず、不安に思っている一般ピーポーがいるが、心配ならWindows10で標準で入っているwinchiphead.com(WCH)社のドライバが同じなのでそちらからダウンロードするといい。Microsoftデジタル署名も入っておりびんぼうでいいのの、CH340Gチップで利用中。

キーワード「CH340G」で検索して見つかるのはいくつかあるが、スイッチサイエンスさんのサイトが良いかも。(zipだし、ダウンロードの際に余計なプログラムをインストールされる事も今のところない。arduinoで有名なSparkFun社のサイトらしい)

Macも64bitもLinuxもあるので特に最新でなくても良いならこれでOK。
まあ最初に見つかるCH340の中国サイトは極めて有名な企業なので、心配する必要もないのだが。

詳しい事はこちらのサイト様で。ずーと下の方にCH340はある。

CH340のドライバのサイト=WCH社である事がわかる。ちゃんとMicrosoft社に認められているのだ(当時と今2017では違うのだ)。
ねむいさんの所の説明を読めばわかるが、ドライバうんぬんより、300円の安いハードには理由がある(内部配線が通電で切れる)ので、せいぜいムダ金にならないよう気を付けたい。


[PR]
by k1segawa | 2017-09-06 14:42 | arduino, AVR | Comments(0)

Arduino IDE と UnoArduSim で ソフトデバッグ - チュートリアル(ピン制御) (9/5)

Arduino のソフト開発で、ハード(回路)に問題があるのか、制御ソフトに問題あるのか切り分けるのに、VSのような高度なデバッグ機能があると変数の値やピンへの入出力が正しく行われているか解かって嬉しいのだが、標準のArduino IDEでは残念ながらそこまでの機能は無い。

で、UnoArduSimというシミュレータソフトがある。

名前からUnoをシミュレートしており限定されるのだが、それはそれでソフトのアルゴリズムが確認できればあとはピン配置やレジスタ置換などで済み、そのマイコン専用の機能以外は一般的なマイコンの機能はデバッグ出来そうな感触がある。

起動すると以下のような感じ。
a0034780_17555100.jpg
左がデバッガのトレース画面で、右がシミュレータ画面。左下は変数のトレースを示す。

詳しい使い方はメニューの[Help][Quick Help]や、よそのサイト様に譲るが、概略としてまず左のトレース画面は "編集画面ではない" 事。シミュレータ画面ではダブルクリックや左右シングルクリックで機能を呼び出すようになっている。

ツールバーはいわゆるIDEのボタンが配置されており、まずはチュートリアルとして以下の方法を示す。

【サンプルスケッチ Blink の実行】
Arduino IDEのサンプルで最初にやるLチカのサンプルスケッチ Blinkを使って基本的な使い方を学ぼう。

まずArduino IDE のどのバージョンでもいいので起動し、[メニュー][スケッチ例][Basic][Blink]でスケッチを表示させる。
a0034780_18044780.jpg
これをUnoArduSimに読み込ませるのだが、すべて選択しコピーする。そしてUnoArduSimの[メニュー][Edit/View]から編集画面を開き、そこにペーストする。
a0034780_18070463.jpg
この画面では対応するカッコや予約語がハイライト表示されているが、これは画面左下の「BOLD HIGHLIGHTING」を押したため。
a0034780_18090971.jpg
その他のボタンで特徴的なのは「コンパイル」「適用」「保存」ボタン。この画面がソースの編集画面なのでここでスケッチの変更を行える。
「保存」してもいいし、「適用」してもいい。適用後はメインメニューで「Save As」保存を忘れない事。ここではコンパイル&適用ボタンを押しメイン画面に戻った様子を示す。
a0034780_18132725.jpg
BlinkはUnoの13ピンに繋がったLEDを点滅させるスケッチで、次のように右上の「LED」の空白の欄に「13」と直接入れてやれば、LEDを接続した事になる(青い吹き出し)。
a0034780_18165617.jpg
もうちょっと詳しく説明すると、LEDのRYGはRed,Yellow,Greenの略でLEDを3色から選べ、丸いラジオボタンは、ピンに電流が通ったら(1になる)光る正論理か、逆に消える負論理かを選択する。たぶんプルダウン(1で光る)かプルアップ(1で消える)で繋いだという事だろう。そしてメニューには基本的な実行とストップ、リセットボタンなどがある。

左のトレース画面にはUnoArduSimが勝手に追加したメイン関数がある。これはArduino IDEでは隠蔽されているが、多少違う(init関数が無い)がほぼ同じ物が実はコンパイルされている。
a0034780_18230113.jpg
左下には変数ledがその値とともに表示されており、ダブルクリックすると以下のように値を変更できる。キャンセルは×ボタン。
a0034780_18291705.jpg
また右画面のピン、例えば13番ピンの値を左クリックすると、デジタル値としてみたピンの値を示すオシロスコープ、右クリックするとアナログ値としてみたピンの値を示すオシロスコープの様子が表示される(前の画面の青い吹き出し)。
a0034780_18325511.jpg
a0034780_18330208.jpg
同じように「SERVO」という欄に「13」と入れてやるとサーボモータに13ピンを繋いだことになり、実行するとサーボモータが回転する。画像は2回LEDを光らせるのと同じ回数実行した様子。
a0034780_18361599.jpg
ピン番号を入れる時次のようなエラーメッセージを表示する事がある。
例えば次に説明する「PUSH」ボタンに13と入れた場合、入力なのにpinMode関数でOUTPUT指定されているため。
a0034780_18420490.jpg
すでに「SPISLV」で使用済みの12を「LED」で12と入れた場合は、ピン番号が重複しているため。
a0034780_18440596.jpg
また「PUSH」はプッシュボタン(タクトスイッチ等)で、latch(ラッチ)というのはボタンを押したままにするのか、手を離すとスイッチOFFにするのかを決める。latchを押すとすぐ下の黒いボタンは手を離しても押したままになる。そしてラジオボタンの上を選択すると、押すとONになり、下は押すとOFFになる。ついでに13番を指定したLEDもRからYに変えて、ラジオボタンは下方向(↓)の正論理にしておこう。
a0034780_18511441.jpg
さて、ここでは青い枠に示すようにEdit/View画面でソースを変更し、PUSHボタンの動きを確かめてみよう。まず以下のように、一度スケッチBlinkを[File][Save As]で保存し、UnoArduSimを終了、再起動しよう。simple.inoという最初のサンプルが表示されるのでそれから青い枠に示すソースを追加する。コンパイルして正しい事を確認するのを忘れないように。
a0034780_18565545.jpg
すると、前の画面の通り実行後、PUSHボタンを押すと13を指定したLEDが黄色く光り、Unoのピンも0から1に変化するのがわかる。基板上の13番ピンのLEDも光っている。


あとは以下のようにスライドスイッチとブザーを示す。クリックでON/OFF、抵抗値1KΩでつながっているらしい。ブザーはtone関数のサンプルスケッチで動くようだ。
a0034780_19100086.jpg
ヘルプにあるような他の部品は[メニュー][Configure][I/O Devices]で、画面で0になっているところを1にすると出現する。
a0034780_19121151.jpg
その他の部品も以下の通り。
a0034780_19132288.jpg
「SERIAL」や「SFTSER」を右クリックするとシリアルモニタが、「SPISLV」「I2CSLV」を右クリックすると送受信バッファの内容が表示される。
a0034780_19163174.jpg
a0034780_19171659.jpg
ちなみに、日本語でぱっと見わからないところはこんな所かな~。あとはヘルプなり、フォーラムなりをのぞくといいかも。
これでソフトが正しくピンのON/OFFをしているか、変数は正しいかをハードをくっつけなくてもデバッグ出来るな~

[PR]
by k1segawa | 2017-09-05 18:36 | arduino, AVR | Comments(0)

Japanino ArduinoISPで ATtiny13 で 100均ブザー (8/14)

100均のキッチンタイマーでちょっと作成しようとしているので、それに付いていたブザーを調べるのにATtiny13でブザーを鳴らしてみる。

ブザーには電子ブザー、圧電ブザーの2つがあって、電子ブザーなら電圧をかけるだけで音が鳴るのに対し、圧電ブザーは矩形波を発生させて音を鳴らしてやらなければならない。
どちらのブザーなのかよくわからなかったので、単三電池を繋いで見たが、接触時のみ雑音のような音が一瞬出るだけで、抵抗が必要なのか電子ブザーでなかったのかわからない。Arduinoのtone関数(IDEに存在するスケッチ例でいうtoneMelody内の関数)で鳴らして鳴るようなら、作成例からも圧電ブザーのような気がする。

ということで、ATtiny13にArduinoを載せるbitDuinoの出番。
ついでに最新のArduino IDE にする。
Arduino 1.8.3に最新のbitDuinoがいつものサイト様にある。

こちらからbitDuino_2017がArduino 1.6.x と 1.8.xに対応しているので、これを説明の通りにDocuments/Arduino/hardwareにコピー。
IDEを再起動すると有効になる。それぞれ設定は以下の通り。ボードマネージャやライブラリインクルードなどは使わない。
a0034780_22422380.png
tone関数もATtiny13に対応したものが、同じページの示すサイト様にある。

ATtiny10とATtiny13の両方に対応しているが、ATtiny10はまだ未完成だがATtiny13にはそのままで対応しているようだ。
ただし、tone関数の第3引数は削除されているようだ。その新たなライブラリは同サイト様の以下のページにある。

そこにある「toneSampleSketch.zip」をダウンロードというリンクからATtiny13のスケッチを取得。
同ページに表示されているソースはATtiny10の物なので今回は無関係。つまりtoneCycleMelody関数、メモリが少ないうんぬんはATtiny10の事なので、ATtiny13はIDEに内蔵のtoneMelodyのスケッチとほぼ同じ。

ダウンロードしたスケッチを開き、回路を組んでNew ATtiny13をセット(8分周のままなので1.2MHzを選んだ)。
抵抗は100均のチップ抵抗を見ると102なので10x10^2=1000Ω=1kΩを。ピンはソースからspk=4よりPB4をブザーのプラスにGNDをブザーのマイナスに。そのどこかに抵抗をはさむ。
コンパイルもそのまま通り書込みもOK。

「最大1024バイトのフラッシュメモリのうち、スケッチが788バイト(76%)を使っています。
最大64バイトのRAMのうち、グローバル変数が25バイト(39%)を使っていて、ローカル変数で39バイト使うことができます。」
メッセージも日本語で凄く親切。

実際鳴らすと音が小さい。100Ωにするとずいぶん大きくなる。きっとキッチンタイマーの省電力対策なのだろう。

これで圧電ブザーという事がわかった。同じようなものは 秋月電子通商のUDB-05LFPN 80円か。ボタン電池LR1130(1.5V)やレギュレータも載って液晶まで付いて凄いコスパだ。

Arduino(Japanino)ライタを使ってるのでbootloaderを使ってないので容量は788バイトで済んでるが、さらに少なくするならArduino IDEの関数を使わず直接ポートをアクセスするようIDE上で書けば削減される(pinModeなど)。この時bitDuinoの関数を使わなければbitDuinoのインストールは関係なくなる。

P.S.
書込み装置:Arduino as ISPならbootloaderは不要だが、Fuseビットを書き換える処理もしているので、9.6MHz(Internal)を選んでブートローダ書込みを実行後にマイコン書込みすれば指定のClockで動作可能。

P.S.2
今回bitDuinoをインストールしているのはATtiny13用のArduino IDE関数(pinMode,tone)がbitDuinoによって置き換えられているからで、今までの1.5.2の環境などではこれらの関数を使わず、その代わり直接ポートやレジスタをアクセスするavr-gccの関数を使用しているのでbitDuinoはインストール不要。正確にはmain関数がinit関数を呼び出しているので、多少のArduino IDE関数を使っている。
avr-gcc関数:avrの標準C/C++関数
Arduino IDE関数:avrの関数に使い勝手が良いようにどんなavr MCUでもソースが共通になるようなラッパー関数
bitDuino:そのラッパー関数をATtiny13/10でも使えるように書き換えたもの

[PR]
by k1segawa | 2017-08-14 22:03 | arduino, AVR | Comments(0)

Japanino ArduinoISPで ATtiny13 で 色々 - 海外の電子工作 (7/28)

ATtiny13をメインに電子工作していたが、特に何か作りたい物がネットを徘徊してもなかったのだが、海外に目を向けると色々あって面白い。
前の記事 Pinterest と 電子工作 (6/17)もそうだが、下記のサイト様はATtiny13のマイコンとしての基本機能をいくつか網羅していてマイコン初心者に便利。

a0034780_17395410.png
Links

というリンクに100個色んなプロジェクトをやってみるというのがあり、ここにATtiny13による「ソフト UART」や「ウォッチドック」、「dance lights with FFT」 など基本から応用がまとまっている。

100個はないがそれでも回路図が簡単で、プログラムもCソースが短くて、簡単にArduino IDEに流用できる。

例えば「ウォッチドック」の「[005] ATtiny13 – blinky with Watchdog Timer」なんかは、
[回路図]
a0034780_17202373.png
[元ソース]
#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>

#define LED_PIN PB0

ISR(WDT_vect)
{
PORTB ^= _BV(LED_PIN); // toggle LED pin
}

int
main(void)
{
/* setup */
DDRB = 0b00000001; // set LED pin as OUTPUT
PORTB = 0b00000000; // set all pins to LOW
// set prescaler to 0.5s and enable Watchdog Timer
wdt_enable(WDTO_500MS);

// enable Watchdog Timer interrupt
WDTCR |= _BV(WDTIE);
sei(); // enable global interrupts

/* loop */
while (1);
}

となるのだが、
/* setup */をsetup()内に移植し、/* loop */がwhile(1);なので単にloop()を呼び出す。それ以外はそのまま記述するだけ。

[Arduino IDE用 新ソース]
#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>

#define LED_PIN PB0

ISR(WDT_vect)
{
PORTB ^= _BV(LED_PIN); // toggle LED pin
}

void setup() {
/* setup */
DDRB = 0b00000001; // set LED pin as OUTPUT
PORTB = 0b00000000; // set all pins to LOW
// set prescaler to 0.5s and enable Watchdog Timer
wdt_enable(WDTO_500MS);

// enable Watchdog Timer interrupt
WDTCR |= _BV(WDTIE);
sei(); // enable global interrupts
}

void loop() {
}


色々まとまってて面白いわー

[相互変換]
Cソース → Arduino IDE ソースは上のような感じで。
Arduino IDE ソース → Cソースは以下の記事のように。


[PR]
by k1segawa | 2017-07-28 17:01 | arduino, AVR | Comments(0)

ブレッドボードを卒業して、エッチング無しで最小限の半田付けで基板を作る (7/16)

ブレッドボードで作った回路を恒久的に使いたい時、振動や錆びによる接触不良を無くすため、ユニバーサル基板やプリント基板で半田付けするが、ユニバーサル基板だとドット間を導線で繋いだり、プリント基板なら半田付けの前に廃棄に困るエッチング液でパターンを腐食させなければならない。

昔100万円であった切削型のCNCが、今なら10万円まで下がってきた。これならエッチングいらずでプリント基板が作れるが、騒音と切り屑の処理が大変。

そこで、ちょっと手軽にサンハヤトのワイヤード・ユニバーサル基板やブレッドボードパターンのユニバーサル基板、銀箔テープ、EジスPenで作成する方法がある。
それぞれサイト様の代表的な画像とリンクを示す(画像の著作権はサイト様にあります)。

ワイヤード・ユニバーサル基板 UB-WRD01 - サンハヤト株式会社
(リューターは滑るので刃の鈍ったカッターで削る)
a0034780_02184902.jpg

秋月電子のユニバーサル基板(ブレッドボードタイプ)
片面ユニバーサル基板(ブレッドボード配線パターンタイプ) Dタイプ(47x36mm) ガラスコンポジット
a0034780_02194053.jpg
銀箔テープ
2010年01月18日 物の無い時代に育った - 第九研究室だより:電子工作
(幅広のままドット型のユニバーサル基板に貼ってカットする)
a0034780_02205691.jpg
プリント回路基板の簡単製作手順
a0034780_02513572.jpg
EジスPenを使ってみる_1/3
(何回か上塗りしすぐに20分ぐらいドライヤーで乾かす)
a0034780_02221475.jpg
それぞれ少しコストはかかるが、部品の半田付け以外に高熱を必要としないので割と手軽に作れる。
簡単な回路なら初心者がブレッドボードを卒業していきなり玄人っぽく半田付けするよりは敷居は低いだろう。

[PR]
by k1segawa | 2017-07-16 02:39 | arduino, AVR | Comments(0)

arduinoによるオシロスコープ4 - arduino基板の スペーサ代わりにホットメルトを使う (7/15)

arduinoやIchigoJam、RaspberryPiなどのむき出し基板は、裏の金属部分が床から少し離れるように「スペーサー」というものを取り付ける。
プラスチックや金属製のものがあるが、長さや値段から買うのを忘れてしまいがち。

そこで、100均で買えるグルーガンの溶かす棒(ホットメルト接着剤)を、切ってくっつける。そしてくっつけるにはグルーガンで表の穴に少しホットメルトをたらしてやればいい。

常温でべたべたする事もなく、しっかりとくっつく。

以下はオシロスコープで使ったびんぼうでいいの、の基板に取り付けた様子。
a0034780_10572653.png
12MHzクリスタルの背が高いのが横向いてるのはご愛敬ということで。
a0034780_10573276.png
a0034780_10573944.png
そこそこ綺麗なんじゃない?
長さも自由だし、値段も100円で何十回もとれるし、全然安い。
また熱してやれば取り外しも簡単。

太いのと、長いと強度が下がる欠点はあるけど、単に床に設置させないためにはこれで十分。

100均使えるわー

[PR]
by k1segawa | 2017-07-15 11:08 | arduino, AVR | Comments(0)

ボードコンピュータの液晶制御が高速処理のピークな理由 (7/11)

arduino や Raspberry Pi などのボードコンピュータが液晶の表示を性能のリトマス試験紙としているのはなぜかわからなかった。
より高性能なCPUにしたりクロック数を上げたりして高精細液晶画面を制御しているのを競っているのが、なぜPCから画像データを液晶へ直接送信せずにわざわざボードコンピュータに送って(または書換可能メモリに保存して)表示させるのか、今の高速なPCならどんな大きいデータでも簡単に液晶に送れてすいすい画像を書き換えられるのだと思っていた。

ところでPCから外部にデータを送信するためには現在はシリアル通信であるUSBやRS-232C、バスであるPCI Express、表示と音声データに特化したHDMIがある。
これらで、ユーザが直接制御出来るのはUSBやRS-232Cであり、それ以外はドライバやOSのライブラリを介して間接制御するしかない。

ボードコンピュータは液晶を制御できるのだから、PCだってUSB2.0や3.1などの高速な通信を使えば軽々液晶を書き換えられる(例えばマスクやグラフィック描画)のではないか。

USBはなかなか難しいので市販のUSB制御ボードを使うとすると、以下のようなものがある。

これのソフト仕様を調べる(ヘルプファイル参照)と、1ビット書き換えに10000回/2500msecぐらいの時間がかかる。8ビット(1バイト)でも10000回/5000msecぐらい。
これはデジタルポートをON/OFFする速度と仮定すると、10000/2.5秒=4000Hz、10000/5秒=2000Hzで書き換え出来る。
USB2.0が480Mbps(1.0が12Mbps)なので、480M/10ビット(8n1)=48Mバイト/sec。プロトコルなので上のON/OFFに変換するとざっくりだが48000000バイト:2000バイトをどうにかできるとして2万4千分の1のデータ効率。

赤外線 搬送波が37kHz程度なのだが、これが上の制御ボードでは全然間に合わない。
でも赤外線のコントロールは昨今のボードコンピュータでは当たり前に出来ている。

USBシリアル変換ケーブルなどを使って、RS-232Cの最大速度115200bpsだと、約1万バイト/sec。8ビット送信できるとして80kHz程度(もう単位とか転送速度とかぐちゃぐちゃだが)は処理できるとしてギリギリ赤外線の制御が出来るかなという所。

USB2.0でハードディスクへのデータ転送が可能になったのだから相当速いのかと思ったが、プロトコル負荷によって赤外線の制御程度がやっとなのか。

PCからUSBで画像データを液晶に直接転送しても4000Hzだと8x8マトリクスLEDのON/OFFでさえも64個のLEDをせいぜい1個当たり4000/64=62.5Hzでしか書き換えられない。秒間62回だ。24fpsが秒間24コマなのに、こっちはLEDをON/OFFするだけにこんなにかかってたら、1コマの画像転送なんてとんでもない。

PCから高精細液晶を制御するのはUSBでは夢物語なのか。USBケーブルのサブモニタは差分データ送信でうまくやってるのかな。

USB2.0 480Mbps=0.48Gbps(ざっくり)
USB3.0 10Gbps
PC Express 3.0 8Gbps
HDMI 2.0 18Gbps

HDMIを直接PCが制御する訳では無くWindowsならDirectXでコマンドをGPUが受け取って膨大なピクセルをCPUコアが書き換えている。

ボードコンピュータが液晶を書き換えられるのは、PCのUSBのプロトコル負荷で通信スピードが上がらないという部分が無いから現実に出来るのであり、ボードコンピュータじゃなければユーザは直接液晶を操作できないのだ。HDMIの転送速度を生かして表示を制御するにはGPUのコマンドをプログラムすればいいが、そこに力を入れるのはちょっと違う気がする。少し前にCUDAとかで流行ったけど。

という事で、PCから外部にデータを高速転送する手段がないため、大量のデータである液晶(表示)書換は、今の所PCからは無理で、そのため液晶を自分でコントロールする気になるためには、ボードコンピュータに制御させるのが手っ取り早いのだ。で、高負荷なのでボードコンピュータはどんどん高性能になって行く。でも痛し痒しでどうしても「ボードコンピュータ」というワンクッションが入ってくる。

ああ、液晶(表示)制御を高精細で極めようとするとPCでは現在のインターフェースでは無理(OSもRTOSにならないと)で、ボードコンピュータでも高性能なちょっと敷居の高い事になってしまうのだ。

やっぱり「表示器」はPC上で行ない、ボードコンピュータはリアルタイムでは表示機能を持たないのが最善手(単体のボードコンピュータはそれはそれで完結していてもいいが)だな。つまりボードコンピュータのネット上での役割はセンサーと物理制御(サーボ出力、リレーON/OFF)だ。

備忘録、備忘録。

すぐボードコンピュータに液晶をつなごうとしてしまうが、単体で完結するもの(ゲームコンソールやなんらかの指標器)を作るとき以外は上の事を思い出して、踏みとどまろう。
まあ、もう128x48のグラフィック液晶買ってきちゃったんだけどね。


[PR]
by k1segawa | 2017-07-11 22:15 | arduino, AVR | Comments(0)

Pinterest と 電子工作 (6/17)

Pinterest という画像によるブックマーク共有SNSサイトがある。
SNSの形態をとっているが、気になった写真をピンでとめてそれを皆で共有・公開するサイトで、同じ興味のある人を繋ぐ感じ。

トップページの検索で、興味のあるキーワードで他の人がピン止めした写真を検索して、自分も共感すればピン止めする。

するとそれ以降トップページでおススメのピンナップが表示される。

これに対して「電子工作」「arduino」「ATtiny」「電気回路」「Raspberry Pi」などと検索すると、

おすすめに電子工作の色々な画像が表示される。

Pinterestのおすすめが秀逸で、ちょっとgoogle検索では出てこないような突飛なケースが発見できて面白い。

google:独自の検索アルゴリズムでページに得点を与え、キーワードと関連付ける
twitter:#ハッシュタグでツイート者が付けるタグで検索する
Pinterest:画像に対してピン止めした人が付けたコメントで検索する

全ての情報を把握するgoogleという勢力に対して別のデータベースを持ち、フラットな検索ルールで情報を提供していて、面白い。
googleではいつも同じになってしまう検索結果が、Pinterestやtwitterではどんどん変化しており、リアルタイムの情報が取り出せるような気が。

新しい事が見つからない時ぜひ。
(自分は日本の電子工作の行き詰まりで使ってる)

google一極の検索世界に風穴が空いた。


[PR]
by k1segawa | 2017-06-17 01:26 | arduino, AVR | Comments(0)

Atmel Visual Studio 7.0 文法チェック OFF (5/1)

上記の件、新しいIDEはコメント内の日本語の一部に下波線がついてとてもウザイ。6.4ではなかった機能だ。
すぐ上で定義している#define や 関数マクロもダメ。文法エラーにも法則性が無いので、日本語化は単にリソースにパッチを当ててるだけなのだろう。

オフにするには次のように[メニュー] [VAssistX] [Enable/Disable Visual Assist]を選んで OFF にする。
a0034780_11235761.png
言語対応が中途半端で、メニューもサブメニューとかまったく日本語化されていない。Visual Studioベースだから言語パックを用意するのは難しくないはず。それともコメント内だけオフに出来るのだろうか。

[PR]
by k1segawa | 2017-05-01 11:26 | arduino, AVR | Comments(0)

Japanino ArduinoISPで ATtiny13 で うんぬん - 前提の変更 (4/29)

今までJapanino + ArduinoISP + ATtiny13であれこれやっていたが、前提条件が間違っていた。

Arduino IDE 018 で Japanino を Arduino ISP ライタ(ハードウェア)にし、ライタ"ソフト"としては avrdude (ver 5.11 - ATtiny13をサポートしている版)を使って、次のような環境で、ATtiny13A に書込みをしていた。

(1) Arduino IDE 1.0.5-r2 で ATtiny13A に スケッチを書き込み
(2) BASCOM-AVR で ATtiny13A に HEXファイル書込み
(3) Atmel Studio 7.0 で ATtiny13A に HEXファイル書込み

ちなみに avrdude は C:\avrdude に配置し、avrdude.conf は バージョン1249「$Id: avrdude.conf.in 1249 2013-10-18 07:59:06Z springob $ -*- text -*-」だ。

で、何を間違っていたかというと、「bitDuino + Arduino IDE 1.0.5-r2 という組み合わせで使っている」という表記だ。

実はbitDuinoをふふふ様や構想100年様のサイト通りにインストールすると、<展開先ディレクトリ>/arduino-1.0.5-r2/hardware/の直下に解凍済みファイルが存在するはずで、それはbitDuinoディレクトリかまたはその内容のはず。
そしてインストール後のArduino IDEメニュー>ツール>マイコンボードの先には"bitDuino13 (internal 9.6MHz clock)"と出るはず。

しかし、私の今のArduino IDEにはそのような表記は無く、単に"ATtiny13 (internal 9.6MHz clock)"となっている。(arduino 1.0.5-r2)

つまり、bitDuino を使っていないのだ。

ぼんくらでごめんなさい。

ずっと bitDuino を使ってるつもりだったのだが、どうやら arduino 1.0.5-r2 は標準で ATtiny13 をサポートしているようだ。
(もしかすると arduino 1.0.x または 1.6 or 1.7 用のATtiny用hardwareをインストールする必要あり)

今までのサイト内での記事は修正が多いのでここで注意しておく。

==========
(ソフト)
ATtiny13 マイコンのスケッチ書込みには、arduino 1.0.5-r2 (arduino 1.0.x の最終バージョン) を使っています。
(ひょっとすると arduino 1.0.x か 1.x 用の hardware のインストールが必要 - インストール後 hardware/attiny/cores が出来る)

(ハード)
Japanino を ライタにする場合 arduino 018 (Japanino のサイトでダウンロード)で行っています。

びんぼうでいいの をライタにする場合 arduino 1.0.5-r2 のブートローダ書込みで行っています。
==========

本当によくわかっていなかった。もしかするとまだ間違っているかもしれない。

きっかけはarduino 1.0.5-r2のanalogReadのソースを参照していた時。__AVR_ATtiny13__ が定義されていないのでおかしいなと思い、ソースのあるディレクトリがhardware/arduino/coresだった。定義されているソースはhardware/attiny/coresの方だった。構想100年サイト様の見直しで、インストールすればhardware/bitDuino/coresになるはずなのに、なぜattinyなのかよく考えてみたら、そもそもインストールに失敗しているという間抜けな結論に達した。

もちろん bitDuino は先達様の素晴らしい構成物です。私の勘違いでその価値が下がる事はない。真面目にインストールして動作しなかったら申し訳ありません。

P.S.
1.0.x または 1.x 用の hardware.zip は色んな方が作ったバージョンがあるので、ダウンロードする際には必要なクロックをサポートしているものを選んで欲しい。
私の hardware/attiny/boards.txt を読むと ATtiny13 用 は

#attiny13-1.name=ATtiny13 (internal 1.2 MHz clock)
:
attiny13-8.name=ATtiny13 (internal 9.6 MHz clock)
:

となっており、内部クロック 9.6MHz のみ arduino IDE メニューに出てくるようになっている。

128kHz や 4.8MHz サポートの hardware.zip もあるので、必要ならそれを。もちろんこれはソフトが「スケッチ」の場合。
BASCOM-AVR や Atmel Studio 7.0 は ハードとしてライタが必要なだけで hardware.zip がどうであろうと関係ない。

また、128kHzはArduino ISPライタでは書込めないようだ。またシリアル15200 bpsより高速の転送速度(PC - Japanino間)はJapaninoのクロックがデフォルトで内蔵クロックだと10%の誤差があるので無理らしい。外部クロック化していたり、arduino/びんぼうでいいの は問題ない。

[PR]
by k1segawa | 2017-04-29 04:24 | arduino, AVR | Comments(0)