2012年8月30日木曜日

[AVR]AVRを始める(1)

センサーのデータを取得する為に、I/OボードをAVRで作る事にしました。
PICよりAVRの方が、研究室の中で人気らしいです。

まず、AVRを始めるにあたって評価ボードのAtmel社 STK600を使用することにしました。

チップはひとまず、STK600に付いてきたATMEGA2560を用いることにし、開発環境はAtmel Studio 6を使用します。
Atmel StudioはVisual Studioなんですね。

プロジェクトのプロパティでProgrammer(Tool)はSTK600を、DeviceはATmega2560に設定します。

STK600には、USBポートが載っているので簡単にライトできます。シリアルポート無くても良いんですね!

また、LED・タクトスイッチが8個載ってるので、入門用のプログラムを書いてみます。

まず、Hello World的に、LEDの点滅をさせます。PortBピンにLEDを接続しています。

#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
  unsigned char a = 0b00000001;

  DDRB = 0xFF;
  PORTB = 0xFF;

  while(1){
    PORTB = ~a;
    _delay_ms(500);
    PORTB = 0xFF;
    _delay_ms(500);

    if(a != 0b10000000){
      a = a << 1;
    }else{
      a = 0x00000001;
    }
  }
}

次に、タクトスイッチを押下した時対応したLEDを点灯させます。
PortAピンにタクトスイッチを、PortBにLEDを接続します。

#include <avr/io.h>
int main(void)
{
  unsigned char a;
  unsigned char x;
  
  
  DDRB = 0xFF;
  PORTA = 0xFF;
  PORTB = 0xFF;
  
  while(1){
    x = PINA;
    a = 0xFF & x;
    PORTB = a;
  }  
}


無事、LEDの点滅・点灯ができました。
今日はここまで。

Syntax Highlighterが使えない...

2012年6月26日火曜日

[Linux]環境作り

macにOpenSUSEをVirtualBoxでインストール。インストール構成はいつも通りで、テキストベースの最小構成

入れたもの
・Java JDK x64
・Apache commons Tomcat
└Autoconf
└gcc
└make

2012年6月14日木曜日

[Vim]複数行のカット, コピー

2ヶ月のインターンシップが終わってから放置してました
留学生と別れて、卒研出して卒業式に院の入学式...早いですね!


ところで、ちなみに僕は実はemacsより、viが好きです

1. ms カット又はコピー(ヤンク)する開始行をマーク
2. d's でカット. d'y でコピー(ヤンク)
3. p でペースト

知らなかったです。
好き嫌いと言うより、emacsは保存の仕方すら、わかりません。

2012年2月23日木曜日

[Java]月毎の日を得る

何月は何日まであるのかを得たい
絶対スマートな方法があるのに・・・
Calendarとかは使わずに


private int getDay(int year, int month){
  switch(month){
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
      return 31;
    case 4:
    case 6:
    case 9:
    case 11:
      return 30;
    case 2:
      if(checkLeapYear(year))
        return 29;
      else
        return 28;
    default:
      return -1;
  }
}

private boolean checkLeapYear(int year){
  if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
    return true;
  else
    return false;
}


二四むく侍。。

2012年2月20日月曜日

[VBA]新しくXLSファイルを作成/出力を行う


新しくファイルを作成し、内容をコピーする必要があったので。


Sub outDataFile(ByVal fileName As String, ByVal range As Integer)
  Dim row As Integer
  Dim inWks, outWks As Object
  
  Set inWks = ActiveWorkbook
  Set outWks = CreateObject("Excel.Sheet")
  
  For shIdx = 1 To inWks.Worksheets.count
    If shIdx <> 1 Then outWks.Worksheets.Add after:=outWks.Worksheets(shIdx - 1)
    outWks.Worksheets(shIdx).Name = inWks.Worksheets(shIdx).Name
    
    row = 1
    Do
      For col = 1 To range
        outWks.Worksheets(shIdx).Cells(row, col) = inWks.Worksheets(shIdx).Cells(row, col)
      Next col
      
      row = row + 1
    Loop While inWks.Worksheets(shIdx).Cells(row, 1) <> ""
  Next shIdx
  
  outWks.SaveAs fileName
End Sub


ちょっとベンチマークとります

2012年2月14日火曜日

[VBA]文字列<-->数値

Cstr(Integer) : String

Cint(String) : Integer

はい。
バレンタインデー

2012年2月7日火曜日

[Mac]Controlキーのショートカット

control + p : previous
control + n : next
control + b : back
control + f : forward

control + h : Just like BackSpace

control + k : Erase from cursor to end of the line
control + y : ctrl+kで消した文字列を元に戻す

macのcaps lockキーをcontrolキーに置き換える(・ω・)