قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

masul
:: مهندس ::
تاريخ التسجيل: Jun 2006
الدولة: اليمن
المشاركات: 43
نشاط [ masul ]
قوة السمعة:0
قديم 31-12-2012, 07:28 PM المشاركة 1   
ha مشكله في حرق الكود المحتوي على الامر eeprom Twitter FaceBook Google+



السلام عليكم ورحمة الله وبركاتة
لقد كتبت برنامج اظهار رقمين سفن سيجنت يعد تنازلي على البيك pic16f628a والمحاكات على البروتس عملت تمام
ثم قمت بحرق الكود على البيك
ونفذت التجربة على الواقع وعملت تمام
ثم اضفت الى الكود اوامر الذاكرة بحيث يحتفظ بآخر رقم تم عرضه على السفن سيجمنت ، وعملت المحاكاه على البروتس واشتغل تمام
وقمت بحرق الكود على البيك
ونفذت التجربة على الواقع فلم تعمل
عندما الغي اوامر الذاكره تشتغل على ارض الواقع تمام
وعندما اضيف اوامر الذاكره لا تشتغل على ارض الواقع
واقصد باوامر الذاكره الامر eeprom

ارجو التوضيح لماذا هل هناك اعدادات خاصة مثلاً.
وشكرا جزيلا

اعلانات

masul
:: مهندس ::
تاريخ التسجيل: Jun 2006
الدولة: اليمن
المشاركات: 43
نشاط [ masul ]
قوة السمعة:0
قديم 05-01-2013, 02:47 PM المشاركة 2   
افتراضي


الله يرضى عليكم
ماهي الاعدادات التي اضعها للمتحكم pic16f628a
حيث ان البرنامج يحتور على امر الذاكره eeprom
بحيث انه يشتغل على ارض الواقع بدون مشاكل

لان البرنامج يشتغل على المحاكاة بدون مشاكل ، اما على الواقع لم يشتغل وعندما احذف امر الذاكره eeprom من البرنامج يشتغل بدون مشاكل على ارض الواقع.

وهذا رابط البرنامج والمحاكاة والهكس على الصفحة التالية
http://www.qariya.com/vb/showthread....726#post708726

وهذه الروابط للبرنامج في موقع التحميل
http://www.mediafire.com/?8bwo66r3xf9j8ay
رابط آخر
http://www.4shared.com/rar/YltGyNnh/MyProject1.html

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

masul
:: مهندس ::
تاريخ التسجيل: Jun 2006
الدولة: اليمن
المشاركات: 43
نشاط [ masul ]
قوة السمعة:0
قديم 08-01-2013, 07:42 PM المشاركة 3   
افتراضي


الحمدلله
اظنني وجدت الحل
لقد قمت بنقل امر القراءة من الذاكرة الى داخل اللوب في الاخير
هذه صورة المشروع
الزر الواسط لتنقيص الرقم ، الزر على اليمني لزيادة الرقم ، الزر على الشمال لتشغيل الداره
يجب ان يكون الجمبر JP1 مغلق ON والجمبر JP2 مفتوح OFF حتى تشتغل الدائره


حيث كان الكود صاحب المشكلة هكذا
كود:
  

  const unsigned short DIGIT[]={63,6,91,79,102,109,125,7,127,111};
void Display  (int Number)
         {
            PORTA.F1 = 0;
            PORTA.F0 = 1;
            PORTB = DIGIT [Number%10] ;    // لإظهار الآحاد
            delay_ms (4) ;
            PORTb = 0;

            PORTA.F0 = 0 ;
            PORTA.F1 = 1 ;
            PORTB = DIGIT [Number/10] ;     // لإظهار العشرات
            delay_ms (4);
            PORTb = 0;

         }
 

 void init(){

       cmcon=0x07;
       trisa.f0=0; trisa.f1=0;
       porta.f0=0; porta.f1=0;
       trisb = 0;  portb = 0;
       trisa.f2 =trisa.f3 =trisa.f4 =trisa.f5 =trisa.f6 =1;

       trisa.f7=0; porta.f7=0;
          }
void main ()
 {
    unsigned short N = 0 ;
          int Number = 0 ,eep,read;

    init();
             eep=eeprom_read(0x2);
             Number=eep;

            loop:
            {


               Display (Number);

                         if(porta.f2==0){ while(porta.f2==0)Display (Number);
                                             Number++; if(Number==100)Number=0;
                                             eeprom_write(0x2,Number);
                                          }
                         if(porta.f3==0){ while(porta.f3==0)Display (Number);
                                             Number--; if(Number<0) Number=99;
                                             eeprom_write(0x2,Number);
                                          }
                         if(porta.f4==0&&porta.f5==1&&porta.f6==0){ while(porta.f4==0) Display (Number);
                                             read=eeprom_read(0x2);
                                             porta.f7=1;
                                             Number=read;
                                             while(Number>0){ Number--;
                                                              for(N=0;N<125;N++) {
                                                              Display (Number);
                                                                                  if(porta.f4==0){while(porta.f4==0){Display(Number);}
                                                                                                 porta.f7=0;
                                                                                                 Number=eeprom_read(0x2);
                                                                                                 Display(Number);
                                                                                                 goto loop;
                                                                                                }
                                                                                 }

                                                            }
                                                    porta.f7=0;
                                                   read=eeprom_read(0x2);
                                                   Number=read;
                                                   Display(Number);

                                        }
             
            } goto loop;
 }
ثم اصبح هكذا بعد التحويل

كود:
 
  const unsigned short DIGIT[]={63,6,91,79,102,109,125,7,127,111};
void Display  (int Number)
         {
            PORTA.F1 = 0;
            PORTA.F0 = 1;
            PORTB = DIGIT [Number%10] ;    // &#225;&#197;&#217;&#229;&#199;&#209; &#199;&#225;&#194;&#205;&#199;&#207;
            delay_ms (4) ;
            PORTb = 0;

            PORTA.F0 = 0 ;
            PORTA.F1 = 1 ;
            PORTB = DIGIT [Number/10] ;     // &#225;&#197;&#217;&#229;&#199;&#209; &#199;&#225;&#218;&#212;&#209;&#199;&#202;
            delay_ms (4);
            PORTb = 0;

         }
 

 void init(){

       cmcon=0x07;
       trisa.f0=0; trisa.f1=0;
       porta.f0=0; porta.f1=0;
       trisb = 0;  portb = 0;
       trisa.f2 =trisa.f3 =trisa.f4 =trisa.f5 =trisa.f6 =1;

       trisa.f7=0; porta.f7=0;
          }
void main ()
 {
    unsigned short N = 0 ;
          int Number = 0 ,eep,read;

    init();


            loop:
            {


               Display (Number);

                         if(porta.f2==0){ while(porta.f2==0)Display (Number);
                                             Number++; if(Number==100)Number=0;
                                             eeprom_write(0x2,Number);
                                          }
                         if(porta.f3==0){ while(porta.f3==0)Display (Number);
                                             Number--; if(Number<0) Number=99;
                                             eeprom_write(0x2,Number);
                                          }
                         if(porta.f4==0&&porta.f5==1&&porta.f6==0){ while(porta.f4==0) Display (Number);
                                             read=eeprom_read(0x2);
                                             porta.f7=1;
                                             Number=read;
                                             while(Number>0){ Number--;
                                                              for(N=0;N<125;N++) {
                                                              Display (Number);
                                                                                  if(porta.f4==0){while(porta.f4==0){Display(Number);}
                                                                                                 porta.f7=0;
                                                                                                 Number=eeprom_read(0x2);
                                                                                                 Display(Number);
                                                                                                 goto loop;
                                                                                                }
                                                                                 }

                                                            }
                                                    porta.f7=0;
                                                   read=eeprom_read(0x2);
                                                   Number=read;
                                                   Display(Number);

                                        }
             eep=eeprom_read(0x2);
             Number=eep;
            } goto loop;
 }
هذا الكود الاخير اشتغل معي على الواقع طبيعي
الحمدلله
الحمدلله
الحمدلله رب العالمين

يبقى مع الان ان اعمل له زر رابع لعمل سليب sleep للبرنامج للحفاظ على الطاقة (عمل اطفاء وتشغيل للداره)
واعتقد لابد من عمل مقاطعة فيها امر سليب . وهذا امر لا اعرفه
والله الموفق

ارجو المساعدة بشرح الامر سليب والمقاطعة (المقاطعة اعرفها قليلا)
وشكرا جزيلا لكل من ساعدني وشجعني حيث كان لهم الفضل بعد الله فيما وصلت اليه.


masul
:: مهندس ::
تاريخ التسجيل: Jun 2006
الدولة: اليمن
المشاركات: 43
نشاط [ masul ]
قوة السمعة:0
قديم 08-04-2013, 06:53 PM المشاركة 4   
افتراضي


الحمد لله رب العالمين
لقد اكملت المشروع
وهذا فيديو له


وهذه الصور
http://upload.qariya.info/images/qar...8c8c087974.jpg
http://upload.qariya.info/images/qar...b9afdd9109.jpg
http://upload.qariya.info/images/qar...012c2b278f.jpg

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 02:42 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025