اطلاعیه

Collapse
No announcement yet.

دوربین ov7670

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #16
    پاسخ : دوربین ov7670

    با سلام ممنون از توضیحاتتون راستش من هر دو تا دوربینو خریدم ببخشید میشه درمورد این دوربین و راه اندازیش با این کتابخونه ها توضیح بدید که مثلا برای پخش انلاین میشه از این کد که اقای طراح استفاده کردن استفاده کرد یا باید در اون تغییراتی داد ممنون میشم تو این تاپیک اساتیدی مثل شما ما رو همراهی کنن

    دیدگاه


      #17
      پاسخ : دوربین ov7670

      با سلام برادر.راستش من خودم مدت زیادی نیست که این دوربین رو البته از نوع fifo دارش رو خریدم.و میخوام با استفاده از arm اطلاعات این دوربین رو مورد پردازش قرار بدم که متاصفانه به دلایلی تا حالا فرصت نشده خیلی وقت روش بذارم.اما تا اینجای کار تا حدودی کاتالوگ این دوربین رو بررسی کردم که در این باره یه توضیح میدم امیدوارم بدردتون بخوره
      اول از همه فایل های زیر رو بگیرید
      http://www.kavirelectronic.ir/eshop/attachment.php?id_attachment=14
      فایل زیر رو از توی پوشه دانلود شده باز کنید
      OV7670_DS (1.3).pdf


      این صفحه 7 دیتا شیت هست که به نظرم خیلی مهمه
      اول از همه نمودار SCCB Timing Diagram رو نگاه کنید
      این یک پروتکل ازتباطی هست فقط و فقط برای خواندن و نوشتن توی رجیسترهای دوربین که از صفحه 11 به بعد میتونید لیستشو مشاهده کنید.اگه یه نگاهی به نمودار پروتکل بندازید میبینید که هیچ فرقی با i2c نداره!
      start bit,stop bit و... همه قسمتاشون مثل همه پس شما برای تغییر یک مقدار رجیستر باید از پروتکل i2c میکرو استفاده کنید
      8 تا پین در دوربین وجود داره که دیتای پیکسل هارو به صورت پارالل منتقل میکند.حالا نحوه انتقال رو میتونید توی دوتا نمودار بعدی قشنگ درک کنید

      1_Horizontal Timing
      اگر بهش دقت کنید میبینید زمانی که پایه HREF یک باشه با خوردن هر کلاک از PCLK یک بایت یا 8 بیت روی پایه های دیتا قرار میگیره و پایه HREF تا زمانی که اطلاعات کل یک سطر کامل ارسال نشده یک باقی میمونه و وقتی تموم شد صفر میشه

      2_VGA Frame Timing
      توی این نمودار میتونید مشاهده کنید که یک پالس کوچیک روی پایه VSYNC به معنی شروع ارسال یک تصویر هست(تمامی پیکسل ها) .زمانی که پالس VSYNC زده شده( با توجه به اینکه گفتم با ست شدن HREF یک سطر ارسال میشه) پایه HREF به اندازه 480 بار ست و ریست میشه که به این صورت تمامی سطر ها و ستون ها به ترتیب ارسال میشن

      توی صفحه های بعد میتونید نمودهای qvga ,qqvga و فرقشون رو با vga مشاهده کنید
      همچنین توی صفحه های بعد تر میتونید ببینید که مثلا RGB 565 Output Timing Diagram چجور دو بایت متوالی رو به رنگهای ابی و قرمز و زرد تقسیم کرده

      :nice: اکثر دوستان از خوندن کاتالوگ و دیتاشیت بعضی از قطعات میترسن :mrgreen: ولی خیلی هم سخت نیست. رو هم رفته 30 صفحه دیتاشیت داره که 20 صفحش شکله

      دیدگاه


        #18
        پاسخ : دوربین ov7670

        با سلام خدمت شما ممنونم از توضیح کاملتون :bye ببخشید تو کتابخونه ov7670 چهار تا تابع نوشته شده
        /////////////////////////////////////////////////////////////
        void OV7670_config_window(unsigned int startx,unsigned int starty,unsigned int width, unsigned int height)
        {
        unsigned int endx;
        unsigned int endy;
        unsigned char temp_reg1, temp_reg2;
        unsigned char temp=0;

        endx=(startx+width);
        endy=(starty+height+height);
        rdOV7670Reg(0x03, &temp_reg1 );
        temp_reg1 &= 0xf0;
        rdOV7670Reg(0x32, &temp_reg2 );
        temp_reg2 &= 0xc0;
        temp = temp_reg2|((endx&0x7)<<3)|(startx&0x 7);
        wrOV7670Reg(0x32, temp );
        temp = (startx&0x7F8)>>3;
        wrOV7670Reg(0x17, temp );
        temp = (endx&0x7F8)>>3;
        wrOV7670Reg(0x18, temp );
        temp =temp_reg1|((endy&0x3)<<2)|(starty&0 x3);
        wrOV7670Reg(0x03, temp );
        temp = starty>>2;
        wrOV7670Reg(0x19, temp );
        temp = endy>>2;
        wrOV7670Reg(0x1A, temp );
        }

        //////////////////////////////////////////////////////////////////////////////

        uchar wrOV7670Reg(uchar regID, uchar regDat)
        {
        startSCCB();
        if(0==SCCBwriteByte(0x42))
        {
        stopSCCB();
        return(0);
        }
        delay_us(100);
        if(0==SCCBwriteByte(regID))
        {
        stopSCCB();
        return(0);
        }
        delay_us(100);
        if(0==SCCBwriteByte(regDat))
        {
        stopSCCB();
        return(0);
        }
        stopSCCB();

        return(1);
        }
        ///////////////////////////////////////////////////////////////////////////////////////////

        uchar rdOV7670Reg(uchar regID, uchar *regDat)
        {
        ·
        startSCCB();
        if(0==SCCBwriteByte(0x42))
        {
        stopSCCB();
        return(0);
        }
        delay_us(100);
        if(0==SCCBwriteByte(regID))
        {
        stopSCCB();
        return(0);
        }
        stopSCCB();

        delay_us(100);

        //ÉèÖüĴæ&#19 8;÷µØÖ·ºó£¬²ÅÊÇ ¶Á
        startSCCB();
        if(0==SCCBwriteByte(0x43))
        {
        stopSCCB();
        return(0);
        }
        delay_us(100);
        *regDat=SCCBreadByte();
        noAck();
        stopSCCB();
        return(1);
        }



        ///////////////////////////////////////////////////////////////////////
        uchar OV7670_init(void)
        {
        uchar temp;

        uint i=0;


        InitSCCB();//io init..

        temp=0x80;
        if(0==wrOV7670Reg(0x12, temp)) //Reset SCCB
        {
        return 0 ;
        }
        delay_ms(10);

        for(i=0;i<CHANGE_REG_NUM;i++)
        {
        if( 0==wrOV7670Reg(pgm_read_byte( &change_reg[i][0]),pgm_read_byte( &change_reg[i][1]) ))
        {
        return 0;
        }
        }
        // OV7670_config_window(272,12,320,240);
        return 0x01; //ok


        }

        ممنون میشم یک کوچولو در مورد این 4 تا تابع توزیح بدید که بدونم اصلا چیکار می کنن .ممنون از همراهیتون تو این تاپیک

        دیدگاه


          #19
          پاسخ : دوربین ov7670

          سلام مجدد خدمت دوستان ببخشید بابت تاخیر. امروز کد xmega رو تبدیلش کردم اگه خدا بخواد فقط یه تابع مونده اونم اینه که واسه avr و باید به 18f46k80 تبدیل بشه ولی چون نمیتونم از میکروچیپ دانلود کنم نتونستم این تابع که واسه وقفه است رو تبدیلش کنم
          [/void Init_INT0(void){
          SREG |= 0x80 ;
          MCUCR |= 0x02 ;
          GICR=(1<<INT0) ; }
          1: وقفه تو در تو رو فعال کرده 2:نوع تریگر وقفه صفر حساس به لبه پایین رونده هست 3:فعال کردن وقفه خارجی صفر

          دیدگاه


            #20
            پاسخ : دوربین ov7670

            نوشته اصلی توسط saeidmo
            سلام مجدد خدمت دوستان ببخشید بابت تاخیر. امروز کد xmega رو تبدیلش کردم اگه خدا بخواد فقط یه تابع مونده اونم اینه که واسه avr و باید به 18f46k80 تبدیل بشه ولی چون نمیتونم از میکروچیپ دانلود کنم نتونستم این تابع که واسه وقفه است رو تبدیلش کنم
            [/void Init_INT0(void){
            SREG |= 0x80 ;
            MCUCR |= 0x02 ;
            GICR=(1<<INT0) ; }
            1: وقفه تو در تو رو فعال کرده 2:نوع تریگر وقفه صفر حساس به لبه پایین رونده هست 3:فعال کردن وقفه خارجی صفر
            سلام امیدورام به نتیجه رسیده باشید. کدهارو برا avr در آوردید؟ منم میخوام رو mega32 کار کنم ایشالا تموم شد کدش رو میزارم :read:
            hi miami

            دیدگاه


              #21
              پاسخ : دوربین ov7670

              نوشته اصلی توسط saeidmo
              کریستال اسیلاتورهای 4 پایه میتونید با دادن ولتاژ به طور مستقیم ازش استفاده کرد
              سلام دوست گرامی آقای saeidmo

              ممنون از اینکه یک موضوع جالب و مفید را پایه گذاری و شروع کرده اید و خیلی مهم تر ، اینکه اینقدر دوستانه و صمیمی اطلاعات تان را در این جا به اشتراک می گذارید. می توانم از شما خواهش کنم که یک مختصری راجع به این کریستال 4 پین و اطلاعاتی از قبیل روش و مقدار تغذیه ، چگونگی اتصال و کلاً نکاتش (ترجیحاً اگر نقشه ای حضورتان هست و یا یک شماتیک دیاگرام به یادگاری بگذارید) توضیح بفرمائید.

              زبان بنده برای تشکر و قدرشناسی از شما ، قاصر است.

              مشتاقانه منتظر نکات جدید شما هستیم.
              والسلام علی من اتبع الهدی .... و درود بر کسانی که راه هدایت را دنبال می کنند.

              هوشمندانه بپرسید...

              دیدگاه

              لطفا صبر کنید...
              X