2017/09/14(木)Arduino optibootのmakeが通らないのを直した(10MHz版を作りたかった)

色々ミスってクリスタル10MHz@3.3VにしてしまったArduino互換機、まずoptibootの10MHz版を作らないといけないのだが、optibootのmakeが通らない。色々調べて漸く…。まずwindowsでやろうとして暗礁に乗り上げてしまって、Webの便りではLinux(MacOS?)の情報が多いことから途中からじゃあ手元のラズパイにArduino IDE入れてやろうということにした。結果、上手く出来たのだがmakefileの不具合が原因だったらしくコレならwindows環境でも出来たかもしれない。ともあれ、手順を残しておくことにする。

まずは、ラズパイにArduinoIDEをインストール
sudo apt-get install arduino
これだけ、これが終わればGUI環境の「プログラミング」に「Arduino IDE」が追加されているはず。起動できればOK、そして次にoptibootは、
cd /usr/share/arduino/hardware/arduino/bootloaders/optiboot
ここにある。ここで
sudo nano Makefile
してatmega328の16000000Lを10000000Lに書き換えただけ、書き換えた場所は2箇所、ほんとにいけるかわかんない、これから試す。
それで書き換えたMakefileを保存したら、
sudo bash omake
でいけるはずがなにやらエラーが出る。ここで躓いていたのだがこれコンパイラ(?)に廃止されたオプションを渡していたかららしい。
Doesn't compile with gcc4.7 or gcc4.8
ここを参考にして
OPTIMIZE = -Os -fno-inline-small-functions -fno-split-wide-types -mshort-calls

OPTIMIZE = -Os -fno-inline-small-functions -fno-split-wide-types -mrelax
に変更する。あとはもう一度
sudo bash omake
すれば出来上がり。

2016/11/23(水)ArduinoのI2C

一周以上の周回遅れでArduinoを触り始めている。

I2C使うときはTWIライブラリも標準で持ってて(Wire.h)かなり便利なのだが、これI2Cのクロック速度はいくらなんだろう、と。検索ではいまいちパッと出てこなかったのらライブラリの中身を直接確認した。中身はtwi.cとtwi.hで.cのほうに記載されてた。
  TWBR = ((F_CPU / TWI_FREQ) - 16) / 2;

  /* twi bit rate formula from atmega128 manual pg 204
  SCL Frequency = CPU Clock Frequency / (16 + (2 * TWBR))
  note: TWBR should be 10 or higher for master mode
  It is 72 for a 16mhz Wiring board with 100kHz TWI */
(Arduino IDE1.6.12より)

atmega128とあるけどatmega328pも同様のはずで、これだとArduino UNO 16MHz標準で100kHzということらしい。もう少し早い400kHzで使いたいところだから、そういうときはコード内のどこかでレジスタ直接いじればいけそうかな。

ともあれここに書いてるよってことの備忘録。

2016/04/22(金)IrfanViewのコマンドライン処理をバッチファイルで

仕事で発送伝票を写真に撮って、送り先にメール添付している。
いつも撮った写真をIrfanViewで開き、サイズ調整・シャープ処理をしてからファイル名を「日付+発送伝票.jpg」にしている。
発送する荷物が少なかった最初は特に気にならなかったが、最近は発送数が多いので面倒くさくなってきた。

そこで、バッチファイルを作成してドラッグ&ドロップで一発で処理できるようにした。

以下が"発送伝票.bat"の中身
@echo on
setlocal

cd /d %~dp0
SET str1=%date:~2,2%-%date:~5,2%-%date:~8,2% 発送伝票.jpg

i_view32.exe %1 /resize=(1024,0) /sharpen=50 /aspectratio /jpgq=70  /convert="%str1%"

endlocal
rem pause
setlocalで変数使用を有効にする(らしい)。
cd XXXでbatファイルがあるパスへ移動する、したがってbatファイルはIrfanViewのフォルダにおいて置く。
SET XXXで変数str1に出力ファイル名を設定する。(例:"16-04-23 発送伝票.jpg")
そして、IrfanViewのコマンドラインで、「リサイズ幅1024、シャープ化 50、アスペクト比保持、jpeg品質 70、変換出力」を行う。

以上で、batファイルのショートカットにjpgファイルをドラッグ&ドロップするだけで発送伝票.jpgの出来上がり。
これで煩雑な処理が一つ減った。

あ、ちなみに複数ファイルをドラッグ&ドロップすると最初のファイルだけ変換されるか、動作おかしくなるか…不明。