Dependencies:   mbed

read.h

Committer:
Keisuke_Fujii
Date:
2011-12-12
Revision:
1:9c7022a05ab2
Parent:
0:579e5a58b159

File content as of revision 1:9c7022a05ab2:

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, 0x12, 1, 0x80 );    //reset
}

void tran_frame( void )
{
    OV7670.stop();
    OV7670.frequency( 200000 );
    wait_ms( 10 );
    
    i2c( WRITE, 0x12, 1, 0x80 );    //reset
    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 );    //48[MHz] -> 12[MHz]
    //i2c( WRITE, 0x11, 1, 0x80 );    //24[MHz] -> 24[MHz]
}

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;
            led = 0xff;
        }
        else
        {
            i = 1;
            led << 1;
        }
    }
    led = 0x00;
    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;
}