سلام دوستان
من دارم روی ی پروژه برای کارشناسی ام کار میکنم که اونم راه اندازی دوربین ov7670 است
توی ی تاپیک در همین فروم دربارش بحث شده اما اشکال من رفع نشد
چون این دوربین با i2c به میکرو وصل میشه من دارم برنامه ی i2c رو خودم دستی توی کد ویژن مینویسم و برای اینکه از برنامم مطمئن شم
از سنسور ds1307 که از همین پروتوکل استفاده میکنه ، استفاده میکنم
من در شبیه سازی تونستم این سنسور رو راه اندازی کنم اما سخت افزاری نه
میشه کمکم کنید
برنامم هم در ادامه ضمیمه کردم
من دارم روی ی پروژه برای کارشناسی ام کار میکنم که اونم راه اندازی دوربین ov7670 است
توی ی تاپیک در همین فروم دربارش بحث شده اما اشکال من رفع نشد
چون این دوربین با i2c به میکرو وصل میشه من دارم برنامه ی i2c رو خودم دستی توی کد ویژن مینویسم و برای اینکه از برنامم مطمئن شم
از سنسور ds1307 که از همین پروتوکل استفاده میکنه ، استفاده میکنم
من در شبیه سازی تونستم این سنسور رو راه اندازی کنم اما سخت افزاری نه
میشه کمکم کنید
برنامم هم در ادامه ضمیمه کردم
کد:
/***************************************************** Chip type : ATmega32 Program type : Application AVR Core Clock frequency: 8.000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 256 *****************************************************/ #include <mega32.h> #include <delay.h> #include <stdio.h> #include <string.h> #asm .equ __lcd_port=0x1B; #endasm #include <lcd.h> #define SCL PORTB.0 #define SDA PORTB.1 void itoc_write (char ad1,char ad2) { int ii; char komaki; // PORTB.0=0; DDRB.0=1; //OUTPUT DDRB.1=1; // PORTB.0=0; // delay_us(5); // SCL=1; PORTB.1=1; // SDA=1; delay_us(25); PORTB.0=1; // SCL=1; delay_us(25); PORTB.1=0; // START CONDITION delay_us(25); PORTB.0=0; // SCL=0 delay_us(10); komaki=0xD0; for(ii=0;ii<8;ii++) { if((komaki&0x80)!=0) PORTB.1=1; else PORTB.1=0; delay_us(25); PORTB.0=1; //SCL=1 delay_us(25); komaki=komaki<<1; PORTB.0=0; } delay_us(25); DDRB.1=0; // PORTB.1=1; PORTB.0=1; //SCL=1 delay_us(25); // PORTB.1=1; // PORTB.0=0; // delay_us(5); // while(PINB.1==1); PORTB.0=0; DDRB.1=1; delay_us(40); komaki=ad1; for(ii=0;ii<8;ii++) { if((komaki&0x80)!=0) PORTB.1=1; else PORTB.1=0; delay_us(25); PORTB.0=1; //SCL=1 delay_us(25); komaki=komaki<<1; PORTB.0=0; } delay_us(25); DDRB.1=0; // PORTB.1=1; PORTB.0=1; //SCL=1 delay_us(25); // PORTB.1=1; // PORTB.0=0; // delay_us(5); // while(PINB.1==1); PORTB.0=0; DDRB.1=1; delay_us(40); komaki=ad2; for(ii=0;ii<8;ii++) { if((komaki&0x80)!=0) PORTB.1=1; else PORTB.1=0; delay_us(25); PORTB.0=1; //SCL=1 delay_us(25); komaki=komaki<<1; PORTB.0=0; } delay_us(25); DDRB.1=0; // PORTB.1=1; PORTB.0=1; //SCL=1 delay_us(25); // PORTB.1=1; // PORTB.0=0; // delay_us(5); // while(PINB.1==1); PORTB.0=0; DDRB.1=1; delay_us(40); PORTB.1=0; delay_us(25); PORTB.0=1; delay_us(25); PORTB.1=1; // STOP delay_us(40); } char itoc_read(char ad1) { int ii; char komaki; DDRB.0=1; DDRB.1=1; PORTB.0=0; delay_us(25); PORTB.1=1; // SDA=1; delay_us(25); PORTB.0=1; // SCL=1; delay_us(25); PORTB.1=0; // START CONDITION // DDRB.1=0; // INPUT delay_us(25); PORTB.0=0; // SCL=0 komaki=0xD0; for(ii=0;ii<8;ii++) { if((komaki&0x80)!=0) PORTB.1=1; else PORTB.1=0; delay_us(25); PORTB.0=1; //SCL=1 delay_us(25); komaki=komaki<<1; PORTB.0=0; } delay_us(25); DDRB.1=0; // PORTB.1=1; PORTB.0=1; //SCL=1 delay_us(25); // PORTB.1=1; // PORTB.0=0; // delay_us(5); // while(PINB.1==1); PORTB.0=0; DDRB.1=1; delay_us(40); komaki=0; komaki=ad1; for(ii=0;ii<8;ii++) { if((komaki&0x80)!=0) PORTB.1=1; else PORTB.1=0; delay_us(25); PORTB.0=1; //SCL=1 delay_us(25); komaki=komaki<<1; PORTB.0=0; } delay_us(25); DDRB.1=0; // PORTB.1=1; PORTB.0=1; //SCL=1 delay_us(25); // PORTB.1=1; // PORTB.0=0; // delay_us(5); // while(PINB.1==1); PORTB.0=0; DDRB.1=1; delay_us(40); PORTB.1=0; delay_us(25); PORTB.0=1; delay_us(25); PORTB.1=1; // STOP delay_us(50); DDRB.0=1; DDRB.1=1; // PORTB.0=0; // delay_us(25); // PORTB.1=1; // SDA=1; // delay_us(25); PORTB.0=1; // SCL=1; // delay_us(25); PORTB.1=0; // START CONDITION // DDRB.1=0; // INPUT delay_us(25); PORTB.0=0; // SCL=0 komaki=0; komaki=0xD1; for(ii=0;ii<8;ii++) { if((komaki&0x80)!=0) PORTB.1=1; else PORTB.1=0; delay_us(25); PORTB.0=1; //SCL=1 delay_us(25); komaki=komaki<<1; PORTB.0=0; } delay_us(25); DDRB.1=0; // PORTB.1=1; PORTB.0=1; //SCL=1 delay_us(25); // PORTB.1=1; // PORTB.0=0; // delay_us(5); // while(PINB.1==1); PORTB.0=0; DDRB.1=1; delay_us(50); komaki=0; DDRB.1=0; // INPUT // PORTB.1=1; for(ii=0;ii<7;ii++) { // if(PINB.1==1) komaki=komaki+1; // komaki=komaki<<1; PORTB.0=1; delay_us(25); if(PINB.1==1) komaki=komaki+1; komaki=komaki<<1; PORTB.0=0; //SCL=0 delay_us(25); } if(PINB.1==1) komaki=komaki+1; // komaki=komaki>>1; // DDRB.1=1; return komaki; PORTB.1=0; delay_us(25); PORTB.0=1; delay_us(25); PORTB.1=1; // STOP delay_us(40); } char s1[16]; char meghdar; void main(void) { PORTA=0x00; DDRA=0x00; PORTB=0; DDRB=0x00; PORTC=0x00; DDRC=0x00; PORTD=0x00; DDRD=0x00; TCCR0=0x00; TCNT0=0x00; OCR0=0x00; TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; MCUCR=0x00; MCUCSR=0x00; TIMSK=0x00; UCSRB=0x00; ACSR=0x80; SFIOR=0x00; ADCSRA=0x00; SPCR=0x00; TWCR=0x00; lcd_init(16); itoc_write(0x06,0x11); //year lcd_gotoxy(0,0); lcd_putsf("test2"); itoc_write(0x05,0x09); //month itoc_write(0x04,0x15); //date meghdar= itoc_read(0x06); lcd_gotoxy(7,0); lcd_putsf("Test 1"); sprintf(s1,"%d" ,meghdar); lcd_gotoxy(5,1); lcd_puts(s1); // sprintf(s1,"%d" ,meghdar); // lcd_gotoxy(5,1); // lcd_puts(s1); delay_ms(500); //meghdar2=itoc_read(0x05); // meghdar3=itoc_read(0x04); // } while (1) { // itoc_write(0xD0,0x07,0x93); //control reg // sprintf(s1,"%d" ,meghdar); // lcd_gotoxy(5,1); // lcd_puts(s1); // sprintf(s2,"%d",meghdar2); // lcd_gotoxy(5,1); // lcd_puts(s2); // sprintf(s3,"%d",meghdar3); // lcd_gotoxy(10,1); // lcd_puts(s3); //// } }
دیدگاه