ともさんのHP >ものつくり >2次元CCDを使った自作カメラ >天体写真用冷却CCDカメラの製作(CCDの制御 ソフトウエア)
天体写真用冷却CCDカメラの製作(CCDの制御 ソフトウエア)
11の各動作をC言語の関数に直したのが下。実際にこのソフトで動かしたことがないのでたぶんこのままでは動かないと思うけど、それほど間違ってはいないはず。
「何かいてあるのかさっぱりわからない」という方は、C言語の勉強をされることをお勧めします。
/* CCD-TC245駆動用信号を出すための関数集 2003/01/31 端子割り当て P4-5 IAG P4-4 SAG P4-3 SRG3 P4-2 SRG2 P4-1 SRG1 P4-0 TRG 信号はDS0026を通すので反転する。
ストレージエリアクリア動作の信号発送順 *内を247回繰り返す。 1111 1111 FF * 1111 1110 FE * 1110 1110 EE * 1110 0001 E1 * 1111 0001 F1 1111 1111 FF
イメージエリアクリア動作の信号発送順 *内を247回繰り返す。(242か?) 500回でイメージ、ストレージエリアすべてをクリア 1111 1111 FF * 1111 1110 FE * 1110 1110 EE * 1100 0001 C1 * 1101 0001 D1 1111 1111 FF
ストレージエリア内のdataを1行移動して3つをビニングする動作 * 1111 1111 FF * 1111 1110 FE * 1111 1111 FF * 1111 1110 FE * 1111 1111 FF * 1111 1110 FE * 1111 0001 F1 * 1110 1111 EF * 1111 1111 FF * 1ピクセル移動 11+252回
1ピクセル移動してad変換を行う動作 最初の11ピクセルは空なので捨ててしまう。 * 1111 1111 FF * 1111 1101 FD * 1111 1111 FF * 1111 1011 FB * 1111 1111 FF * 1111 0111 F7 * AD変換 1111 1111 FF */
#include <h8/reg3067.h> /*I/Oアクセス用インクルード*/ //TC245制御の初期設定 void iniTc245( void ); //ストレージエリア内をきれいにする void clearStArea( void ); //イメージ、ストレージエリア内をきれいにする void clearImgArea( void ); //イメージエリアにあるdataをストレージエリアへ移動する void moveImgArea( void ); //ストレージエリア内の1行のdataを1つ移動させてビニングをする void move1Line(void); //末端行に入っているDATAを1ピクセル動かす void move1Pixel(void);
void move1Pixel(void) { P4DR = 0xff; P4DR = 0xfd; asm( "nop" ); asm( "nop" ); P4DR = 0xff; asm( "nop" ); asm( "nop" ); P4DR = 0xfb; asm( "nop" ); asm( "nop" ); P4DR = 0xff; asm( "nop" ); asm( "nop" ); P4DR = 0xf7; asm( "nop" ); asm( "nop" ); return; }
void move1Line(void) { P4DR = 0xff; P4DR = 0xfe; asm( "nop" ); asm( "nop" ); P4DR = 0xff; asm( "nop" ); asm( "nop" ); P4DR = 0xfe; asm( "nop" ); asm( "nop" ); P4DR = 0xff; asm( "nop" ); asm( "nop" ); P4DR = 0xfe; asm( "nop" ); asm( "nop" ); P4DR = 0xf1; asm( "nop" ); asm( "nop" ); P4DR = 0xef; asm( "nop" ); asm( "nop" ); P4DR = 0xff; return; } void moveImgArea( void ) { int I; P4DR = 0xff; for(I=0;I<247;I++){ P4DR = 0xfe; asm( "nop" ); asm( "nop" ); P4DR = 0xee; asm( "nop" ); asm( "nop" ); P4DR = 0xc1; asm( "nop" ); asm( "nop" ); P4DR = 0xd1; asm( "nop" ); asm( "nop" ); } P4DR = 0xff; return; }
void clearImgArea( void ) { int I; P4DR = 0xff; for(I=0;I<500;I++){ P4DR = 0xfe; asm( "nop" ); asm( "nop" ); P4DR = 0xee; asm( "nop" ); asm( "nop" ); P4DR = 0xc1; asm( "nop" ); asm( "nop" ); P4DR = 0xd1; asm( "nop" ); asm( "nop" ); } P4DR = 0xff; return;
}
void clearStArea( void ) { int I; P4DR = 0xff; for(I=0;I<247;I++){ P4DR = 0xfe; asm( "nop" ); asm( "nop" ); P4DR = 0xee; asm( "nop" ); asm( "nop" ); P4DR = 0xe1; asm( "nop" ); asm( "nop" ); P4DR = 0xf1; asm( "nop" ); asm( "nop" ); } P4DR = 0xff; return; }
void iniTc245( void ) { P4DR = 0xff; P4DDR = 0x3f; //Port4-5~0を出力に設定 P4DR = 0xff; return; }/**/ |
最終更新日: 2003-01-31 00:00:00
ともさんのHP >ものつくり >2次元CCDを使った自作カメラ >天体写真用冷却CCDカメラの製作(CCDの制御 ソフトウエア)
ツイート