Keisuke Fujii
/
OV7670_register_set
Diff: read.h
- Revision:
- 0:579e5a58b159
- Child:
- 1:9c7022a05ab2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/read.h Mon Jun 13 08:11:07 2011 +0000 @@ -0,0 +1,109 @@ +void tran_frame( void ); +void camera( void ); +void i2c( char, int, int, char ); +void write( char ); +void read( int ); +void start( void ); +void stop( void ); + +char WRITE = 0x42; +char READ = 0x43; +int i = 1, j = 0; +unsigned char data[201]; +unsigned short int byte = 0x00; + +void reset( void ) +{ + OV7670.stop(); + OV7670.frequency( 300000 ); + wait_ms( 10 ); + + i2c( WRITE, 18, 1, 0x80 ); +} + +void tran_frame( void ) +{ + OV7670.stop(); + OV7670.frequency( 300000 ); + wait_ms( 10 ); + + i2c( WRITE, 0x12, 1, 0x80 ); + wait_ms( 10 ); + /*i2c( WRITE, 0x12, 1, 0x08 ); + wait_ms( 10 ); + //i2c( WRITE, 0x18, 1, 0x27 ); //HSTOP + wait_ms( 10 ); + //i2c( WRITE, 0x1A, 1, 0x27 ); //VSTOP*/ + i2c( WRITE, 0x11, 1, 0x83 ); +} + +void camera( void ) +{ + OV7670.stop(); + OV7670.frequency( 300000 ); + wait_ms( 10 ); + for( int a = 0; a < 202; a ++ ) + { + i2c( WRITE, a, 0, 0 ); + i2c( READ, a, 0, 0 ); + //wait_ms( 10 ); + } + for( int b = 1; b <= 202; b ++ ) + { + device.printf("|%s : %2x ", address_name[b], data[b - 1]); + if( ( b % 6 ) == 0 ) + { + device.printf("|\n"); + } + if( b == 202 ) device.printf("|\n"); + } +} + +void i2c( char mode, int a, int flag, char data ) +{ + OV7670.start(); + while( i ) + { + if( OV7670.write( mode ) == 1 ) + { + i = 0; + } + else + { + i = 1; + } + } + i = 1; + if( mode == 0x42 ) + { + write( address[a] ); + if( flag == 1 ) + { + write( data ); + } + } + else if( mode == 0x43 ) read( a ); + OV7670.stop(); +} + +void write( char reg_add ) +{ + while( i ) + { + if( OV7670.write( reg_add ) == 1 ) + { + i = 0; + } + else + { + i = 1; + } + } + i = 1; +} + +void read( int a ) +{ + data[a] = OV7670.read( 0 ); + i = 1; +} \ No newline at end of file