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





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









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









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





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

صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 13
  1. #1
    2013/02/25
    مشهد
    180
    33

    نوشتن بيش از 8 بيت در EEPROM هايي که 8 بيتي هستند

    با سلام خدمت همه دوستان ارزشمند و مدير محترم

    به اختصار عرض کنم که خانواده PIC16F87x که در بازار ايران بهتر در دسترس هستند تا بقيه و قيمتي هم منصفانه دارند ، حافظه EEPROM در دسترس کاربر براي خواندن و نوشتن در ضمن اجراي برنامه فقط هشت بيتي دارند. با اين مقدمه سوالم را اينگونه مطرح مي کنم که :

    در ضمن برنامه لازم شده است که با متغيرهايي بيش از 8 بيت کار کنيم و مي خواهيم آنها را در EEPROM ذخيره کنيم . چه راه کاري (که خودتان جواب گرفته باشيد) را سراغ داريد؟
    در محيط PICBASIC من اين کار را انجام داده ام و نتيجه نداشت:
    با فرض اينکه متغير ما P var word باشد
    1) براي ذخيره و خواندن Write 0,p.LowByte & Write 2,p.HighByte
    و منطقاً Read2,p.HighByte
    2) شيفت دادن به اندازه 8 بيت و 16 بيت در يک متغير ثانويه هم نتيجه اي نداشت !
    شايد اگر بتوانيم عدد دسيمال را به باينري تبديل کنيم آنوقت بشود کاري کرد که من هر چه گشتم چيزي نيافتم. به عنوان مثال ضرب کردن در 256 و جمع با مقدار کم ارزش تر.

    منتظر جواب و راهنمايي دوستان هستم.

    با احترام
    والسلام علي من اتبع الهدي .... و درود بر کساني که راه هدايت را دنبال مي کنند.

    هوشمندانه بپرسيد...
  2. #2
    2012/08/09
    3
    0

    پاسخ : نوشتن بيش از 8 بيت در EEPROM هايي که 8 بيتي هستن&#

    من با شيفت جواب گرفتم، البته با زبان C اينم کدشه:
    کد:
    EEPROM_Write(keyAddress+0, ((rem<<16)>>16));Delay_ms(20);
    EEPROM_Write(keyAddress+1, ((rem<<8)>>16));Delay_ms(20);
    EEPROM_Write(keyAddress+2, (rem>>16));
    rem که یه عدد 20 بیتی است بصورت 8 بیتی در حافظه نوشه می شود.
  3. #3
    2013/02/25
    مشهد
    180
    33

    پاسخ : پاسخ : نوشتن بيش از 8 بيت در EEPROM هايي که 8 بيتي هستن&#

    نقل قول نوشته اصلی توسط zoz_zozm
    من با شيفت جواب گرفتم، البته با زبان C اينم کدشه:... rem که يه عدد 20 بيتي است بصورت 8 بيتي در حافظه نوشه مي شود.
    سلام
    ممنون از اينکه جواب داديد.
    منطقي به نظر مي رسد که شيفت دادن اطلاعات 8 بيت ، 8 بيت ؛ بايد جواب بدهد . البته علامت هاي شيفت گذاري شما چون هم به سمت چپ بود و هم به سمت راست، اندکي من را گيج کرد (دليلش هم اين است که از زبان C استفاده نکرده ام تا کنون). حالا يک سوال: اگر به چپ و يا راست شيفت بدهيم اولويت بايت پائين و بايت بالا چه مدلي خواهد بود ؟

    فکر کنم که من عدد شانزده بيتي را يک بار داخل يک متغير شانزده بيتيWORD و يک بار ديگر داخل يک متغير هشت بيتي BYTE به سمت چپ شيفت دادم که در هر دوحالت نشد!!! در کد زير من متغير هاي واسط را شانزده بيتي آوردم . عيناً همين کد را براي متغير هاي واسط lower & higher به صورت هشت بيتي نوشتم. باز هم نشد!!!
    کد:
    ps var WORD ;my original 16-bit data
    lower var WORD
    higher var WORD 
    CLEAR
    lower=ps<<16 ;16bits shift to left ward
    higher=ps<<8 ;8bits shift to left ward
    WRITE 0,lower
    WRITE 1,higher
    در محيط بيسيک پرو
    البته همانطور که اينجا آوردم ، به دليل استفاده از دستور CLEAR در ابتداي برنامه خودم که همه متغير ها را صفر مي کند ، ديگر متغيرهاي واسط را با صفر مقدار دهي نکردم. يک تفاوت ديگر هم بين کار من با نظر شما هست که من از تاخير استفاده نکردم که فکر مي کنم الزامي هم ندارد.

    ممکن است از شما دوست عزيز خواهش کنم که واضح تر (در خصوص جهت شيفت ها و نوع متغير هايتان) توضيح بفرمائيد.

    با احترام و تشکر
    والسلام علي من اتبع الهدي .... و درود بر کساني که راه هدايت را دنبال مي کنند.

    هوشمندانه بپرسيد...
  4. #4
    2008/02/10
    اطراف تهران
    411
    11

    پاسخ : نوشتن بيش از 8 بيت در EEPROM هايي که 8 بيتي هستند

    با سلام خدمت دوست عزیز
    آقا کد شما کمی مشکل داره اون رو اینجوری اصلاح کن
    کد قبلی شما اول میاد متغییر 16 بیتی رو 16 بیت شیفت میدی دیگه چیزی نمی مونه! :mrgreen:
    کد:
    ps var WORD ;my original 16-bit data
    lower var BYTE
    higher var BYTE
    CLEAR
    lower=ps ;8 bits of low word
    higher=ps>>8 ;8 bits of high ward
    WRITE 0,lower
    WRITE 1,higher

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

    عضویت


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

    عضویت

  5. #5
    2013/02/25
    مشهد
    180
    33

    پاسخ : نوشتن بيش از 8 بيت در EEPROM هايي که 8 بيتي هستند

    نقل قول نوشته اصلی توسط abbasmh
    با سلام خدمت دوست عزيز
    آقا کد شما کمي مشکل داره اون رو اينجوري اصلاح کن
    کد قبلي شما اول مياد متغيير 16 بيتي رو 16 بي...]
    سلام دوست من

    ضمن خجالت !!! بايد عرض کنم که من ديشب حدود ساعت 2 بامداد اين جواب را نوشتم... الان هم خودم کلي خنده ام گرفته که چرا ، همچين چيزي را نوشتم. اما در کل شما درست فرمايش فرموديد.


    الان توي کارگاه اين را بررسي و آزمايش مي کنم و مراتب را اعلام حضور مي کنم .

    ممنون از بابت توجه و راهنمايي تان

    والسلام علي من اتبع الهدي .... و درود بر کساني که راه هدايت را دنبال مي کنند.

    هوشمندانه بپرسيد...
  6. #6
    2013/02/25
    مشهد
    180
    33

    پاسخ : نوشتن بيش از 8 بيت در EEPROM هايي که 8 بيتي هستن&#

    نقل قول نوشته اصلی توسط abbasmh
    با سلام خدمت دوست عزيز
    آقا کد شما کمي مشکل داره اون رو اينجوري اصلاح کن
    کد قبلي شما اول مياد متغيير 16 بيتي رو 16 بيت شيفت ميدي ديگه چيزي نمي مونه! :mrgreen:
    کد:
    ps var WORD ;my original 16-bit data
    lower var B
    سلام دوباره

    با اينکه منطق برنامه شما درسته اما نمي دانم که چرا باز هم نشد!!! :angry:
    يک سه چهار ساعت هم روي اين نظر شما کار کردم اما مطمئن هستم که يک اشتباه کوچک مي کنم که نمي گذاره موفق بشوم
    گفتم بدين وسيله هم سلامي دوباره کرده باشم و هم تشکري ويژه .

    به هرحال ما را بي خبر نگذاريد

    يا علي
    والسلام علي من اتبع الهدي .... و درود بر کساني که راه هدايت را دنبال مي کنند.

    هوشمندانه بپرسيد...
  7. #7
    2008/02/10
    اطراف تهران
    411
    11

    پاسخ : نوشتن بيش از 8 بيت در EEPROM هايي که 8 بيتي هستند

    علیک سلامی مجدد
    آقا این برنامرو اینجوری بنویس
    اول میاد توی حافظه می نویسه بعد متغییر ها رو صفر میکنه و بعد دوباره می خونه
    کد:
    ps var WORD ;my original 16-bit data
    lower var BYTE
    higher var BYTE
    CLEAR
    lower=ps ;8 bits of low word
    higher=ps>>8 ;8 bits of high ward
    WRITE 0,lower
    delay_ms(10)
    WRITE 1,higher
    delay_ms(10)
    lower=0
    higher=0
    ps=0
    READ 0,lower
    READ 1,higher
    ps=(higher<<8)+lower
    شما سعی کن اگه باز نشد کل سورس رو بزار
    موفق باشی :bye

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

    عضویت


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

    عضویت

  8. #8
    2013/02/25
    مشهد
    180
    33

    پاسخ : نوشتن بيش از 8 بيت در EEPROM هايي که 8 بيتي هستند

    نقل قول نوشته اصلی توسط abbasmh
    عليک سلامي مجدد
    آقا اين برنامرو اينجوري بنويس
    اول مياد توي حافظه مي نويسه بعد متغيير ها رو صفر ميکنه و بعد دوباره مي خونه ...
    آقا abbasmh سلام
    اميدوارم که حالتان خوب باشد
    صادقانه عرض کنم که چون شديد گرفتار نوشتن روال يک برنامه براي PID هستم . ديگه نشد که توصيه شما را در خصوص ذخيره بيش از 8 بيت بررسي و لحاظ کنم . فعلا يک کلک مرغابي ، سوار کردم. يعني اينکه به جاي ذخيره عدد در قالب ورد WORD يک ضريب خاص را که هميشه کمتر از 255 است را ذخيره مي کنم و مجدد همان را قرائت مي کنم. و داخل رابطه و فرمولي وارد مي کنم که در نهايت همان نتيجه به دست بيايد.

    براي اتمام کار در اين روال برنامه PID ، زمان ، براي من تند و سريع سپري مي شود و به قول مرحوم قيصر امين پور ( که خدا رحمتش کند) ناگهان چه زود ، دير ميشود.... يواش يواش کار من هم داره دير مي شود.... آخه قول دادم و دارم بد قول مي شوم....

    از اين جهت که من در eca.ir تازه وارد هستم. گفتم که از مرتبه دوستي مان استفاده کنم و از شما بپرسم که روي موضوع کنترل حلقه بسته با استفاده از تکنيک تناسب ، انتگرال و مشتق يا اصطلاحاً PID ، چيزي انجام شده داريد که جواب گرفته باشيد؟ يا احيانا تو اين تالار هاي گفتگو PIC ، چيزي به رويت تان رسيده است؟ نکته اي که فکر کنيد ممکن است مفيد فايده باشد؟

    البته شايان ذکر است که برنامه من (از نظر نرم افزاري) تقريبا تمام است و فردا جمعه انشاالله سخت افزار DAC0800 را به ميکرو متصل مي کنم . و سخت افزار را در آزمايشگاه تست مي کنم . ممکن است که برنامه اي که من نوشته ام ، در شرائط واقعي جواب ندهد ، و لازم باشد که بيشتر به جزئيات آن پرداخته شود.

    لذا گفتم از شما و همچنين دوست ارزشمندم ، جناب آقاي مهندس مستقيمي ، مدير محترم تالار گفتمان PIC بپرسم که برنامه اي از قبل آماده شده داريد؟

    البته اگر فردا انشاالله به لطف خدا جواب بدهد بعد بايد يک نمونه اوليه بفرستم بره يک آزمايشگاه سيالات ، با يک سيستم پمپ و Frequency inverterدر محيط سيال آب ، در شرائط کاملا واقعي آزمايش کنيم و آن وقت ببينيم که به قول معروف : " چي از آب در مي آيد " ؟؟

    باري به هرجهت ، ادب حکم مي کند که بعد از آخرين ارسال شما ، که براي رفع مشکل من بود ، بايد مي آمدم و جواب مي دادم که نتيجه چه شد.

    منتظر خبر هر دو بزرگوار هستم.

    ارادتمندتان
    والسلام علي من اتبع الهدي .... و درود بر کساني که راه هدايت را دنبال مي کنند.

    هوشمندانه بپرسيد...
  9. #9
    2008/02/10
    اطراف تهران
    411
    11

    پاسخ : نوشتن بيش از 8 بيت در EEPROM هايي که 8 بيتي هستند

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

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

    عضویت


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

    عضویت

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

    پاسخ : نوشتن بيش از 8 بيت در EEPROM هايي که 8 بيتي هستند

    جناب اصغريان سلام عرض ميکنم.
    خوشحالم که مسئله ذخيره سازي رو تونستين حل بکنين. :nerd:
    در مورد PID، متاسفانه تا الان تجربه ي کاري ندارم.
    ولي

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

    عضویت

    هست که يه نمونه کنترل دماي آب مخزن هست که با PID نوشته شده.شايد بتونه کمکتون کنه.البته با AVR هست. ولي خبPID همون PID هست ديگه،فرقي نميکنه ميکرو چي باشه.

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

    عضویت



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

    عضویت

صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 13

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

  1. نوشتن در eeprom
    توسط javaad283 در انجمن میکروکنترلرهای AVR
    پاسخ: 1
    آخرين نوشته: 2015/11/13, 01:33
  2. بدست اوردن مقدار اهم مقاومت هايي که در مدار هستند.
    توسط ravand در انجمن الكترونيك صنعتی
    پاسخ: 16
    آخرين نوشته: 2014/03/31, 11:58
  3. نحوه نوشتن برنامه ديتاي 11 بيتي
    توسط ieee7 در انجمن میکروکنترلرهای AVR
    پاسخ: 5
    آخرين نوشته: 2011/08/17, 06:26
  4. معرفي ميکروکنترلرهاي 8 بيتي و 16 بيتي و 32 بيتي گوناگون
    توسط Solsal در انجمن سایر مطالب مرتبط با ميکرو ها و پروسسورها
    پاسخ: 3
    آخرين نوشته: 2011/05/05, 14:59
  5. نوشتن در eeprom
    توسط mypalex در انجمن میکروکنترلرهای AVR
    پاسخ: 8
    آخرين نوشته: 2007/02/04, 17:40

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

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

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

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

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