Dependencies:   mbed

Committer:
Keisuke_Fujii
Date:
Mon Dec 12 02:43:33 2011 +0000
Revision:
1:9c7022a05ab2
Parent:
0:579e5a58b159

        

Who changed what in which revision?

UserRevisionLine numberNew 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 }