読者です 読者をやめる 読者になる 読者になる

伊豆大島ツーリング

日記 ロードバイク

GW が終わって明日からまた仕事です…(挨拶

第2回ツーリング日記です。2回目は 5/2-5/3 の日程で伊豆大島に行きました(伊豆大島も2回目だったりします)。
伊豆大島 2015/05/02-03 | Flickr


行きも帰りも東海汽船の高速船(ジェットフォイル)に乗ります。
伊豆大島には高速船が到着する港が2つ(元町港、岡田港)あり、当日まで分かりません。
また、自転車は輪行状態で 1000 円かかります(片道)。
出航前はチケットを受け取ったり、乗船票に住所などを書く必要があるため、
やや早めに行った方が良いです(だいたい30分前に入れば何とかなりました)。
予約から乗船まで(東海汽船)


初日はお昼過ぎのスタートで、18時までに宿に戻る必要があったため先に三原山へ。
自転車で登れる所まで(御神火茶屋付近)で標高が600m近くまで、一番きつい坂は10%あります。
そこまで行ったら自転車をおいて河口付近まで歩いて行きます。ここもきつい坂があります。
元町港から三原山まで往復30km程度ありました。


2日目は伊豆大島を1周しました。1周(大島一周道路)は44km程度あります。
まわる向きとしては時計回りが良いです。反時計だと登りがきついとのことです。
8:30ごろ元町港付近から出発し、1周まわりきったときには13:30くらいでした。結構ゆっくり
行っても5時間くらいで回れます。休憩含めると時速10km未満なので相当まったり走ってます。
1周走った後まだ時間に余裕があったのでサンセットパームラインコースというコースも走りました。
場所は元町港から大島空港の裏(海岸側)を走るルートで、片道5kmくらいだったとおもいます。
このルートでは海岸近くでダイビングしてる人が結構いました。ダイビングもやってみたいですね。


IMGP7397IMGP7412IMGP7495



> 箱根湯本: 65km
> 伊豆大島: 70km
> しまなみ海道:
> total: ???

GW 前半まででおよそ 115km 程度になりました。残るはしまなみ海道です。
既に走ってきましたのでまた今度紹介しようと思います。

江ノ島、箱根湯本ツーリング

日記

まだ GW は始まってませんが、自転車に乗ってました。
今住んでいる所が八景島の近くで、そこから箱根湯本まで。
だいたい 65km を 3時間半くらいでしょうか。

普段僕は 25~30km/h 程度で走ってるのですが、今回は 30~
35km/h 以上で 20km くらい走ったり、登りもいつもより 5~
10km/h 超のスピードで走った(走らされた?) ので死にそう
になりました。

IMGP7356IMGP7373IMGP7377


もうちょっと鍛えないとあのペースについて行けませんね…。
調べると大腿四頭筋とハムストリングを鍛えれば良いみたで、
だいたいスクワットでいけるみたいです。頑張ります。

> 箱根湯本: 65km
> 伊豆大島:
> しまなみ海道:
> total: ???

僕の GW はまだ始まったばかり…。

VDAC、DMA を試す

電子工作 PSoC

DDS を作ってみたかったので、それの前準備として VDAC, DMA を試してみました。

回路図

DMA を1から設定するのは結構面倒なのですが、DMA Wizard が用意されているので
それを使ってあげればソースコードのテンプレートを作ってくれます。

Wizard で DMA が準備できたあとは、忘れずに VDAC_Start() などを追加します
(忘れて1時間くらいはまりました)。

波形が汚いので実際に DDS 組むときはノイズ対策をしないといけなさそうです。

ソースコード

/* ========================================
 *
 * Copyright YOUR COMPANY, THE YEAR
 * All Rights Reserved
 * UNPUBLISHED, LICENSED SOFTWARE.
 *
 * CONFIDENTIAL AND PROPRIETARY INFORMATION
 * WHICH IS THE PROPERTY OF your company.
 *
 * ========================================
*/
#include <project.h>
#include <math.h>

#define size (1024)
uint8 VDAC_DATA1[size];
uint8 VDAC_DATA2[size];

/* DMA Configuration for DMA_1 */
#define DMA_1_BYTES_PER_BURST 1
#define DMA_1_REQUEST_PER_BURST 1
#define DMA_1_SRC_BASE (CYDEV_SRAM_BASE)
#define DMA_1_DST_BASE (CYDEV_PERIPH_BASE)

void VDAC_Setup()
{
  /* Variable declarations for DMA_1 */
  /* Move these variable declarations to the top of the function */
  uint8 DMA_1_Chan, DMA_2_Chan;
  uint8 DMA_1_TD[2];
  DMA_1_Chan = DMA_1_DmaInitialize(DMA_1_BYTES_PER_BURST, DMA_1_REQUEST_PER_BURST, 
      HI16(DMA_1_SRC_BASE), HI16(DMA_1_DST_BASE));
  DMA_2_Chan = DMA_2_DmaInitialize(DMA_1_BYTES_PER_BURST, DMA_1_REQUEST_PER_BURST, 
      HI16(DMA_1_SRC_BASE), HI16(DMA_1_DST_BASE));
  DMA_1_TD[0] = CyDmaTdAllocate();
  DMA_1_TD[1] = CyDmaTdAllocate();
  CyDmaTdSetConfiguration(DMA_1_TD[0], size, DMA_1_TD[0], TD_INC_SRC_ADR);
  CyDmaTdSetConfiguration(DMA_1_TD[1], size, DMA_1_TD[1], TD_INC_SRC_ADR);
  CyDmaTdSetAddress(DMA_1_TD[0], LO16((uint32)VDAC_DATA1), LO16((uint32)VDAC8_1_Data_PTR));
  CyDmaTdSetAddress(DMA_1_TD[1], LO16((uint32)VDAC_DATA2), LO16((uint32)VDAC8_2_Data_PTR));
  CyDmaChSetInitialTd(DMA_1_Chan, DMA_1_TD[0]);
  CyDmaChSetInitialTd(DMA_2_Chan, DMA_1_TD[1]);
  CyDmaChEnable(DMA_1_Chan, 1);
  CyDmaChEnable(DMA_2_Chan, 1);
  VDAC8_1_Start();
  Opamp_1_Start();
  VDAC8_2_Start();
  Opamp_2_Start();
}

int main()
{
  /* Place your initialization/startup code here (e.g. MyInst_Start()) */
  uint16 i = 0;
  for(i=0; i<size; i++) {
    VDAC_DATA1[i] = (int8)(sin(4*M_PI*i/size)*127) + 127;
    VDAC_DATA2[i] = (int8)(sin(6*M_PI*i/size)*127) + 127;
  }

  VDAC_Setup();
  /* CyGlobalIntEnable; */ /* Uncomment this line to enable global interrupts. */
  for(;;)
  {
    /* Place your application code here. */
  }
}

/* [] END OF FILE */

次は SD Card からデータが読めるようにしたいですね。

PSoC の SPI

電子工作 PSoC

SPI の勉強と言うことで、以前 mbed で使ってた SPI 接続の OLEDPSoC で使ってみました。
http://d.hatena.ne.jp/hijouguchi/20101210/1291973831
なお、今回は OLED にコマンドとデータを投げるだけなので、受信は考えていません。

コンポーネントはこんな感じにしておきます。
MISO は今回使わないので Low に落としておきます(少なくとも Open はダメなので固定します)。
clock は 12MHz までの様です(PSoC5LP の場合)。

サンプルコードはこんな感じです。
ちゃんとデータが送信出来ているかを SPIM_1_ReadStatus() で確認しないとダメみたいです。
SPIM の送信バッファがあふれるのか、ちゃんとデータが送信出来てないことがあります。

#include <project.h>

int main()
{
    /* Place your initialization/startup code here (e.g. MyInst_Start()) */
    SPIM_1_Start();
    /* CyGlobalIntEnable; */ /* Uncomment this line to enable global interrupts. */
    for(;;)
    {
        /* Place your application code here. */
        SPIM_1_WriteTxData(0xFF);
        while(!(SPIM_1_ReadStatus() & SPIM_1_STS_BYTE_COMPLETE)) {}
    }
}

今回は文字を書いてみました。

PSoC5LP

電子工作

めっちゃ放置してたので久しぶりに書きます。
無事就職して8ヶ月くらい経ちました。まれに DOS を触ったりでちょっとストレスです。

今年度に入ってから、部屋が狭いという理由で全くやってなかった電子工作ですが、
部屋を整理してなんとか電子工作ができるくらいのスペースを確保した次第です。

今まで Cortex-Mx 系のマイコンを何個か触っていたのですが、結局 mbed しか
使いこなせず、何か他に良い物がないか調べていたところ、PSoC に M0 と M3 を
載せているシリーズがあると言うことを最近発見して触ってみました。
デジタルブロックやアナログブロックまで結構好きに組む事ができるので、以前から
PSoC は気になっていたのですが、なかなか手を出す機会がありませんでした。
AVR で十分な規模の工作しか行わなかったのと、複数系統の電源が必要なマイコン
手を出していなかったりなどいろいろあります(あとライタを準備したりも)。

とりあえず情報収集も兼ねて、これを買ってサンプルプログラム等を動かしています。
デジタルの方は、Verilog でも記述できて結構面白いです。アナログの方はオペアンプ
でフィルタが組めるのかと勘違いしてて、でもそれが出来ないことが発覚してややショ
ックを受けてます。フィルタは FIR 等デジタルで組む感じのようです。とはいえオペア
ンプ単体のブロックがあるので、抵抗とコンデンサを用意すれば簡単なフィルタは構成
出来るようですが。

今はこんな感じで評価基板を動かしています。実は部屋にはんだごてを準備していなく
て(実家に置いたまま)、ピンヘッダやジャンパを付けることが出来てません。

簡単なサンプルコード等は気が向いたら書いてみようと思います。
今日はこのくらいで。

PENTAX Q7

モノ

PENTAX Q7を買ってみました.

今まで使っていたRICOH CX3がそろそろ古くなってきたので新調したかったのと,CX3が使いこなせなかったので,それの置き換えとして購入しました.


Q7のスペックとしてはセンサーが1/1.7型ですごく小さく正直ミラーレスとしてはどうかなって思っていたのですが,意外と頑張っています(4/3型をちゃんと触ったことが無いのでなんとも言えませんが).
せっかくのレンズ交換式なので,レンズを4本そろえてみました.それぞれ

  • 01 STANDARD PRIME 8.5mm (39mm相当) F1.9
  • 02 STANDARD ZOOM 5-15mm (23-69mm相当) F2.8-4.5
  • 06 TELEPHOTO ZOOM 15-45mm (69-207mm相当) F2.8
  • 03 FISH-EYE 3.2mm (16.5mm相当) F5.6

です.安かったのでPLフィルタも買っちゃってます.
普段は02をつけてます.基本的に風景ばかりなので,ワイド側で23mm相当ある02が最適かなと思てます.
ボケが欲しいときに01の単焦点を,(もっと広角が欲しいときなど)気が向いたら03の魚眼を使う感じでしょうか.今のところ200mm相当のズームが欲しい状況がまだ多くなく,06を使う機会がとても少ないです.

コンデジと比較してしまえば,苦手な暗い所でもフォーカスが当てられるようになった(AFが無理でもMFが使える)事が良いところです.後は,あまりCX3では使いこなせなかったために?ISOが低くてもノイズが結構乗ってしまって残念に思ってたのですが,
Q7ではそう言うノイズが気になるような写真が減ったように感じます(普段はISOを100~800程度で使ってます).
フォーサーズAPS-Cのミラーレスと比較してしまうとまだまだなのでしょうが,サブ機としては結構十分で,特にレンズを含めた重量から考えると十分すぎるほどの使い勝手と良い写真が撮れると思います.


今のところちょこっと気にくわない点は,魚眼レンズのシャッタースピードが2秒までしか設定出来ない所でしょうか.
魚眼で天体写真に挑戦してみようと思ったのですが,2秒では無理なので諦めました.
トイレンズじゃないレンズで魚眼を出して欲しいですね.

Q7で撮った写真はここら辺に置いています.
http://www.flickr.com/photos/hijouguchi/sets/72157635120636441/


※レンズ交換できなくても良いならRICOH GRやSONY DSC-RX100等が良いのかもしれません.
あるいは,普通にフォーサーズ等を使うのと良いかもしれません.
レンズが交換できることと,ズームをレンズのズームリングでやりたかったこと,MFが出来るカメラが
欲しかったので,Q7はそういう所で用件を満たす素晴らしいカメラです.

複数の言語を補完

vim

前回erubyを書いているときにrubyしか補完候補に出てこないって書いていましたが,それを何とかしてみました.
syntax/eruby.vim - hijouguchiの日記

普段補完にはneocomplcacheを使ってるので,それを使った方法で解決しました.
以下の内容でafter/ftplugin/eruby.vimにというファイルを作成しました.

if !exists('g:neocomplcache_same_filetype_lists')
  let g:neocomplcache_same_filetype_lists = {}
endif

let ext2 = expand('%:r:e')

if ext2 == 'v'
  let g:neocomplcache_same_filetype_lists.eruby = 'ruby,verilog'
elseif ext2 == 'gp'
  let g:neocomplcache_same_filetype_lists.eruby = 'ruby,gnuplot'
elseif ext2 == 'sp'
  let g:neocomplcache_same_filetype_lists.eruby = 'ruby,spice'
endif

if empty(g:neocomplcache_same_filetype_lists)
  unlet g:neocomplcache_same_filetype_lists
endif

基本的には:help g:neocomplcache_same_filetype_listsの内容を参考にしています.
最後のempty()の部分は,filetypeが見つからなかったら設定を無かったことにしてます.

とりあえずはhoge.v.erbのようなファイルに対しては,verilogrubyにも補完候補が出てくるようになりました.
出来れば%で始まる行や<% %>の内部はrubyだけの,それ以外はverilogだけの補完候補が出てくれば最高なのですが,
これをやるにはプラグイン自体いじらないといけないような気がするのでやらないことにします.