USBのAVR

スイッチサイエンスさんから、USB接続のAVRであるAT90USB162のボードのプレゼントを受けました。
(ポストインなのに気づいてなくて発見が遅れました。ごめんなさい(><)。)

まだほとんど触ってないのですが、第一印象は、ちっさい!です。USB plug部分を除いて3cm×1.5cmぐらい。使い勝手の良さそうなボードなのでわくわくしています。

今のところ1つだけ難点があって、USB Type Aジャックに基板が直接刺さるタイプなのですが、基板の厚みが少し足りていなくて、接触不良が起きます。帰ってきたらテープか何か貼って、試してみます。

Excel2003 で UnicodeなCSV

読み込みにちょっと手間取りました。

  1. UTF-8な.csvを関連づけで開く→化ける
  2. UTF-16な.csvを関連づけで開く→化けないが区切られない
  3. UTF-8な.csvをテキスト形式で開く→読み込み条件設定画面が出ず、化ける
  4. UTF-8CSVを.txtにしてテキスト形式で開く→読み込み条件設定画面が出るので、コンマ区切り、UTF-8を指定して読み込み成功

どうも、もっと複雑なようです。↓

http://cs.albis.jp/blogs/ms-18e/archive/2006/08/07/Excel-2003-_6E30_-CSV-_6830_-_8765575BA830F330B330FC30C730A330F330B030_-_6E30A295C24F_.aspx

CORDIC

CORDICでsin/cosを求める方法をちょこっと使ってみようと、お勉強したのでまとめ。

点(x, y)から点(x', y')への角度θの回転+r倍の拡大変換は、
\begin{pmatrix} x' \\ y' \end{pmatrix} = r \begin{pmatrix} cos \theta & sin \theta \\ -sin \theta & cos \theta \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix}
となる。

(x, y)=(1, 0), r=1としてx', y'を計算すると、cos θ=x', sin θ=y'と、sin, cosを同時に求めることが出来る。

角θを
\theta=\sum \limits_k \theta_k
と分解すると、
\begin{pmatrix} x' \\ y' \end{pmatrix} = r \prod \limits_k \begin{pmatrix} cos \theta_k & sin \theta_k \\ -sin \theta_k & cos \theta_k \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix}
となる。

ここで、 \theta_k=arctan 2^{-k}とおくと、
 \begin{pmatrix} cos \theta_k & sin \theta_k \\ -sin \theta_k & cos \theta_k \end{pmatrix} = cos \theta_k \begin{pmatrix} 1 & 2^{-k} \\ -2^{-k} & 1 \end{pmatrix}
となり、上式は
\begin{pmatrix} x' \\ y' \end{pmatrix} = r \prod \limits_k cos \theta_k \prod \limits_k \begin{pmatrix} 1 & 2^{-k} \\ -2^{-k} & 1 \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix}