اطلاعیه

Collapse
No announcement yet.

مشکل در پروگرام کردن mega8

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

    مشکل در پروگرام کردن mega8

    سلام به همه

    برنامه ای رو که این پایین میزارم بدون ایراد کامپایل شده حالا وقتی با پروگرامر usb دار (با نرم افزار iprog) میخوام پروگرام میکنم نمیشه و پیغام not connect to flash memory
    رو میده اما برای بقیه ی برنامه هایی که دارم این طور نیست و خوب پروگرام میشه :eek:
    فرکانس میکرو رو 16 هست تو نرم افزار هم گذاشتمش رو 16 و همه چیز خوبه اما نمیدونم چرا این پیغام رو میده
    حجم برنامه هم خیلی کمه و با 4 تا میکرو مگا 8 چندین بار امتحان کردم همشون همین پیغام not connect to flash memory رو میده :angry: :angry:
    کامپیوتر رو ریست کردم ولی بازم همینه :cry2:
    فیوز بیت ها هم درست هستند
    همین برنامه که دارم میگم تو پروتیوس خوب جواب میده !!!!!!
    فکر میکنید مشکل از کجاست ؟


    [code=c]#include <mega8.h>
    #include <string.h>
    #include <stdio.h>
    #include <stdlib.h>


    bit parity=1 , p_parity=1 , data_send=1;
    unsigned char bit_count=0 , buffer_data_send;


    interrupt [TIM0_OVF] void timer0_ovf_isr(void)
    {
    bit_count++;

    if ( p_parity & data_send )
    {
    if ( bit_count == 1 )
    PORTD.3=0;
    if ( bit_count > 1 && bit_count < 10 )
    {
    if ( buffer_data_send & 0b00000001 )
    {
    PORTD.3=1;
    parity = ~parity;
    }
    else
    PORTD.3=0;
    buffer_data_send >> 1;
    }
    if ( bit_count == 10 )
    {
    if ( parity )
    PORTD.3=1;
    else
    PORTD.3=0;
    }
    if ( bit_count == 11 )
    {
    PORTD.3=1;
    }
    if ( bit_count == 12 )
    {
    PORTD.3=0; // ACK BIT
    data_send=0;
    bit_count=0;
    parity=1;
    GICR|=0x40;
    PORTB.1=1;
    }
    }

    if ( data_send )
    {
    PORTD.2=~PORTD.2;
    p_parity=~p_parity;
    }

    }


    void main(void)
    {

    PORTB=0x00;
    DDRB=0xFF;

    PORTD=0x0C;
    DDRD=0x0C;

    TCCR0=0x03;
    TCNT0=0x00;

    TIMSK=0x01;


    ACSR=0x80;


    while (1)
    {
    }

    }
    [/code]

    #2
    پاسخ : مشکل در پروگرام کردن mega8

    فیوزبیتهای میکرو را دست زدی؟ رو کریستال خارجی نگذاشتی؟یه کریستال 8 مگی به پایه های کریستالش وصل کن ببین راه نمی افته؟
    الهم صل علی محمد و آل محمد و عجل فرجهم

    دیدگاه


      #3
      پاسخ : مشکل در پروگرام کردن mega8

      اگر پروگرامری را که در حال حاضر استفاده میکنید همان IPROG است و مشابه تصویر زیر :



      و اگر بر روی زیف سوکت پروگرامر در حال پروگرام هستید. باید یک تصویر از کف برد PCB زیف سوکت ارسال کنید. تا دقیقا خطوط سیگنال بررسی شود. احتمالا بخاطر اینکه میکروهای 28 پین و 20 پین بر روی یک زیف سوکت پروگرام میشوند با صفر یک شدن یک پورت خروجی در میکروی شما تداخل سیگنالی با پروگرامر ایجاد شده و مانع از عملکرد درست آن میشود.

      از طرف دیگر در این دسته از پروگرامر ها تغذیه بصورت دائم بر روی زیف سوکت موجود است و در نتیجه به محض درج میکرو برنامه درون آن شروع بکار کرده و تداخل بوجود می آورد.

      پس برای یافتن بهتر مشکل :
      1--- توضیح دهید که آیا میکرو بر روی زیف پروگرام میشود یا درون مدار؟
      2--- تصویر کف برد بخش زیف سوکت ها را ارسال کنید.

      نکات بسیار مهم در تهیه پروگرامر که متاسفانه فراموش میشود!

      دیدگاه


        #4
        پاسخ : مشکل در پروگرام کردن mega8

        نوشته اصلی توسط lachini
        اگر پروگرامری را که در حال حاضر استفاده میکنید همان IPROG است و مشابه تصویر زیر :



        و اگر بر روی زیف سوکت پروگرامر در حال پروگرام هستید. باید یک تصویر از کف برد PCB زیف سوکت ارسال کنید. تا دقیقا خطوط سیگنال بررسی شود. احتمالا بخاطر اینکه میکروهای 28 پین و 20 پین بر روی یک زیف سوکت پروگرام میشوند با صفر یک شدن یک پورت خروجی در میکروی شما تداخل سیگنالی با پروگرامر ایجاد شده و مانع از عملکرد درست آن میشود.

        از طرف دیگر در این دسته از پروگرامر ها تغذیه بصورت دائم بر روی زیف سوکت موجود است و در نتیجه به محض درج میکرو برنامه درون آن شروع بکار کرده و تداخل بوجود می آورد.

        پس برای یافتن بهتر مشکل :
        1--- توضیح دهید که آیا میکرو بر روی زیف پروگرام میشود یا درون مدار؟
        2--- تصویر کف برد بخش زیف سوکت ها را ارسال کنید.
        اتفاقا همچین مشکلی واسه خود منم پیش اومد که آی سی را رو برد بورد بستم و پروگرام کردم.البته پروگرامر را خودم ساختم با زیف سوکت هم هست.
        نقش پایه ریست چیه؟ مگه واسه این نیست که موقع پروگرم کردن آی سی شروع به کار نکنه؟
        الهم صل علی محمد و آل محمد و عجل فرجهم

        دیدگاه


          #5
          پاسخ : مشکل در پروگرام کردن mega8

          نوشته اصلی توسط shahpoori
          اتفاقا همچین مشکلی واسه خود منم پیش اومد که آی سی را رو برد بورد بستم و پروگرام کردم.البته پروگرامر را خودم ساختم با زیف سوکت هم هست.
          [glow=red,2,300]نقش پایه ریست چیه؟ مگه واسه این نیست که موقع پروگرم کردن آی سی شروع به کار نکنه؟[/glow]
          سئوال خوبی پرسیدید که شاید در ذهن بسیاری دیگر نیز وجود داشته باشد.

          دوست عزیز در حالت استاندارد پایه ریست و سایر پایه همچون miso, mosi , sck, vcc, gnd نباید به هیچ پایه دیگر میکرو وصل باشند. در این حالت با ریست شدن میکرو؛ پروگرامر میتواند عملیات برنامه ریزی را شروع کند.

          اما در این دست از پروگرامرها بر روی زیف سوکت پایه هایی ختی مثل ریست نیز به یک یا چند پورت دیگر میکرو متصل هستند و همین موضوع در رابطه با سایر پین ها نیز صدق میکند. از طرف دیگر تغذیه نیز بصورت دائم بر روی پین های میکرو توسط ریف وصل است. در نتیجه با درج میکرو بروی زیف سوکت؛ میکرو روشن شده و شروع بکار میکند. و اگر در برنامه شما پایه هایی که توسط زیف سوکت به هم متصل شده را به عنوان خروجی تعریف کرده باشید و مقادیر آنرا تغییر دهید. این تغییرات سیگنالی توسط زیف به پروگرامر نیز منتقل میشود و عملا باعث تداخل سیکنالی و عدم عملکرد درست پروگرامر خواهد شد. بخصوص در پین ریست. و به این ترتیب بعد از یکبار پروگرام شدن میکرو احتمال عدم شناسایی آن توسط پروگرامر بر روی زیف سوکت هست.

          تصویر زیر یک نمونه از اتصال کوتاه کردن پین های مختلف زیف سوکت را نمایش میدهد :



          باید توجه داشته باشید که در پروگرام های استاندارد با زیف سوکت هوشمند؛ فقط در هنگام عملیات پروگرام تغذیه و سایر خطوط بر روی زیف سوکت قرار گرفته و در سایر حالات یعنی قبل از شروع پروگرام و پس از پایان پروگرام تمامی خظوط از زیف سوکت جدا شده و میکرو خاموش خواهد بود.

          و نکته دیگر اینکه در پروگرامر های استاندارد با زیف سوکت هوشمند همچون پروگرامر سانا؛ به محض درج میکرو بر روی زیف سوکت بصورت خودکار نوع میکرو و نحوه درج آن تشخیص داده میشود و در صورت درج غلط خطوط سیگنال به میکرو اعمال نخواهد شد تا میکرو صدمه ندیده و علاوه بر آن کلاک مناسب نیز برای میکرو تامین میشود تا با تغییر فیوزبیت های CKSEL , CKDIV8 میکرو از کار نیافتد.

          و صد البته در این نوع پروگرامر ها فقط یک زیف سوکت استفاده قرار داشته و تمامی میکروها بدون توجه به تعداد پین آنها از پین یک زیف سوکت درج میشوند. در حالیکه در پروگرامرهای بازاری یا از چند زیف سوکت استفاده شده و یا اینکه هر میکرو بر اساس تعداد پین آن در محل جداگانه باید درج شوند.

          نکات بسیار مهم در تهیه پروگرامر که متاسفانه فراموش میشود!

          دیدگاه


            #6
            پاسخ : مشکل در پروگرام کردن mega8

            ممنون آقای لاچینی.ولی مگه پایه های میکرو 3state نیستند؟ یعی یا ورودی یا خروجی یا ول میشند.وقتی پایه ریست فعال بشه باید پایه ها بجز mosi,miso,sck و پایه کلاک بقیه در حالت رها قرار بگیره پس اعمال ولتاژ به پایه های دیگه نباید تاثیری داشته باشه دیگه؟
            الهم صل علی محمد و آل محمد و عجل فرجهم

            دیدگاه


              #7
              پاسخ : مشکل در پروگرام کردن mega8

              حق با شما است اما به یک شرط!

              که سیگنال ریست توسط پروگرامر بتواند به میکرو اعمال شود. اگر در تصویر دقت کنید متوجه میشوید که مثلا در مگا هشت پایه ریست به PB0 نیز متصل شده است.
              از طرف دیگر تغذیه میکرو نیز بصورت دائم بر روی زیف موجود است. در نتیجه به محض درج میکرو بر روی زیف سوکت؛ میکرو روشن شده و در صورتیکه شما در برنامه PB0 را به عنوان خروجی تعریف کرده باشید؛ و اگر مقدار آن یک باشد باشد عملا مانع صفر شدن پایه ریست توسط پروگرامر میشود. و به نوعی حالتی مشابه اتصال کوتاه در مدار رخ میدهد.

              اما نکته دیگر اینکه در فرض بالا ما اینگونه در نظر گرفتیم که تغذیه بدون مشکل است. اما اگر به تصویر دقت کنید با درج میکرو مگاهشت. PB1 نیز به VCC متصل است! در نتیجه اگر PB1 خروجی باشد و در لحظاتی توسط برنامه صفر شود. عملا باز تداخل سیگنالی بر روی تغذیه را خواهیم داشت!

              این دو اختلال سیگنالی شامل ریست و تغذیه پنج ولت بسادگی باعث برهم خوردن ارتباط بین میکرو قرار گرفته در زیف سوکت و میکروی پروگرامر خواهد شد.

              توجه داشته باشید که یکی از ضعف های این پروگرامرها عدم جداسازی مناسب بین خطوط تغذیه پروگرامر و میکرو میباشد.

              نکات بسیار مهم در تهیه پروگرامر که متاسفانه فراموش میشود!

              دیدگاه


                #8
                پاسخ : مشکل در پروگرام کردن mega8

                آقای لاچینی بابت توضیحاتتون خیلی ممنونم. :redface:
                ولی میشه بفرمایید شما چه جوری این مشکل را تو پروگرامرتون حل کردید؟اگه میشه سخت افزارشو یکم توضیح بدید. :redface:
                الهم صل علی محمد و آل محمد و عجل فرجهم

                دیدگاه


                  #9
                  پاسخ : مشکل در پروگرام کردن mega8

                  ممنون از لطف شما. روش طراحی این پروگرامر کاملا متفاوت با روش های بازاری است و موارد زیر در آن دیده شده است :

                  -- ایزوله کردن خطوط زیف سوکت و کانکتور isp در حالت بدون کار از مدار.
                  -- در هنگام دریافت دستور برنامه ریزی از سوی کامپیوتر؛ اسکن خطوط زیف سوکت جهت تشخیص وجود میکرو.
                  -- در صورت عدم تشخیص وجود میکرو و یا درج اشتباه میکرو اعلام خطا و قطع کامل خطوط.
                  -- در صورت وجود میکرو تامین خطوط سیگنال دقیقا و فقط برای پین های MOSI, MISO, SCK, RESET, GND , VCC , XTAL1.
                  -- تشخیص نوع کلاک میکرو و تامین کلاک لازم. یکی از نکات برجسته این پروگرامر تامین کلاک در حالت RC خارجی بصورت کاملا استاندارد. به تصویر زیر توجه کنید که کلاک تامین شده بر روی میکرو در حالت RC خارجی را نشان میدهد :



                  -- خط تغذیه کاملا مستقل از USB کامپیوتر بوده و در نتیجه مشکلات میکرو به پروگرامر منتقل نمیشود.

                  در نهایت باید به این نکته توجه کنید که این پروگرامر از روش استاندارد جهت ارتباط با کامپیوتر استفاده میکند. درنتیجه پروگرامر باید در زمانی مشابه سایر USBASP های معمولی عمل کند. به عبارت دیگر تمامی عملیات های فوق باید در زمانی برابر با پروگرامرهای USBASP معمولی که فرآیندهای فوق را انجام نمیدهند؛ انجام شود. تا کامپیوتر خطای عدم ارتباط بدلیل کاهش سرعت و یا عدم دریافت پاسخ از سوی پروگرامر ندهد.
                  بخش فوق نیز علاوه بر طراحی سخت افزار نیاز به برنامه نویسی ویژه دارد. تا این پروگرامر تبدیل به یک USBASP ویژه و منحصر به فرد شود. البته طبق بررسی که من داشتم بسیاری تلاش در ساخت مدل مشابه را داشته اند که یک پروگرامر با پروتکل استاندارد و شناخته شده با زیف سوکت هوشمند داشته باشند که هیچ کدام کامل نبوده اند که در زیر برخی از آنها را معرفی میکنم :



                  این پروگرامر ظاهرا تمامی میکروها را بر روی یک زیف سوکت پروگرام میکند و شما تمامی میکروها را از پین یک در پروگرام قرار میدهید ولی طراح آن یک نرم افزار نیز نوشته تا شما بصورت دستی نوع میکرو را پیش از پروگرام کردن برای پروگرامر تعریف کنید. که عملا نتوانسته امکان تشخیص هوشمند نوع میکرو را انجام دهد.تصویر زیر :



                  نوع دیگری نیز توسط یک فرد کانادایی ساخته شده که تعداد محدودی از میکروها را ساپورت میکند و کاملا سخت افزاری بوده و شما توسط جامپر نوع میکرو را باید تعیین کنید و فاقد تامین کلاک است؛ به ابعاد پروگرامر نیز توجه کنید و دو لایه بودن PCB :




                  نکات بسیار مهم در تهیه پروگرامر که متاسفانه فراموش میشود!

                  دیدگاه


                    #10
                    پاسخ : مشکل در پروگرام کردن mega8

                    نوشته اصلی توسط shahpoori
                    فیوزبیتهای میکرو را دست زدی؟ رو کریستال خارجی نگذاشتی؟یه کریستال 8 مگی به پایه های کریستالش وصل کن ببین راه نمی افته؟
                    سلام

                    با تشکر از توجه همه دوستان
                    مشکل اینطوری برطرف شد
                    تو کدویژن یه فایل جدید درست کردم و برنامه ها رو اضافه کردم بهش نه اینکه کل برنامه و کدها رو کپی کنما نه ( اگه این کارو بکنید درست نمیشه )

                    دیدگاه

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