0,0 → 1,62 |
#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); |
} |