ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

صفحه 1 از 3 123 آخرین
نمایش نتایج: از 1 به 10 از 22
  1. #1
    2008/04/05
    تهران
    1,095
    20

    تغییر بیتها در MIkroc

    سلام
    من یه پروژه تو زندگی با pic انجام دادم که همینه. مشکل اینجاست که وقتی یه بیت از PORTC رو تغییر میدم بقیه بیت ها ممکنه صفر کنن.
    میکرو PIC16F72 هستش. البته من از اون پایه ها که صفر میشن زیاد بار میکشم.
    حدس من اینه که میکرو وقتی میخواد یه بیت رو تغییر بده میاد از پورت میخونه و پس از تغییر اون بیت دوباره تو پورت مینویسه. حالا چون این پایه ها دچار افت ولتاژ شدن موقع خوندن صفر خونده میشن و ...
    مگه پورت های این میکرو bit accessible نیستن؟ این اتفاق اصلا منطقی نیست برای من.
    کامپایلر mikro c هستش. ممکنه ضعف اون باشه؟
    بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
    اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست
  2. #2
    2007/11/22
    تبریز
    2,483
    492

    پاسخ : تغییر بیتها در MIkroc

    سلام دوست عزیز.بعید میدونم کامپایلر MikroC تو یه همچین موردی ایرادی بده.کاش یه خرده بیشتر توضیح میدادین که چیکار میکنین؟اگه میتونین از یه طبقه ترانزیستور به عنوان بافر استفاده کنین که خب چه بهتر اگه نه،به هر پین میتونین 25mA جریان وارد بکنین.واسه تغییر پورتC هم که خب مشخصه؛احتیاطا و البته جسارتا با دستورTRISC=0 کل پورت خروجی میشه و در صورت نیازTRISC.bx که به جایxشماره پین رو مینویسین.واسه تغییر وضعیت پین خروجی PORTC=xxویا در صورت نیاز PORTC.bx=1 or 0 که تنها یه پین(x) رو تغییر میده.امیدوارم به دردتون بخوره. :redface:

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت



    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

  3. #3
    2008/04/05
    تهران
    1,095
    20

    پاسخ : تغییر بیتها در MIkroc

    سلام
    مرسی از جوابتون .
    آخه کدش زیاده.


    کد:
    #define RELAY_ON()  {PORTC.F3=0;TRISC.F3=0;}
    #define RELAY_OFF()  {PORTC.F3=1;TRISC.F3=1;}
    
    
    // all ports outputs
    #define _7SEG_A      PORTA.F2
    #define _7SEG_B      PORTA.F5
    #define _7SEG_C      PORTB.F2
    #define _7SEG_D      PORTB.F4
    #define _7SEG_E      PORTB.F5
    #define _7SEG_F      PORTA.F4
    #define _7SEG_G      PORTB.F1
    #define _7SEG_DP     PORTB.F3
    
    #define _7SEG_COM1    PORTC.F0
    #define _7SEG_COM2    PORTC.F1
    #define _7SEG_COM3    PORTB.F7
    
    // all ports configs
    #define _7SEG_A_TRIS   TRISA.F2
    #define _7SEG_B_TRIS   TRISA.F5
    #define _7SEG_C_TRIS   TRISB.F2
    #define _7SEG_D_TRIS   TRISB.F4
    #define _7SEG_E_TRIS   TRISB.F5
    #define _7SEG_F_TRIS   TRISA.F4
    #define _7SEG_G_TRIS   TRISB.F1
    #define _7SEG_DP_TRIS   TRISB.F3
    
    #define _7SEG_COM1_TRIS  TRISC.F0
    #define _7SEG_COM2_TRIS  TRISC.F1
    #define _7SEG_COM3_TRIS  TRISB.F7
    
    
    void setseg_display(char val)
    {
       _7SEG_A = _7SEG_A_TRIS = (val & 0x01) ? 0 : 1;
       _7SEG_B = _7SEG_B_TRIS = (val & 0x02) ? 0 : 1;
       _7SEG_C = (val & 0x04) ? 0 : 1;
       _7SEG_D = (val & 0x08) ? 0 : 1;
       _7SEG_E = (val & 0x10) ? 0 : 1;
       _7SEG_F = (val & 0x20) ? 0 : 1;
       _7SEG_G = (val & 0x40) ? 0 : 1;
       _7SEG_DP = (val & 0x80) ? 0 : 1;
    }
    
    void refresh_display()
    {
       static char i = 0 , mask = 1;
       _7SEG_COM1 = _7SEG_COM2 = _7SEG_COM3 = 0;
       _7SEG_COM1_TRIS = _7SEG_COM2_TRIS = _7SEG_COM3_TRIS = 0;
    
       setseg_display( decoder[disbuf[i]]&mask );
    
       if( i == 0 )
         _7SEG_COM1 = 1;
       if( i == 1 )
         _7SEG_COM2 = 1;
       if( i == 2 )
         _7SEG_COM3 = 1;
    
       mask = mask << 1;
       if( mask == 0 )
       {
         mask = 1;
         i++;
         if( i == 3 )
           i = 0;
       }
    }


    اگه ماکر های مربوط به رله رو (RELAY_ON و RELAY_OFF) قبل از refresh_display() صدا کنم مشکلی نیست. ولی موقعی که بعد از refresh_display() صدا میکنم دوتا از سگمنت ها که پایه com اونها رو پورت c هست خیلی کم نور میشن. علتش هم همونه که وقتی ماکروهای رله میخوان کار کنن پایه های com سون سگمنت که رو پورت c هستن ریست میشن.
    بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
    اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست
  4. #4
    2007/11/22
    تبریز
    2,483
    492

    پاسخ : تغییر بیتها در MIkroc

    ببخشید یه مورد نسبتا عجیب دیدم! اولین بارم هست که میبینم TRISX.Fx=x معمولا b. استفاده نمیکنن؟
    وقتی که میخواین رله رو خاموش کنین چرا جهت پورت رو تغییر میدین؟
    از کدوم میکرو استفاده میکنین؟( خسته نباشم! الان یادم افتاده بپرسم! :mrgreen
    میتونین رله رو به یه پورت دیگه وصل کنین؟
    و اینکه رله رو با ترانزیستورpnp درایو میکنین؟چرا؟(البته مهم هم نیستها! تفننی پرسیدم!)

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت



    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

  5. #5
    2008/04/05
    تهران
    1,095
    20

    پاسخ : تغییر بیتها در MIkroc

    نقل قول نوشته اصلی توسط شاهرخ
    ببخشید یه مورد نسبتا عجیب دیدم! اولین بارم هست که میبینم TRISX.Fx=x معمولا b. استفاده نمیکنن؟
    وقتی که میخواین رله رو خاموش کنین چرا جهت پورت رو تغییر میدین؟
    از کدوم میکرو استفاده میکنین؟( خسته نباشم! الان یادم افتاده بپرسم! :mrgreen
    میتونین رله رو به یه پورت دیگه وصل کنین؟
    و اینکه رله رو با ترانزیستورpnp درایو میکنین؟چرا؟(البته مهم هم نیستها! تفننی پرسیدم!)
    من که اولین بارمه با pic کار میکنم سرچ کردم دیدم باید PORx.Fn بزارم. تازه وقتی از portx.bn استفاده می کنم خطا میده.
    در مورد رله یکم توضیحش سخته باید کل مدار رو بزارم و بگم. مدار محافظ دیجیتالیه.
    pic16f72 هستش.
    بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
    اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست
  6. #6
    2007/11/22
    تبریز
    2,483
    492

    پاسخ : تغییر بیتها در MIkroc

    سلام.میتونین مدار(شماتیک یا بلوک دیاگرام) رو واسم ایمیل بزنین؟یا همینجا بزارین؟فرقی نمیکنه...
    shahrokhmostaghimi@gmail.com
    مگه کامپایلرmikroCنیست؟نبایدErrorب ه! البته الان امتحان کردم f. با b. هیچ فرقی نمیکنه!
    اینکه ترتیب وصل کردن پایه ها پشت سر هم نیست به خاطر PCB هست؟
    راستی الان یه بار دیگه به اولهای برنامه که نگاه کردم دیدم از پایهA.4 استفاده کردین.این پایهOpen Drain هست.موقع خروجی شدن باید با10kاهم Pull up بشه.
    و الان هم یه بار دیگه با دقت بیشتر به برنامه نگاه کردم... :question:چرا وسط برنامه Config پورت رو تغییر میدین؟ oo:قراره دیتایی خونده بشه؟

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت



    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

  7. #7
    2007/11/22
    تبریز
    2,483
    492

    پاسخ : تغییر بیتها در MIkroc

    آقا یه چیزی الان یادم افتاد.تو اول برنامه رجیسترهای ADCON0=0 و ADCON1=255 قرار بده.چون پورتAپیشفرض آنالوگ هست باADCON1 مشخص میکنی پورتA دیجیتال باشه و با ADCON0 هم ماژولADC رو خفه ش میکنی...البته احتیاطا!! :mrgreen:

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت



    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

  8. #8
    2008/04/05
    تهران
    1,095
    20

    پاسخ : تغییر بیتها در MIkroc

    سلام خیلی ممنون که اینقدر برنامه دقیق بررسی کردید
    ببخشید دیر جواب میدم. امروز شدیدا سرما خوردم از صبح سردرد دارم و ...
    من هیچی از pic نمیدونستم و قیمت ارزون pic16f72 باعث شد از این میکرو استفاده کنم. برنامه ای رو هم که نوشتم همش با آزمون و خطا و مطالعه تکه تکه دیتاشیت بود که به دل خودم نچسبید. حس میکنم به پروژه مسلط نیستم.
    یه محافظ دیجیتال برقه که چون کار تیراژه باید تو هزینه ها خیلی صرفه جویی میشد و همه چی تو یه برد کوچیک جا میشد. به همین دلیل پایه های سون سگمنت آند رو به هر جا که را داد وصل کردم.
    اولش کار خوب پیش میرفت تا اینکه مشکلم با پورت A شروع شد که سگمنت هایی که به این پورت بودن اصلا معلوم نبود چطور کار میکنن. البته من اونموقع شبیه سازی میکردم. این سگمنت ها یا روشن نمیشدن یا خاموش نمیشدن. تا با آزمون و خطا تونستم با دستکاری همزمان tris و port این سگمنت ها رو کنترل کنم(البته تو شبیه سازی، شاید اگه مدار رو عملا تست میکردم همونطور که انتظار داشتم با رجیستر port تنها میشد خاموش و روشن کردشون.

    mikroc 8.2 هستش.

    بله حواسم به پورت open drain هست.

    راجه به adc هم از مثال های خودش استفاده کردم فقط یکم دستکاری کردم شما یه بررسی کنید ببینید چطوریه مدارو هم فرستادم.


    کد:
      OPTION_REG = 0x84;    // Assign prescaler to TMR0
      TMR0 = 26;       // Timer0 initial value
      INTCON = 0xA0;      // Enable TMRO interrupt
      
      ADCON1 = 0b101;     // Configure analog inputs and Vref
      ADCON0 = 0xC0;      // Configure analog internal RC OSC


    الان میخوام برای قدم آخر watch dog اضافه کنم. دستور watch dog reset چیه؟ wdt ش با فیوزبیتاش فعال میشه دیگه؟ تو برنامه که نباید کاری غیر از ریستش انجام بدم.

    بازم ممنون
    بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
    اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست
  9. #9
    2007/11/22
    تبریز
    2,483
    492

    پاسخ : تغییر بیتها در MIkroc

    سلام.انشالله هرچه زودتر حالتون خوب بشه... :applause:
    آخرین ورژن MikroC الان تو سایتش نگاه کردم 5.3 هست! oo: شما با 2.8 کار میکنین یا 8.2 ؟؟؟
    یه سری مواردی تو شماتیک دیدم که جسارتا به نظرم درست نبود.مثلا راه اندازی رله و راه اندازی7seg اونها رو دارم تغییرش میدم.فکر نکنم تو هزینه نهایی تفاوت زیادی ایجاد بشه.
    با توجه به اینکه توفایل شماتیک که فرستادین،از خازنهای ظرفیت بالا استفاده کردین حدس میزنم کهPCB رو میخواین با همین پروتئوس طراحی بکنین؛که اگه قراره بردتون رو تعداد بالا باشه اکیدا توصیه میکنم که باAltium بردتون رو طراحی کنین.
    اگه وقت بکنم یه کد کوچولوی راه اندازی هم واسش مینویسم.
    با عرض شرمندگی تا الان موردی واسم پیش نیومده که لازم بشه ازWatch dog استفاده کنم! :mrgreen: واسه اون هم به تنظیمات رجیسترهای
    option_reg ؛pcon ،intcon و tmr0 یه نگاهی بندازین.تو تنظیمات پروژه کامپایلر هم میشه تنظیمش کرد.البته یه نکته هم در نظر بگیرین که تو بعضی پروگرمر ها موقع پروگرم کردن میکرو میشه Watchdog رو فعال یا غیر فعال کرد.بالاخره یکی از این 3 تا حالت جواب خواهد داد! :mrgreen:
    واسه چی از TL431 استفاده کردین؟ و اینکه اون دیود زنری که گذاشتین که ولتاژش 5.1 هست واسه محافظت گذاشتین دیگه؟

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت



    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

  10. #10
    2008/04/05
    تهران
    1,095
    20

    پاسخ : تغییر بیتها در MIkroc

    سلام خیلی ممنون
    ورژن میکرو C که همون 8.2 هست ولی نوشته 2002 تا 2008 نمیدونم فلسفش چیه؟


    زنر که رگولاتوره اگه نباشه 20 ولت میره تو میکرو.
    در مورد پیکربندی مدار هم من چند تا محافظ رو بررسی کردم و همگی بالاتفاق از رو دست هم همین سیستم رو پیاده کرده بودن که چند تا مزیت داره.
    مزیت اولش اینه که تو سیستم های قدیم وقتی رله راه میافتاد ولتاژ افت میکرد و تغذیه میکرو ضعیف میشد و شما مجبور بودی مقاومت های وات بالا سر را زنر بزاری و ...
    اما اینجا رله با مقاومت بایاس زنر موازی میشه و برعکس کمک میکنه ولتاژ تثبیت بشه.
    سیستم تغذیه اش و درایو رله به نظرم حرف نداره و من خودم خیلی باهاش حال کردم.

    این کامپایلر من چطوریه؟ یا خیلی قدیمیه یا خیلی جدید
    بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
    اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست
صفحه 1 از 3 123 آخرین
نمایش نتایج: از 1 به 10 از 22

موضوعات مشابه

  1. شیفت دادن بیتها
    توسط VILLA-7 در انجمن میکروکنترلرهای AVR
    پاسخ: 9
    آخرين نوشته: 2014/08/12, 13:57
  2. تبدیل بیتها به بایت
    توسط galaxyking در انجمن میکروکنترلرهای AVR
    پاسخ: 6
    آخرين نوشته: 2012/01/01, 00:21
  3. سوالی از لاک بیتها
    توسط درود در انجمن میکروکنترلرهای AVR
    پاسخ: 2
    آخرين نوشته: 2009/04/10, 17:21
  4. تنظیم فیوز بیتها
    توسط mehran_1360 در انجمن میکروکنترلرهای AVR
    پاسخ: 3
    آخرين نوشته: 2008/04/02, 14:57
  5. تنظیم فیوز بیتها
    توسط mehran_1360 در انجمن میکروکنترلرهای AVR
    پاسخ: 3
    آخرين نوشته: 2008/04/02, 12:14

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •