「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ
CALENDAR
2014年1月
日
月
火
水
木
金
土
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
前月
翌月
Entry Archive
2025年02月
2025年01月
2024年12月
2024年11月
2024年10月
2024年09月
2024年08月
2024年07月
2024年06月
2024年05月
2024年04月
2024年03月
2024年02月
2024年01月
2023年12月
2023年11月
2023年10月
2023年09月
2023年08月
2023年07月
2023年06月
2023年05月
2023年04月
2023年03月
2023年02月
2023年01月
2022年12月
2022年11月
2022年10月
2022年09月
2022年08月
2022年07月
2022年06月
2022年05月
2022年04月
2022年03月
2022年02月
2022年01月
2021年12月
2021年11月
2021年10月
2021年09月
2021年08月
2021年07月
2021年06月
2021年05月
2021年04月
2021年03月
2021年02月
2021年01月
2020年12月
2020年11月
2020年10月
2020年09月
2020年08月
2020年07月
2020年06月
2020年05月
2020年04月
2020年03月
2020年02月
2020年01月
2019年12月
2019年11月
2019年10月
2019年09月
2019年08月
2019年07月
2019年06月
2019年05月
2019年04月
2019年03月
2019年02月
2019年01月
2018年12月
2018年11月
2018年10月
2018年09月
2018年08月
2018年07月
2018年06月
2018年05月
2018年04月
2018年03月
2018年02月
2018年01月
2017年12月
2017年11月
2017年10月
2017年09月
2017年08月
2017年07月
2017年06月
2017年05月
2017年04月
2017年03月
2017年02月
2017年01月
2016年12月
2016年11月
2016年10月
2016年09月
2016年08月
2016年07月
2016年06月
2016年05月
2016年04月
2016年03月
2016年02月
2016年01月
2015年12月
2015年11月
2015年10月
2015年09月
2015年08月
2015年07月
2015年06月
2015年05月
2015年04月
2015年03月
2015年02月
2015年01月
2014年12月
2014年11月
2014年10月
2014年09月
2014年08月
2014年07月
2014年06月
2014年05月
2014年04月
2014年03月
2014年02月
2014年01月
2013年12月
2013年11月
2013年10月
2013年09月
2013年08月
2013年07月
2013年06月
2013年05月
2013年04月
2013年03月
2013年02月
2013年01月
2012年12月
2012年11月
2012年10月
2012年09月
2012年08月
2012年07月
2012年06月
2012年05月
2012年04月
2012年03月
2012年02月
2012年01月
2011年12月
2011年11月
2011年10月
2011年09月
2011年08月
2011年07月
2011年06月
2011年05月
2011年04月
2011年03月
2011年02月
2011年01月
2010年12月
2010年11月
2010年10月
2010年09月
2010年08月
2010年07月
2010年06月
2010年05月
2010年04月
2010年03月
2010年02月
2010年01月
2009年12月
2009年11月
2009年10月
2009年09月
2009年08月
2009年07月
2009年06月
2009年05月
2009年04月
2009年03月
2009年02月
2009年01月
2008年12月
2008年11月
2008年10月
2008年09月
2008年08月
2008年07月
2008年06月
2008年05月
2008年04月
2008年03月
2008年02月
2008年01月
2007年12月
2007年11月
Recent Entry
こないだのロボット
ロボット行ってきた
動作確認しておいた
こないだのロボット
急ぎでロボット行ってきた
届いた
物色中
スーファミのジャンク品を買った
初詣いってきた
振り返り2024
Recent Comment
nekosan/
JYRUSSやってきたメモ
フルタニアン/
JYRUSSやってきたメモ
nekosan/
JYRUSSやってきたメモ
フルタニアン/
JYRUSSやってきたメモ
nekosan/
こないだのロボット
フルタニアン/
こないだのロボット
nekosan/
こないだのロボット
フルタニアン/
こないだのロボット
nekosan0/
レジ袋ホルダーを考える
フルタニアン/
レジ袋ホルダーを考える
Category
ノンジャンル
(2870)
PIC
(47)
AVR
(341)
Arduino
(448)
Raspberry Pi
(194)
mbed
(41)
ARM
(30)
ESP32
(15)
Android
(10)
OPアンプ
(125)
VHDL
(57)
PSoC
(4)
アナログ回路
(110)
クルマ
(127)
rails
(51)
本
(42)
導電塗料
(3)
Fritzing
(41)
Edison
(2)
FFT
(34)
写真
(158)
MIDI
(24)
その他日記
(11)
Python
(57)
3Dプリンタ
(124)
Bookmark
最初はgoo
goo blogトップ
スタッフブログ
My Profile
ブログID
nekosan0
自己紹介
Search
このブログ内で
ウェブ全て
原因判明
Arduino
/
2014年01月23日
散々オイラを悩ませてきたバグがようやく見つかった。
見つかっちゃえば大した事じゃなかったんだけど、
思い込みが災いしてるから、アタマで考えてもこれは
見つからないよな…
何かというと、演算子の演算順位の勘違い。
long型(正確にはunsigned long型)の、4バイトの
うち上位2バイトを整数部、下位2バイトを小数部と
仮定して、四捨五入をするんだけど、その前の按分
計算とからめて、整数部だけの按分、小数部だけの
按分を計算した後で、小数部からの繰上げ処理を
if文で行ってて、桁あふれが有る場合には
16ビット右シフトして、1を足す
という処理を書いたつもりなのに、実際は
16+1ビット右シフトする
という処理になってたというお話。
割り算をライブラリ処理に任せると遅いから、
当然65536で割ると言えば、右16ビットシフト
となるわけだけど、頭の中では「割り算」でも、
実際の計算は「ビットシフト」。
んで、ビットシフトは加減算よりも優先順位が
低いから、先に16+1が行われちゃう…。
すると計算結果が半分になっちゃうと。
探してみたら、
http://www.6809.net/tenk/html/cgokai/enzanjun.htm
↑ここにも、そういうお話が書いてあった。
言語によっても演算子の優先順位って異なるだろうし、
そういう意味で、オイラいつもこの手の計算はカッコ
をつけて明示する癖をつけてるはずなんだけど、
頭の中で「割り算」って思いこんでると、つい、
足し算より割り算の方が先って信じちゃうんだな。
駄目だな。
んで、プログラムをサクッと修正し、あらためて実行
しなおしてみる。
まず、修正前の実行結果から数値をダンプしてみたもの。
これだけ見てもなんのこっちゃって感じだけど、
色付いたセルがアッチコッチに乱雑になってる
ってところが見れればok。
コイツが、バグ修正後には、
こんな風に、緑色の薄い矢印マークの様に、半音の
なかで「S字」を描いているところがポイント。
ちなみに、この表の見方。
一番上が440Hz、一番下が260Hzで、1Hzごと。色が
変わるごとに半音ずつ低くなっていくというイメージ。
横方向はそれぞれ、-32cent、-16cent、-8cent、-4cent、
-2cent、-1cent、0cent、1cent、2cent、4cent、8cent、
16cent、32centに割りあたってて、各周波数の音を
半音単位の音階に振り分けたときに、その音階からの
ズレ量をAMDFで計算した値。一番小さい値になる
ところが、求めるcent値。
これが各半音単位の中で、綺麗なS字を描いてくれる
のが当初の想定。バッチリ。
音源に使ったDDSファンクションジェネレータが、
1Hz単位でしか発声できないので、どうしても中心
付近が飛び飛びになっちゃうんだけど、仕方ない。
(1centあたり、およそ1/4Hzとかだから)
このあたりをもう少しわかりやすくグラフ化すると、
こんな。
左上から右下に向かって、階段状の濃い青い線は
ラ(440Hz)からド(262Hz)までの各音階。
薄い水色は、入力された周波数が、それらの各音階
から何centズレているかの値。つまり、さっきの
S字を描いている部分。
思ったとおりのグラフが出てきてなにより。
とりあえず、コア処理部分は動くようになった。
まだコードを眺めると、汚いところとか、無駄な
ところとか、さらにはテスト用コードがいっぱい
残ってたりするので、その辺の整理だな。
それにしても、浮動小数を排除したのに、処理速度
は全然期待値以下だなぁ。周波数精度はともかく、
速度だけならFFTの方が速く計算できちゃうんだよ
なぁ、現状は。
まぁ、とりあえず処理が一通り動くようになってきた
ので、改めてArduinoのハード云々でアレコレを
再調査。
調べてみて愕然の事実発覚。
Arduino Uno(R1~R3まで全部)で使われている発振子
は、クリスタルじゃなくてセラロックだった…。
http://search.murata.co.jp/Ceramy/CatalogAction.do?sHinnm=?%C2%A0&sNHinnm=CSTCE16M0V53-R0&sNhin_key=CSTCE16M0V53-R0&sLang=ja
誤差0.5%だって…。
これまでテストで使ってきたのは、秋月製基板を使った
オイラ謹製Arduino互換ボードだから誤差は50ppm程度に
収まってるはずなんだけど、0.5%って…計算してみると
5000ppmくらい。精度が二桁違うな。
ちなみに0.5%って、8centくらい?駄目ジャン。
Duemilanove以前のやつとか、
http://www.switch-science.com/catalog/980/
Seeeduino V3.0みたいな互換基板なら、クリスタル
が搭載されてる。Seeeduinoの互換基板、結構良いな。
http://jp.techcrunch.com/2014/01/22/20140121smartwatch-keyboard-video-minuum/
スマホとかの日本語入力。「Minuum」って、以前
耳にした気がする
んだけど、こういう風に動画で
入力風景を見てみると、こんなに小さい画面でも、
かなり良い出来だな。
ただ、オイラはスマホとかのタッチパネルで文字を
入力するのがどうしても嫌いなんだよな。理由は
一つ。予測変換を大前提にしたこの手の入力は、
画面をずっと注視することを強制するから。
ガラケーなら、親指の感覚でほぼタッチタイプが
出来るから、画面見ずに入力できるメリット。
(ちなみに、オイラは予測変換オフで使う派)
http://icon.jp/archives/6545
女子大生チップチューナー、TORIENAさん。
ゲームボーイ音源って、てっきり本体からチップを
抜き出して、別のハードで鳴らすものとばかり
思っていたけど、
http://dic.nicovideo.jp/a/little%20sound%20dj
「LSDj」なんていうソフトがあったのか。知らなかった。
おいらにとってゲームボーイは「テトリス」と「魚探」
の専用機だったからなぁ…。
ページに貼ってある音楽再生窓から、早速聴いてみた。
うん。良いテイスト。こんな曲作れるのか。へぇ。
それにしても、美人だし、良いテイストの曲だし、
このインタビュー記事を読むと「のめりこみ具合」
とか、ベース技術の厚みとか、熱さとか伝わって
くる。なにより美人だ。大事なことなので2(略)
http://www.nicovideo.jp/watch/sm3244040
LSDjって、こんな感じなんだな。オイラのころには、
弄れる音源って、MMLくらいしかなかったんだよな。
三菱銀行を名乗る詐欺メールが、オイラのところにも
届いた。どう見ても日本人が書いた文章じゃない
んだよな。お客に向かって「貴様」呼ばわりはねーよ。
一発でバレバレ。もうすこしがんばりましょう。
ちなみに、送信元メールとか、送信先メールとか、
アドレスがメチャメチャアヤシイ。バレバレ。
コメント (
0
)
goo ブログ
ブログの作成・編集
gooおすすめリンク
おすすめブログ
【コメント募集中】オススメの「100均アイテム」は?
@goo_blog
【お知らせ】
ブログを読むだけ。毎月の訪問日数に応じてポイント進呈
【コメント募集中】オススメの「100均アイテム」は?
訪問者数に応じてdポイント最大1,000pt当たる!
dポイントが当たる!無料『毎日くじ』