اطلاعیه

Collapse
No announcement yet.

عدم اجرای کد در pci

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

    عدم اجرای کد در pci

    با عرض سلام و وقت بخیر
    بنده موردی دارم که بعد از اینکه میکرو pic16f676را پراگرام میکنم کد اجرا نمیشه تو پروگرامر دیگر هم امتحان کردم اجرا نمیشه مدار هم درست بسته شده نمی‌دونم مشکل چی هست کسی بلده راهنمایی کنه

    #2
    اینم کد
    define relay1 RC1_bit
    define relay2 RC2_bit
    define relay3 RC3_bit
    define relay4 RC4_bit
    define relay5 RC5_bit

    define delay_led RA2_bit
    define high_led RA1_bit
    define low_led RA0_bit


    unsigned int line_voltage=0,max_point=0,temp=0;
    int i=0,k=0;
    bit gap1,gap2,gap3,gap4,gap5;



    void main()
    {
    TRISA=0x00;//all output
    TRISC=0x01;//all out except RC0_bit
    ANSEL = 0b00010000;//AN4 active
    CMCON=0x07;//comparator off
    ADCON1=0x10;//Fosc/8 speed

    top:
    PORTA = 0x00;//clear port
    PORTC = 0x00;//clear port
    delay_led = 1;
    Delay_ms(180000);//3min delay = 180000;
    delay_led = 0;

    while(1)
    {

    //read input voltage
    line_voltage = 0;
    max_point=0;
    temp=0;
    ADCON0 = 0x11; //AN4
    for(i=0;i<5;i++)
    {
    for(k=0;k<500;k++)
    {
    if(temp=ADC_Read(4),temp>max_point)
    {
    max_point = temp;
    Delay_us(1);
    }
    }
    line_voltage+=max_point*37/10;
    }
    line_voltage/=5; //get average value


    if(line_voltage<145 || line_voltage>305)
    {
    relay5 = 0;
    if(line_voltage<145)low_led = 1;
    else if(line_voltage>305)high_led = 1;
    Delay_ms(10000);//wait 10sec
    goto top;
    }
    else
    {
    if(line_voltage>145 && line_voltage<170)
    {
    relay1 = 0;// 150V Tap connected
    relay2 = 0;
    relay3 = 0;
    relay4 = 0;
    relay5 = 1;//injection on
    gap1 = 1;
    gap2 = 0;
    }
    else if(line_voltage>=170 && line_voltage<=172)
    {
    if(gap1)
    {
    relay1 = 0;// 150V Tap connected
    relay2 = 0;
    relay3 = 0;
    relay4 = 0;
    relay5 = 1;//injection on
    }
    if(gap2)
    {
    relay1 = 1;// 180V Tap connected
    relay2 = 0;
    relay3 = 0;
    relay4 = 0;
    relay5 = 1;//injection on
    }
    }
    else if(line_voltage>172 && line_voltage<204)
    {
    relay1 = 1;// 180V Tap connected
    relay2 = 0;
    relay3 = 0;
    relay4 = 0;
    relay5 = 1;//injection on
    gap2 = 1;
    gap1 = 0;
    gap3 = 0;
    }
    else if(line_voltage>=204 && line_voltage<=206)
    {
    if(gap2)
    {
    relay1 = 1;// 180V Tap connected
    relay2 = 0;
    relay3 = 0;
    relay4 = 0;
    relay5 = 1;//injection on
    }
    if(gap3)
    {
    relay1 = 0;
    relay2 = 1;// 210V Tap connected
    relay3 = 0;
    relay4 = 0;
    relay5 = 1;//injection on
    }
    }
    else if(line_voltage>206 && line_voltage<238)
    {
    relay1 = 0;
    relay2 = 1;// 210V Tap connected
    relay3 = 0;
    relay4 = 0;
    relay5 = 1;//injection on
    gap3 = 1;
    gap4 = 0;
    gap2 = 0;
    }
    else if(line_voltage>=238 && line_voltage<=240)
    {
    if(gap3)
    {
    relay1 = 0;
    relay2 = 1;// 210V Tap connected
    relay3 = 0;
    relay4 = 0;
    relay5 = 1;//injection on
    }
    if(gap4)
    {
    relay1 = 0;
    relay2 = 0;
    relay3 = 1;// 240V Tap connected
    relay4 = 0;
    relay5 = 1;//injection on
    }
    }
    else if(line_voltage>240 && line_voltage<270)
    {
    relay1 = 0;
    relay2 = 0;
    relay3 = 1;// 240V Tap connected
    relay4 = 0;
    relay5 = 1;//injection on
    gap3 = 0;
    gap4 = 1;
    gap2 = 0;
    }
    else if(line_voltage>=270 && line_voltage<=272)
    {
    if(gap4)
    {
    relay1 = 0;
    relay2 = 0;
    relay3 = 1;// 240V Tap connected
    relay4 = 0;
    relay5 = 1;//injection on
    }
    if(gap5)
    {
    relay1 = 0;
    relay2 = 0;
    relay3 = 0;
    relay4 = 1;//270V Tap connected
    relay5 = 1;//injection on
    }
    }
    else if(line_voltage>272 && line_voltage<305)
    {
    relay1 = 0;
    relay2 = 0;
    relay3 = 0;
    relay4 = 1;// 270V Tap connected
    relay5 = 1;//injection on
    gap4 = 0;
    gap5 = 1;
    }
    }



    }//while(1)
    }//void main()​

    دیدگاه


      #3
      سلام

      اولا باید کد هاتون رو توی قالب کد بزارید تا منظم بشند. (پس پست رو اصلاح کنید)
      دوما آیا شما میتونید یک برنامه ی ساده تر (مثلا چشمک زدن یک ال ای دی) رو اجرا کنید؟ اگه نه پس دو امکان وجود :
      ۱. سخت افزار مشکل داره.
      ۲. مقدار فیوز بیت ها مشکل داره.

      چطوری فیوز بیت ها و واحد های جانبی رو تنظیم کردید ؟ با MCC یا به صورت دستی؟

      دیدگاه


      • mehranal
        mehranal دیدگاه ثبت کرد
        Editing a comment
        متاسفانه اطلاعات جامعی در مورد تغییر ندارم که موندم اگه محبت کنید راهنمایی کنید ممنون میشم

      #4
      نوشته اصلی توسط mehranal نمایش پست ها
      با عرض سلام و وقت بخیر
      بنده موردی دارم که بعد از اینکه میکرو pic16f676را پراگرام میکنم کد اجرا نمیشه تو پروگرامر دیگر هم امتحان کردم اجرا نمیشه مدار هم درست بسته شده نمی‌دونم مشکل چی هست کسی بلده راهنمایی کنه
      با سلام و احترام
      مهمترین عاملی که معمولا در اینگونه مواقع مشکل ایجاد میکنه (جدا از منطق برنامتون که دقیق بررسیش نکردم ) عدم پروگرام درست بیتهای مربوط به کانفیگ میکرو هست و در بین این بیتها مهمترین بیتها اونایی هستند که مربوط به تنظیمات کلاک میکرو میباشند. عدم تنظیم درست این بیتها میتونه باعث بشه که برنامه یا اصلا کار نکنه و یا با زمانبندی غلط کار کنه. این بیتها در سری AVR نامشون Fuse Bits و در سری PIC نامشون Configuration Bits هست. اگر تنظیمات مربوط به کلاک رو در این بخش انجام نداده اید میتونه باعث بشه که برنامه شما به درستی اجرا نشه مخصوصا اینکه در برنامتون Delay های طولانی هم استفاده شده. ابتدا شما باید با توجه به روشی که برای کلاک میکرو انتخاب کرده اید مقدار این رجیستر را که در میکروی مورد نظر شما در آدرس 2007h قرار داره محاسبه کنید و در مرحله بعد به کمک پروگرامرتان بررسی کنید که آیا تنظیمات به درستی در میکرو ثبت شده یا نه. توجه کنید که این رجیستر فقط از طریق پروگرامر در دسترس میباشد.
      برای مطمئن شده از اینکه تنظیمات کلاک درست هست یا نه آسونترین پیشنهادی که میتونم بهتون بدم هم اینه که از یک پایه خروجی خالی استفاده کنید و یک LED بهش وصل کنید و در ابتدای برنامتون به کمک همون دستور Delay چند بار با فواصل یک ثانیه اونرو خاموش و روشن کنید. اگر دیدید که طبق زمانبندی درست این عمل انجام میشه بدونید که تنظیمات مربوط به کلاک درسته.
      موفق باشید.

      دیدگاه


      • mehranal
        mehranal دیدگاه ثبت کرد
        Editing a comment
        شاید یکی از دلایل نبودن مرجع مناسب ، یکسان نبودن تنظیم فیوز بیت ها در کامپایلر های مختلف هست ، شما میتونید کمک کنید موردم رو حل کنم

      #5
      نوشته اصلی توسط evergreen نمایش پست ها

      با سلام و احترام
      مهمترین عاملی که معمولا در اینگونه مواقع مشکل ایجاد میکنه (جدا از منطق برنامتون که دقیق بررسیش نکردم ) عدم پروگرام درست بیتهای مربوط به کانفیگ میکرو هست و در بین این بیتها مهمترین بیتها اونایی هستند که مربوط به تنظیمات کلاک میکرو میباشند. عدم تنظیم درست این بیتها میتونه باعث بشه که برنامه یا اصلا کار نکنه و یا با زمانبندی غلط کار کنه. این بیتها در سری AVR نامشون Fuse Bits و در سری PIC نامشون Configuration Bits هست. اگر تنظیمات مربوط به کلاک رو در این بخش انجام نداده اید میتونه باعث بشه که برنامه شما به درستی اجرا نشه مخصوصا اینکه در برنامتون Delay های طولانی هم استفاده شده. ابتدا شما باید با توجه به روشی که برای کلاک میکرو انتخاب کرده اید مقدار این رجیستر را که در میکروی مورد نظر شما در آدرس 2007h قرار داره محاسبه کنید و در مرحله بعد به کمک پروگرامرتان بررسی کنید که آیا تنظیمات به درستی در میکرو ثبت شده یا نه. توجه کنید که این رجیستر فقط از طریق پروگرامر در دسترس میباشد.
      برای مطمئن شده از اینکه تنظیمات کلاک درست هست یا نه آسونترین پیشنهادی که میتونم بهتون بدم هم اینه که از یک پایه خروجی خالی استفاده کنید و یک LED بهش وصل کنید و در ابتدای برنامتون به کمک همون دستور Delay چند بار با فواصل یک ثانیه اونرو خاموش و روشن کنید. اگر دیدید که طبق زمانبندی درست این عمل انجام میشه بدونید که تنظیمات مربوط به کلاک درسته.
      موفق باشید.
      هرچی سایت و نوشته درباره فیوز بیت بود خوندم ولی چیزی دستگیرم نشد

      دیدگاه


        #6
        نوشته اصلی توسط mehranal نمایش پست ها

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

        دیدگاه


          #7
          نوشته اصلی توسط evergreen نمایش پست ها

          با سلام مجدد
          همانطور که خدمتتان گفتم در مورد میکروهای PIC اسم آن Configuration Bits میباشد. فیوز بیتها مربوط به سری AVR میباشند. در قدم اول باید در پروگرامرتان ببینید که محل دسترسی به این رجیستر کجای برنامه پروگرامر میباشد و بعد مقدار آنرا بخوانید. اگر نوع پروگرامرتان و برنامه آنرا هم بگویید شاید بتوان در صورتی که راهنمای آن در اینترنت موجود باشد بیشتر راهنمایی کرد.
          موفق باشید.
          پروگرامر pickit2 نوآوران هستش با کامپایلر mikrok 7.6

          دیدگاه


            #8
            نوشته اصلی توسط mehranal نمایش پست ها

            پروگرامر pickit2 نوآوران هستش با کامپایلر mikrok 7.6
            با سلام مجدد
            باید تنظیمات را در قسمت Edit Project از منوی Project در کمپایلر MikroC انجام دهید. در مدارتان برای بخش کلاک بصورت سخت افزاری از چه حالتی استفاده میکنید؟

            دیدگاه


              #9
              نوشته اصلی توسط evergreen نمایش پست ها

              با سلام مجدد
              باید تنظیمات را در قسمت Edit Project از منوی Project در کمپایلر MikroC انجام دهید. در مدارتان برای بخش کلاک بصورت سخت افزاری از چه حالتی استفاده میکنید؟
              سلام مجدد این بخشی که فرمودین تک تک تغییر دادم پروگرام کردم تست شد نمی‌دونم چی اشتباهه کلافم کرد شما میتونید کد project تنظیماتشو برام انجام بدین اگه زحمتی نشه براتون کد کامل هم نیاز بود ارسال میکنم و هگز تولید شده توسط شمارو تست کنم

              دیدگاه


                #10
                نوشته اصلی توسط mehranal نمایش پست ها

                سلام مجدد این بخشی که فرمودین تک تک تغییر دادم پروگرام کردم تست شد نمی‌دونم چی اشتباهه کلافم کرد شما میتونید کد project تنظیماتشو برام انجام بدین اگه زحمتی نشه براتون کد کامل هم نیاز بود ارسال میکنم و هگز تولید شده توسط شمارو تست کنم
                این کد و مدار توسط یک سایت خارجی ارایه شده برا مدار استابلایزر هستش که با مقایسه ولتاژ رله هارو فعال می‌کنه

                دیدگاه


                  #11
                  نوشته اصلی توسط mehranal نمایش پست ها

                  سلام مجدد این بخشی که فرمودین تک تک تغییر دادم پروگرام کردم تست شد نمی‌دونم چی اشتباهه کلافم کرد شما میتونید کد project تنظیماتشو برام انجام بدین اگه زحمتی نشه براتون کد کامل هم نیاز بود ارسال میکنم و هگز تولید شده توسط شمارو تست کنم
                  با سلام مجدد
                  دوست عزیز اگر قرار باشه با هر کار نکردن کدی کلافه بشی که نمیتونی در این راه پیش بری. تو نوشته های قبلی چند راه حل و سوال بود که جوابش رو ندادی. ولی بطور کلی خدمتتان میگم در اینگونه مواقع بجای کلافه شدن باید یک به یک عواملی که میتونه باعث کار نکردن بشه رودر بیارید و مطمئن بشید که مشکل از اون هست یا نه. اگه تمایل دارید که یاد بگیرید باید خودتون این مسیر رو برید.

                  1- آیا میکرویی که استفاده میکنم سالم است و به درستی پروگرام میشود؟
                  - Verify کردن کد در پروگرامر.

                  2- آیا اشکال نرم افزاری از خود برنامه است یا مشکلاتی مانند همان بیتهای کانفیگ؟
                  - تست یک برنامه ساده چشمک زدن LED.
                  - تست برنامه در محیط شبیه سازی مثل پروتئوس.

                  3- آیا سخت افزاری که بستم سالم و نقشه آن صحیح است؟ تک تک قطعات آن سالم هستند؟
                  - بررسی دوباره نقشه و اطمینان از صحت اتصالات و خطوط تغذیه.
                  - در صورت لزوم تست مجدد تک تک قطعات.
                  - جایگزینی و تست میکروی دیگر در صورت لزوم.

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

                  موفق باشید.

                  دیدگاه

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