Keisuke Fujii
/
OV7670_register_set
read.h@1:9c7022a05ab2, 2011-12-12 (annotated)
- Committer:
- Keisuke_Fujii
- Date:
- Mon Dec 12 02:43:33 2011 +0000
- Revision:
- 1:9c7022a05ab2
- Parent:
- 0:579e5a58b159
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Keisuke_Fujii | 0:579e5a58b159 | 1 | void tran_frame( void ); |
Keisuke_Fujii | 0:579e5a58b159 | 2 | void camera( void ); |
Keisuke_Fujii | 0:579e5a58b159 | 3 | void i2c( char, int, int, char ); |
Keisuke_Fujii | 0:579e5a58b159 | 4 | void write( char ); |
Keisuke_Fujii | 0:579e5a58b159 | 5 | void read( int ); |
Keisuke_Fujii | 0:579e5a58b159 | 6 | void start( void ); |
Keisuke_Fujii | 0:579e5a58b159 | 7 | void stop( void ); |
Keisuke_Fujii | 0:579e5a58b159 | 8 | |
Keisuke_Fujii | 0:579e5a58b159 | 9 | char WRITE = 0x42; |
Keisuke_Fujii | 0:579e5a58b159 | 10 | char READ = 0x43; |
Keisuke_Fujii | 0:579e5a58b159 | 11 | int i = 1, j = 0; |
Keisuke_Fujii | 0:579e5a58b159 | 12 | unsigned char data[201]; |
Keisuke_Fujii | 0:579e5a58b159 | 13 | unsigned short int byte = 0x00; |
Keisuke_Fujii | 0:579e5a58b159 | 14 | |
Keisuke_Fujii | 0:579e5a58b159 | 15 | void reset( void ) |
Keisuke_Fujii | 0:579e5a58b159 | 16 | { |
Keisuke_Fujii | 0:579e5a58b159 | 17 | OV7670.stop(); |
Keisuke_Fujii | 0:579e5a58b159 | 18 | OV7670.frequency( 300000 ); |
Keisuke_Fujii | 0:579e5a58b159 | 19 | wait_ms( 10 ); |
Keisuke_Fujii | 0:579e5a58b159 | 20 | |
Keisuke_Fujii | 1:9c7022a05ab2 | 21 | i2c( WRITE, 0x12, 1, 0x80 ); //reset |
Keisuke_Fujii | 0:579e5a58b159 | 22 | } |
Keisuke_Fujii | 0:579e5a58b159 | 23 | |
Keisuke_Fujii | 0:579e5a58b159 | 24 | void tran_frame( void ) |
Keisuke_Fujii | 0:579e5a58b159 | 25 | { |
Keisuke_Fujii | 0:579e5a58b159 | 26 | OV7670.stop(); |
Keisuke_Fujii | 1:9c7022a05ab2 | 27 | OV7670.frequency( 200000 ); |
Keisuke_Fujii | 0:579e5a58b159 | 28 | wait_ms( 10 ); |
Keisuke_Fujii | 0:579e5a58b159 | 29 | |
Keisuke_Fujii | 1:9c7022a05ab2 | 30 | i2c( WRITE, 0x12, 1, 0x80 ); //reset |
Keisuke_Fujii | 0:579e5a58b159 | 31 | wait_ms( 10 ); |
Keisuke_Fujii | 0:579e5a58b159 | 32 | /*i2c( WRITE, 0x12, 1, 0x08 ); |
Keisuke_Fujii | 0:579e5a58b159 | 33 | wait_ms( 10 ); |
Keisuke_Fujii | 0:579e5a58b159 | 34 | //i2c( WRITE, 0x18, 1, 0x27 ); //HSTOP |
Keisuke_Fujii | 0:579e5a58b159 | 35 | wait_ms( 10 ); |
Keisuke_Fujii | 0:579e5a58b159 | 36 | //i2c( WRITE, 0x1A, 1, 0x27 ); //VSTOP*/ |
Keisuke_Fujii | 1:9c7022a05ab2 | 37 | //i2c( WRITE, 0x11, 1, 0x83 ); //48[MHz] -> 12[MHz] |
Keisuke_Fujii | 1:9c7022a05ab2 | 38 | //i2c( WRITE, 0x11, 1, 0x80 ); //24[MHz] -> 24[MHz] |
Keisuke_Fujii | 0:579e5a58b159 | 39 | } |
Keisuke_Fujii | 0:579e5a58b159 | 40 | |
Keisuke_Fujii | 0:579e5a58b159 | 41 | void camera( void ) |
Keisuke_Fujii | 0:579e5a58b159 | 42 | { |
Keisuke_Fujii | 0:579e5a58b159 | 43 | OV7670.stop(); |
Keisuke_Fujii | 0:579e5a58b159 | 44 | OV7670.frequency( 300000 ); |
Keisuke_Fujii | 0:579e5a58b159 | 45 | wait_ms( 10 ); |
Keisuke_Fujii | 0:579e5a58b159 | 46 | for( int a = 0; a < 202; a ++ ) |
Keisuke_Fujii | 0:579e5a58b159 | 47 | { |
Keisuke_Fujii | 0:579e5a58b159 | 48 | i2c( WRITE, a, 0, 0 ); |
Keisuke_Fujii | 0:579e5a58b159 | 49 | i2c( READ, a, 0, 0 ); |
Keisuke_Fujii | 0:579e5a58b159 | 50 | //wait_ms( 10 ); |
Keisuke_Fujii | 0:579e5a58b159 | 51 | } |
Keisuke_Fujii | 0:579e5a58b159 | 52 | for( int b = 1; b <= 202; b ++ ) |
Keisuke_Fujii | 0:579e5a58b159 | 53 | { |
Keisuke_Fujii | 0:579e5a58b159 | 54 | device.printf("|%s : %2x ", address_name[b], data[b - 1]); |
Keisuke_Fujii | 0:579e5a58b159 | 55 | if( ( b % 6 ) == 0 ) |
Keisuke_Fujii | 0:579e5a58b159 | 56 | { |
Keisuke_Fujii | 0:579e5a58b159 | 57 | device.printf("|\n"); |
Keisuke_Fujii | 0:579e5a58b159 | 58 | } |
Keisuke_Fujii | 0:579e5a58b159 | 59 | if( b == 202 ) device.printf("|\n"); |
Keisuke_Fujii | 0:579e5a58b159 | 60 | } |
Keisuke_Fujii | 0:579e5a58b159 | 61 | } |
Keisuke_Fujii | 0:579e5a58b159 | 62 | |
Keisuke_Fujii | 0:579e5a58b159 | 63 | void i2c( char mode, int a, int flag, char data ) |
Keisuke_Fujii | 0:579e5a58b159 | 64 | { |
Keisuke_Fujii | 0:579e5a58b159 | 65 | OV7670.start(); |
Keisuke_Fujii | 0:579e5a58b159 | 66 | while( i ) |
Keisuke_Fujii | 0:579e5a58b159 | 67 | { |
Keisuke_Fujii | 0:579e5a58b159 | 68 | if( OV7670.write( mode ) == 1 ) |
Keisuke_Fujii | 0:579e5a58b159 | 69 | { |
Keisuke_Fujii | 0:579e5a58b159 | 70 | i = 0; |
Keisuke_Fujii | 1:9c7022a05ab2 | 71 | led = 0xff; |
Keisuke_Fujii | 0:579e5a58b159 | 72 | } |
Keisuke_Fujii | 0:579e5a58b159 | 73 | else |
Keisuke_Fujii | 0:579e5a58b159 | 74 | { |
Keisuke_Fujii | 0:579e5a58b159 | 75 | i = 1; |
Keisuke_Fujii | 1:9c7022a05ab2 | 76 | led << 1; |
Keisuke_Fujii | 0:579e5a58b159 | 77 | } |
Keisuke_Fujii | 0:579e5a58b159 | 78 | } |
Keisuke_Fujii | 1:9c7022a05ab2 | 79 | led = 0x00; |
Keisuke_Fujii | 0:579e5a58b159 | 80 | i = 1; |
Keisuke_Fujii | 0:579e5a58b159 | 81 | if( mode == 0x42 ) |
Keisuke_Fujii | 0:579e5a58b159 | 82 | { |
Keisuke_Fujii | 0:579e5a58b159 | 83 | write( address[a] ); |
Keisuke_Fujii | 0:579e5a58b159 | 84 | if( flag == 1 ) |
Keisuke_Fujii | 0:579e5a58b159 | 85 | { |
Keisuke_Fujii | 0:579e5a58b159 | 86 | write( data ); |
Keisuke_Fujii | 0:579e5a58b159 | 87 | } |
Keisuke_Fujii | 0:579e5a58b159 | 88 | } |
Keisuke_Fujii | 0:579e5a58b159 | 89 | else if( mode == 0x43 ) read( a ); |
Keisuke_Fujii | 0:579e5a58b159 | 90 | OV7670.stop(); |
Keisuke_Fujii | 0:579e5a58b159 | 91 | } |
Keisuke_Fujii | 0:579e5a58b159 | 92 | |
Keisuke_Fujii | 0:579e5a58b159 | 93 | void write( char reg_add ) |
Keisuke_Fujii | 0:579e5a58b159 | 94 | { |
Keisuke_Fujii | 0:579e5a58b159 | 95 | while( i ) |
Keisuke_Fujii | 0:579e5a58b159 | 96 | { |
Keisuke_Fujii | 0:579e5a58b159 | 97 | if( OV7670.write( reg_add ) == 1 ) |
Keisuke_Fujii | 0:579e5a58b159 | 98 | { |
Keisuke_Fujii | 0:579e5a58b159 | 99 | i = 0; |
Keisuke_Fujii | 0:579e5a58b159 | 100 | } |
Keisuke_Fujii | 0:579e5a58b159 | 101 | else |
Keisuke_Fujii | 0:579e5a58b159 | 102 | { |
Keisuke_Fujii | 0:579e5a58b159 | 103 | i = 1; |
Keisuke_Fujii | 0:579e5a58b159 | 104 | } |
Keisuke_Fujii | 0:579e5a58b159 | 105 | } |
Keisuke_Fujii | 0:579e5a58b159 | 106 | i = 1; |
Keisuke_Fujii | 0:579e5a58b159 | 107 | } |
Keisuke_Fujii | 0:579e5a58b159 | 108 | |
Keisuke_Fujii | 0:579e5a58b159 | 109 | void read( int a ) |
Keisuke_Fujii | 0:579e5a58b159 | 110 | { |
Keisuke_Fujii | 0:579e5a58b159 | 111 | data[a] = OV7670.read( 0 ); |
Keisuke_Fujii | 0:579e5a58b159 | 112 | i = 1; |
Keisuke_Fujii | 0:579e5a58b159 | 113 | } |