Rev 410 | Blame | Compare with Previous | Last modification | View Log | Download
#include ".\camerus.h"
#define CAMERA_ADR 0xC0
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
output_high(PIN_C0);
output_low(PIN_C6);
Delay_ms(200);
output_low(PIN_C0);
Delay_ms(200);
output_high(PIN_C0);
i2c_start(); // Reset
i2c_write(CAMERA_ADR);
i2c_write(0x12);
i2c_write(0x80 | 0x24);
i2c_stop();
// **** Write data => Adr($13) = 0x05 ****
// This will tri-state the Y and UV busses on the OV6620, which
// will allow re-programming of the atmega8 to proceed at startup
// if needed.
i2c_start();
i2c_write(CAMERA_ADR);
i2c_write(0x13);
i2c_write(0x05);
i2c_stop();
Delay_ms(250);
//**** Write data => Adr($3F) = 0x42 ****
// This will turn on the external clock for the atmega8 to use.
i2c_start();
i2c_write(CAMERA_ADR);
i2c_write(0x3F);
i2c_write(0x42);
i2c_stop();
// Wait for a short amount of time for the external clock
// to stabilize
Delay_ms(250);
output_low(PIN_C0);
// turn on the mega8 by releasing the reset line
output_high(PIN_C6);
while(true);
}