PIC16F88x コンフィグレーションビット (HI-TECH C)

9月 14th, 2009 tocmoc

HI-TECH Cで,PIC16F88X系を使うときコンフィグレーションビットに指定できる文字列.のメモ.

//****************************************************************************************
//                    CONFIGURATION BITS PIC16F88X
//****************************************************************************************

// Configuration register 1
/* osc configurations         - EXTCLK, EXTIO, INTCLK, INTIO, EC, ECCLKO, HS, XT, LP*/
/* watchdog Timer WDTEN,  WDTDIS       - enable / disable watchdog timer*/
/* power up timer PWRTEN, PWRTDIS       - enable / disable power up timer*/
/* Master Clear Enable MCLREN, MCLRDIS    - MCLR Enabled & RE3 Disabled , MCLR Disabled & RE3 Enabled*/
/* Code Protection  UNPROTECT, CP        - Do not protect code, Protect Code */   
/* EE Read Protection  DUNPROTECT, CPD - Do not protect code, Protect Code */   
/* Brownout Control BOREN, BORNXSLP, SWBOREN, BORDIS*/
/* Internal External Switch Over Mode IESOEN, IESODIS - enable / disable*/
/* Fail-Safe Clock Monitor Enable FCMEN, FCMDIS       - enable / disable*/
/* Low voltage program enable LVPEN, LVPDIS             - enable / disable*/
/* debug option            DEBUGEN, DEBUGDIS - enable / disable debugger */
// Configuration register 2
/* Brown-out Reset Voltage  BORV21, BORV40   - Volts */
/* Flash Write Protection WP0, WP1, WP2      - Protect block 0, Protect block 1, Protect block 2 */  

//  These are set by the Bootloader
//__CONFIG(HS & WDTDIS & PWRTEN & MCLREN & UNPROTECT &  DUNPROTECT & BOREN & IESODIS & FCMDIS & LVPDIS & DEBUGDIS);
//__CONFIG(BORV40);
 
 

デバイスマネージャへのショートカット

5月 20th, 2009 tocmoc

C:\WINDOWS\system32\devmgmt.msc

を直接指定する

printf

11月 29th, 2008 tocmoc

今までprocessingではC言語のprintfのように便利な出力関数がなくてprintlnめんどくせと思ってたが,JAVAの機能の方にあった.JS2E 5.0,JDK5で実装されてたようなので,ずいぶん前だ.2005年くらいか?

ただ,微妙にCとは書式が違うようなので,注意が必要.
ここが一覧で見れてベンリ.
http://www.ne.jp/asahi/hishidama/home/tech/java/formatter.html

Cと同じように使えるprintfすばらしい!

int a=10;
float b=12345.1234567;
double c=12345.1234567;
String str="abcde";

System.out.printf("%d %05d\n",a, a);
System.out.printf("%f %.3f\n",b, b);
System.out.printf("%f %.8f\n",c, c);
System.out.printf("%s %S\n",str, str);
System.out.printf("%d\n%,8f\n%10s\n",a,b,str);

出力は,

10 00010
12345.123047 12345.123
12345.123047 12345.12304688
abcde ABCDE
10
12,345.123047
     abcde

でもあれ・・・?実数の精度がおかしいような・・・?processingのせい?

動画変換

10月 7th, 2008 tocmoc

150MBまで無料で変換できる.
movからaviに変換とか.
携帯の動画を変換したいときとか,ちょっとしたときに便利.
ファイルをアップロードして,変換されたファイルをダウンロードするカタチ.

http://media-convert.com/ja/

windows Tips

7月 7th, 2008 tocmoc

Alt+ダブルクリック で プロパティを表示

swfmill swfの圧縮・非圧縮

6月 6th, 2008 tocmoc

以前,swfmillで生成したswfが圧縮されてしまうので,
flasmの-xオプションを使って圧縮を非圧縮にする方法を書いたが,

swfmillのXMLのAttributeで圧縮/非圧縮を選択できることが分かった.
(特に,Flash Lite 1.1ではActionScriptのversion 4・非圧縮swfでないと再生できない)

実際には,movieタグでcompressed指定をする.
圧縮したい時にはtrue, 非圧縮にしたいときにはfalseを指定する.

<movie version="4" width="240" height="180" framerate="12" compressed='false'>

error

6月 2nd, 2008 tocmoc

 arduinoでのエラー。

error: expected unqualified-id before  .....

何のエラーかさっぱりわからず悩んだが#define文にセミコロンがついてしまっているだけだった・・・・

patch error

5月 30th, 2008 tocmoc

$ patch -p1 < patchfile


Assetion failed: hunk, file patch.c, line 321
が出るときは,patchfileの改行コードがLFだけになっていたりする.

適当なテキストエディタでCR-LFにするとOK.

arduino — シリアル通信で文字列の受信

5月 28th, 2008 tocmoc

arduinoのIDEでシリアル通信をする場合は,Serial.read()を使うが,送られてきたデータの最初のBYTEしか読めない(0~255までしか使えない).

そこで,255以上の数字を受信するために,数字を文字列で受信して(当然送信側でも文字列として送信する),後で数字に直すという方法を使う.
arduinoはC,C++ベースなので,atoi()が使えば後で数字に直すのも簡単.

arduino側

void setup(){
  Serial.begin(9600);
}

void loop(){
  char str[20]; // 数字(文字列)の受信用配列

  // シリアルからのデータ受信
  recvStr(str);
  int aa = atoi(str);
}

void recvStr(char *buf)
{
  int i = 0;
  char c;
  while (1) {
    if (Serial.available()) {
      c = Serial.read();
      buf[i] = c;
      if (c == '\0') break; // 文字列の終わりは\0で判断
      i++;
    }
  }
  buf[i] = '\0';
}

送信側でproce55ingを使うとすれば,下のコードみたいな感じで送信する.
文字列の終端を表す\0を付け足しているのがミソ.上のarduino側ではこの\0を目印にして文字列の終わりを判断しているので,両側で同じ文字を目印にしておけば大丈夫.
\0じゃなくて\nとかでもOK.

proce55ing側

import processing.serial.*;
Serial port;

void setup()
{
  size(100,100);
  port = new Serial(this, "COM8", 9600);
  port.clear();
}

void draw() {
  int poss;
  poss = 1000; // 255以上の数字
  port.write(str(poss)+"\0");
  poss = -1000; // マイナスでもOK
  port.write(str(poss)+"\0");
}

swfmillで圧縮swfが生成されてしまう

4月 22nd, 2008 tocmoc

Flash Lite 1.1では,圧縮されたswfが表示できない.
swfmillを使ってswfを生成したりすると,圧縮がかかっていたりするので,端末で表示できない.xmlのオプションで指定できるかと思ったが,どうにも分からない.

そこで,flasmを使って逆アセンブルした.flmの結果を見てみると,冒頭にcompressedという記述が見える.

movie 'hoge.swf' compressed // flash 4, total frames: 1, frame rate: 12 fps, 240x240 px
 

ためしにcompressedをエディタで消して,

flasm -a hoge.flm

としてアセンブルしてみると,flash lite 1.1で表示できるようになった.

よくよく見たらflasmには圧縮を解除するオプションがあって

flasm -x hoge.swf

とすれば,swfの圧縮を解除できるようだ.