ايران ويج

نسخه‌ی کامل: مشکل با hmtr
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام خدمت دوستان گرامی
من تو پروتئوس میخاستم از ماژول hmtr استفاده کنم اما کتابخونه شو نداشتم، بعد یکی از دوستام پیشنهاد داد که از دو جفت ماژول hmt , hmr استفاده کنم تا ببینم ارتباط بیسیم برقرا میشه یا نه. پروژم اینطوری شد.
[attachment=14218]
حالا یه سوال اول بپرسم که این کاری کردم اصلا درست هست یا نه؟
بعدم به یه مشکلی که بر خوردم این بود که کلا led سمت راستی روشن نمی شه.یعنی قرار بود بافشار دادن هر دکمه led اون یکی زیر پردازنده روشن بشه، و یه چیز دیگه هم که بود اینکه با فشار دادن هر کدوم از دکمه ها led سمت چپی روشن میشد
فایل کامل پروتئوس و کد ویژنم میزام اگه زحمتی نیس یه نگاهی بندازین دوستان.[attachment=14217]




سلام
یه نکته رو بگم که خیلی از ماژول ها توی پروتوس کار نمیکنن و یه تعداد محدودی توی پروتئوس فعال هستند
نکته دوم اینکه ماژول hmt hmr و ماژول hmtrp دقیقا شبیه به هم هستند و شما میتونید کدی رو که برای hmt نوشتی روی hmtrp استفاده کنی
تنها تفاوت این دوتا ماژول اینه که
hmt قرستنده هستش
hmr گیرنده هستش
ولی hmtrp هم فرستنده هستش هم گیرنده

و اما بر میگردیم به شماتیک
برای تست اولیه مدار شما یدونه ترمینال بیار وصل کن به hmt و یدونه ترمینال بیار وصل کن به hmr بعد توی تریمینال متصل به hmt یه متن تایپ کن اگر توی hmr متنی رو مشاهده کردی مرحله ی بعد بقیه شرایط رو بررسی کن

من روی سیستمم پروتئوس و کدویژن ندارن اگر نتونستین مدار رو درست کنین بگو تا نصب کنم و کمک کنم بهتون.

و یه سوال اینکه چرا شما توی کدتون بلاک main رو جابجا کردید؟؟
موفق باشید چشمک - بهینه شده برای ورژن جدید
صلام
 10 صال بیش ای ماژولارو کار کردم. فقط کد نویصی باید چنتا ترفند بکار ببرید. کدش رو همیجا بزارید لطفا
(۱۵-خرداد-۱۳۹۸, ۰۹:۰۲:۲۷)hadikh73 نوشته است: [ -> ]سلام
یه نکته رو بگم که خیلی از ماژول ها توی پروتوس کار نمیکنن و یه تعداد محدودی توی پروتئوس فعال هستند
نکته دوم اینکه ماژول hmt hmr و ماژول hmtrp دقیقا شبیه به هم هستند و شما میتونید کدی رو که برای hmt نوشتی روی hmtrp استفاده کنی
تنها تفاوت این دوتا ماژول اینه که
hmt قرستنده هستش
hmr گیرنده هستش
ولی hmtrp هم فرستنده هستش هم گیرنده

و اما بر میگردیم به شماتیک
برای تست اولیه مدار شما یدونه ترمینال بیار وصل کن به hmt و یدونه ترمینال بیار وصل کن به hmr بعد توی تریمینال متصل به hmt یه متن تایپ کن اگر توی hmr متنی رو مشاهده کردی مرحله ی بعد بقیه شرایط رو بررسی کن

من روی سیستمم پروتئوس و کدویژن ندارن اگر نتونستین مدار رو درست کنین بگو تا نصب کنم و کمک کنم بهتون.

و یه سوال اینکه چرا شما توی کدتون بلاک main رو جابجا کردید؟؟
موفق باشید چشمک - بهینه شده برای ورژن جدید
راجب به کد، فک کنم کدای اشتباهو فرستادم  خنده بلد − بهینه شده برای ورژن جدید
[attachment=14219]
این فایل درستش هست.
این کاری که گفتید وانجام دادم مشکلی که هست اینکه وقتی از یه ماژول hmt hmr استفاده میکنم درست کار میکنه مدار ولی وقتی 2 تا ماژول میزارم کلا قاظی میکنه حتی ترمینالم که میزام همین طور پیش میره.
(۱۵-خرداد-۱۳۹۸, ۱۴:۱۴:۰۸)Ambassador نوشته است: [ -> ]صلام
 10 صال بیش ای ماژولارو کار کردم. فقط کد نویصی باید چنتا ترفند بکار ببرید. کدش رو همیجا بزارید لطفا
کد برای ریزپردازنده ی سمت چپی:
کد:
void main(void){

          char led = 'w';

while(1)
{

      
          if(PINB.0){
            putchar('r');
          }         
                               
          if(!PINB.0){
            putchar('s');
          }     
          led = getchar();
          if(led == 'g')
                PINA.0 = 1;
          else if(led == 'f')
                PINA.0 = 0;
      }
}
کد برای ریزپردازنده ی سمت راستی:
کد:
void main(void){
    
    char led1 = 'w';

 while(1){
           
        if(PINB.0){
            putchar('g');
        }
            
        if(!PINB.0){
            putchar('f');
        }
            
        led1 = getchar();
        
        if(led1 == 'r')
                PINA.0 = 1;
         else if(led1 == 's')
                 PINA.0 = 0;

      }
}
(۱۵-خرداد-۱۳۹۸, ۲۲:۳۶:۲۴)soji نوشته است: [ -> ]راجب به کد، فک کنم کدای اشتباهو فرستادم  خنده بلد − بهینه شده برای ورژن جدید

این فایل درستش هست.
این کاری که گفتید وانجام دادم مشکلی که هست اینکه وقتی از یه ماژول hmt hmr استفاده میکنم درست کار میکنه مدار ولی وقتی 2 تا ماژول میزارم کلا قاظی میکنه حتی ترمینالم که میزام همین طور پیش میره.
خب پروتئوسه دیگه خنده بلد − بهینه شده برای ورژن جدید خنده بلد − بهینه شده برای ورژن جدید ازش چه توقعی داری خنده بلد − بهینه شده برای ورژن جدید خنده بلد − بهینه شده برای ورژن جدید 
الان ارتباط دو ماژول خوبه دیگه
این مراحل رو برو
1-شما کدت رو برای یه ماژول فرستنده و یه گیرنده بنویس
2-دوتا ماژول رو حذف کن
3- دوتا میکرو رو با سیم به هم وصل کن ینی پایه هایی که باید به دوتا ماژول وصل شه رو مستقیم بزن به همدیگه

اگر اینجوری جواب بگیری ینی کدت درسته

در واقع ارتباط بین ماژول ها همون uart هستش و وقتی شما بین دوتا میکرو یوآرت برقرار کنی ینی کدت درسته و میتونی بری توی وافعیت تست بگیری

و اینکه به پروتئوس خیلی اعتماد نکن خیلی سوتی میده
(۱۵-خرداد-۱۳۹۸, ۲۲:۴۴:۴۵)soji نوشته است: [ -> ]
(۱۵-خرداد-۱۳۹۸, ۱۴:۱۴:۰۸)Ambassador نوشته است: [ -> ]صلام
 10 صال بیش ای ماژولارو کار کردم. فقط کد نویصی باید چنتا ترفند بکار ببرید. کدش رو همیجا بزارید لطفا
کد برای ریزپردازنده ی سمت چپی:
کد:
void main(void){

          char led = 'w';

while(1)
{

      
          if(PINB.0){
            putchar('r');
          }         
                               
          if(!PINB.0){
            putchar('s');
          }     
          led = getchar();
          if(led == 'g')
                PINA.0 = 1;
          else if(led == 'f')
                PINA.0 = 0;
      }
}
کد برای ریزپردازنده ی سمت راستی:
کد:
void main(void){
    
    char led1 = 'w';

 while(1){
           
        if(PINB.0){
            putchar('g');
        }
            
        if(!PINB.0){
            putchar('f');
        }
            
        led1 = getchar();
        
        if(led1 == 'r')
                PINA.0 = 1;
         else if(led1 == 's')
                 PINA.0 = 0;

      }
}
برای آخر این دوتا کد و داخل حلقه یه دیلی 100 میلی ثانیه بذار
شما داری به سرعت ارسال میکنی و امکان خطا وجود داره

خیلی وقت ها کدم سالم بوده ولی اجرا نمیشده بعد یه دیلی کوچیک گذاشتم(گاهی اوقات 4 میلی ثانیه هم جوابگو بوده) و کد درست عمل کرده، این چیز علمی نیست ولی تجربه بهم ثابت کرده
این ماژولا چون زیاد نویز می گیرد یعنی وقتی مدار روشن میشه همش دارن کدهای مزخرف میگیرن. برا همین کدی که می خوای ارصال کنی بنداز داخل حلقه مثلا  50 بار ارصال بشه و طرف گیرنده هم دریافت رو بنداز داخل یه حلقه کوتاه تر مثلا 5 بار و اگه این دریافت رو با کدی که ارصالش کردی مقایصه کن و اگر با همون ارصالی برابر بود کار مورد نظرت رو انجام بده