الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الأمور المعقده في الميكروكنترولر

مغلق
بدأه Asm4all في 18 يونيو 2004 · 19 رد · 8,032 مشاهدة · في الأرشيف
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته..

نعرف أن الميكروكنترولر مهامه لا حصر لها ونعرف أن كلما زادت الأمور تعقيدا كلما احتجنا الى عمليات رياضيه معقده مثل المضروب والجزور والأس و sin ,cos ,tan^-1 وما الى ذلك فكيف يمكن برمجة هذا على ميكروكنترولر بسيط مثل 8051 أو pic16f84 لرخص الثمن وتواجدهم في الأسواق.

وشكرا

#2

الاخ احمد لن تحتاج لمثل هذه الدالات في معظم الحالات وان كانت الحاجة موجودة فبالامكان كتابتها بالاضافة الى امكانية حسابها مسبقا وكتابتها كجدول بالذاكرة لايوجد مشكلة بتاتا وربما تكون المشكلة في احد الحالات نقص الذاكرة (rom,flash,eprom) ولهذا نختار ميكروكنترولر بذاكرة اكبر واذا كانت السرعة مشكلة فهناك سرعات اكبر كذلك وهذه الامور التى تحكم اختيار الميكروكنترولر الا وهي السرعة الذاكرة والمخارج والموقتات ووسائل الاتصال مثل التسلسلى والمتوازي وغيرها.

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#3

وحيث ان هنالك علاقة بين الجيب والجتا

cos (x) = sin (x+90)

لذا فنكتب فقط احد الدالتين وعندما نريد حساب الاخرى نطرح او نجمع 90 للزاوية حسب العملية وتكون النتيجة دالة واحدة بدل دالتين.

وبخصوص الدالة ممكن تبسيطها بتقليل عدد الحدود وطبعا ستقل الدقة بالتالي، ولكنك انت من سيحدد الدقة.

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#4

السلام عليكم

اخي الكريم

الميكروكنترول لايعرف ال 1 او الصفر وعند الجمع او الطرح تكون الاعداد ب الbinary ويضهر الناتج ب ال binary ولكنك بامكانك تحويل ال عشري من خلال ic توصل مع الميكروكنترول

اما بخصوص ال الجا و الحتا يمكنك تخزين جدوال الجا و الجتا في ذاكرة خارجية توصل مع الميكروكنترول مثل ic2416 لكن تذكر ان الميكروكنترول لا يعرف الا الصفر و ال 1

لذا عليك تحويل جداول الجا و الجتا ال binary nuber وبعد ادا العملية يتم اظهالر الناتج ال ب binary ثم يتم تحويله الى عشري

#5

بوركتم

ومن يتق الله يجعل له مخرجا

]

#6
اقتباس
ولكنك بامكانك تحويل ال عشري من خلال ic توصل مع الميكروكنترول

اخي eng9999 جميع العمليات تتم داخل الميكروكنترولر لاتنسي انه كمبيوتر مصغر ولا تحتاج الى IC خارجي كل العمليات المنطقية والحسابية تتم داخله. وكما ذكرت بالامكان زيادة الذاكرة خارجيا اذا لم تكفي الذاكرة الداخلية واذا لم ترغب باختيار ميكروكنترولر انسب.

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#7

جميل هذه التعليقات منكم يا شباب ولكن أود أن أسئل ألا يمكن صنع هذه الدوال نفسها على الميكرو كنترولر

معروف أن

sin (x) = x - x^3 / 3! + x^5/5! - x^7/7! ......inf.

اذا لحساب جيب الزاويه x نحتاج الى حساب المضروب ل n ورفع الأس n ل x حيث n عدد صحيح موجب من 1 الى مالا نهايه وكل مره يقفذ خطوه وحيث أنه من الصعب الحساب لما لا نهايه فسنختار قيمه نفترض عندها المالا نهايه ونرض بالدقه الناتجه .

وما أطلبه ليس بمعجزه فالآله الحاسبه البسيطه بها هذه الدوال وأما فكرة الجداول فهي تصلح اذا كنا سندخل قيم معينه أما لو كانت بالقياس وسوف تتغير الى قيم متفاوته ونريد الدقه فسنحتاج الداله .

وجزاكم الله خيرا

أخوكم أحمد

#8

اخي احمد ممكن كتابة هذه الدوال بالمايكروكنترولر وممكن ان تواجهك المشاكل التالية:

  • الذاكرة ليست كافية
  • المكدس(STACK) ليس عميقا

الحل اذا وجدت المشكلة (ستكتشف ذلك عند عمل كمبايل للبرنامج) باضافة ذاكرة خارجية تسلسلية وتحل المشكلة وبامكانك اكتشاف ما اذا كانت الذاكرة كافية ام لا قبل البدء بتصميم الجهاز. ملاحظة :الذاكرة الخارجية التسلسلية لن تكون للبرنامج ولكن لكتابة اي معلومات كانت اصلا مكتوبة على الذاكرة الداخلية وذلك لترك المجال للبرنامج اذا كانت سعته كبيرة.

بالنسبة للمكدس تنشأ مكدس سوفتوير.

الحل الاخر بالجداول ولن يكون لديك مشكلة ف جيب 30.55 يقع بين جيب 30 وجيب 31 وبنسبة 55% وتكون المعادلة كالتالى:

SIN(30.55)= SIN(30) + (SIN(31) - SIN(30)) * 55 / 100

ارجو الا اكون عقدت الامور بدل حلها.

وبالمناسبة لا يوجد برنامج لا في المايكروكنترولر ولا في الحاسب الالى سياخذ الحدود الى مالانهاية، اذا في كل الحالات يجب التوقف عند حد معين تحدده انت

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#9

نسيت ان اذكر ان المعادلة بعاليه هي تقريب وليست مطلقة.

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#11

السلام عليكم ورحمة الله وبركاته..

الى كل من يهتم بالميكروكنترولر 8 بت ويحاول تعلم كيفية عمله وتطويره, لي سؤال هام جدا وهو عن كيفية تمثيل الارقام العشريه في الذاكره وكيفية التعامل معها في العمليات الحسابيه.

السؤال فعلا مهم جدا وبعد التوصل اليه بصوره كامله سأعرض اليكم طريقه بسيطه لحل المشكله السابق ذكرها وهي كيفية حساب Sin X وبدقه كبيره وبسرعه معقوله تتوقف على طريقة التعامل مع الأرقام العشريه.

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

أخوكم أحمد من مصر

#12

السلام عليكم،

اهلين اخي احمد هل تقصد بالارقام العشرية مثل PI 3.14159265 ؟ اذا كان هذا قصدك فبالامكان تمثيلها بهذا الشكل :

314159265 والقوة F8

حيث F8 في هذه الحالة هي القوة 10^(-8) وهي بايت مخزنة في الذاكرة وتكون

من 0x00 الى 0x80 يعني 0 الى 128

ومن 0x81 وحتى 0xFF وتعنى -127 وحتى -1

يعني الرقم الصحيح BCD ورقم القوة HEX

باختصار القوة هي SIGNED BYTE

انظر موضوع مشكلة مع الرياضيات

اذا كان المقصود غير الى انا فهمته ارجوا التوضيح اخي احمد.

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#13

بالاضافة الى امكانية تقريب باى الى 3.142 وبالتالى تصبح 3142 F8

تم تعديل هذه المشاركة بواسطة عماد الخليل في 29 يونيو 2004 في 21:24

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#14

أشكرك أخي عماد ان شاء الله بعد الاطلاع على الموضوع سأطرح ما توصلت اليه ليتم مناقشته وتطويره

#15

السلام عليكم ورحمة الله وبركاته..

ممكن مثال بسيط يوضح كيفية التعامل مع الفلوت من تخذين الارقام العشريه وجمعهم مثلا أو طرحهم (لأنه توجد طريقه الآن تطغى على تفكيري ولا أستطيع تفهم غيرها) فلو أوضح مثال كيفية التعامل وكانت أسرع مما افكر فيه الآن يكون أفضل لأني قاربت من الجنان ~(.=.)~ واريد حل قبل أن اجن

أرجوا المساعده أو زوروني في مستشفى الأمراض العقليه.

أحمد من مصر

#16

لعمل ضرب او جمع عدد عشري وللتبسيط سنفترض العددين 9.62 و 53.4 وهنا يهمك عدد الخانات الاقصى التى تريد اجراء العملية عليها بدون النظر للفاصلة ففي هذه الحالة هناك ثلاث خانات ويكون الاول 962 والاخر 534 فهل بامكانك اجراء الضرب عليها والجمع بدون الفاصلة؟

ان 9.62 هي 962 * 10 ^ -2

و 53.4 هي 534 * 10 ^ -1

وبالتالى

9.62 * 53.4 = 962 * 534 * 10 ^ -2 * 10 ^ -1

تمثيلها بالذاكرة ممكن يكون كالتالى:

M01 2
M02 6
M03 9
M04 E
M05 4
M06 3
M07 5
M08 F
M09 X
M10 X
M11 X
M12 X
M13 X

حيث M01 هي عنوان بايت في الذاكرة في مكان ما، تليها بايت اخرى M02 وهكذا.

عند الضرب نضرب M01 و M05 ويكون الناتج 8 تسجل فى M09 والفائض صفر. لاحظ انك لابد من عمل برنامج ضرب خانتين BCD ويكون الناتج بايت BCD اول اربع بتات منها الناتج والاربع الاخرى الفائض كما في الضرب العشري. هذا الفائض يتم جمعه مع ناتج عملية ضرب الخانتين التاليتين وهكذا.

بالنسبة للضرب تجمع الاسس وبالتالى تجمع M08 و M04 يعنى F+E يكون الناتج 1D تخزن D في M13 وتتجاهل ال 1 ويكون الناتج عملية الضرب فى M09-M12 من اربع خانات والقوة فى M13. بالنسبة للجمع يجب توحيد الاسس وبالتالى فلابد ان تعمل ازاحة للخانات M05-M07 تقوم بعدها بجمع الاعداد ويبقي الاس ثابت. ارجو ان اكون قربت الفكرة

اقتباس
لأنه توجد طريقه الآن تطغى على تفكيري ولا أستطيع تفهم غيرها

ماهي فكرتك؟

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#17

لا أريد تثبيط الهمم، لكن عند تعقد الأمور على هذا النحو، هل ستجد ذاكرة كافية لبرمجة مثل هذه الخوارزمية؟

هل هذا اقتصادي؟

لم لا تلجأ إلى الPLC في هذه الحالة؟ فهو التطور الطبيعي للمايكرو كونتروللر.

ومن يتق الله يجعل له مخرجا

]

#18

ردا على تعليقك اخي عبدالله اولا يجب ان نعرف ان لا شيئ معقد في الميكروكنترولر فالامر الصعب عند فهمه يصبح سهلا. وكما ذكرت ممكن اللجوء الى مستوى اعلى بشرط ان يكون الاختيار في مكانه. فلو كنا نريد تصنيع منتج متكرر يعنى انتاجه تجاريا فلا ينصح بال PLC لان التكلفة ستكون مرتفعة بالاضافة للحجم وخاصة اذا اردنا منتجنا ذو حجم قياسي. اما اذا كان عامل الزمن و الانتاج محدود العدد فربما اختيار ال PLC يكون افضل في كثير من الحالات. ولكن اذا تحدثنا عن تعلم الميكروكنترولر فهذه الطريقة وانا استخدم هذه الطريقة ولم ارها ولم ابحث عنها بل كتبتها بطريقة منطقية وقمت بترجمة مانعمله على الورق بالطريقة البدائية للضرب ولكن باستخدام اوامر الميكروكنترولر والذاكرة اخي اكثر من كافية

39_22.gif

تزود من التقوى فإنك لا تدري *** إذا جن ليل هل تعيش إلى الفجر

فكم من فتى أمسى وأصبح ضاحكاً *** وقد نسجت أكفانه وهو لا يدري

لقراءة القرآن الكريم و سماعه و تفسيره ........

ماذا يعني انني مسلم سني؟

قصة غريبة

ConflictResolution.gif

#19

نحب أن نخبركم بموقع لأول شركة عربية تقوم بتصنيع الأدوات المساعدة للميكروكنترولر كالمبرمجات والأدوات التي تمكنك من اختبار البرنامج قبل وضع الميكرو في النظام سواء كان pic أوatmel أو غير ذلك.وهذه الأدوات هاردوير وليست سوفت وير وذلك بأسعار مخفضة جداً. وهذه الأدوات تساعدك في إنجاز مهمتك سريعاً وتقلل من أخطائك خصوصاً لطلبة مشاريع التخرج ومصنعي الكروت الإلكترونية.www.arabmicro.com .

ونأسف لمشرفين المنتدى إن كان هذا قد يعتبر إعلاناً. ولكن هدفنا هو المصلحة العامة.

أخوكم wambakry

#20
wambakry كتب:
ونأسف لمشرفين المنتدى إن كان هذا قد يعتبر إعلاناً. ولكن هدفنا هو المصلحة العامة.

أخوكم wambakry

طيب , أصل الاعلانات ليها مكان في المنتدى , ولما نكون نقلنا اعلانك مره هناك , واخفينا الثاني وحذفنا الثالث والرابع ونبهناك اكثر من مره ولا حياة لمن تنادي فماذا تعتقد ظننا فيك ؟

يكفي الاعلان مره واحدة , انت مش قاعد على قناة تميمة , ده منتدى علمي , الوظيفة الأساسية فيه المناقشة في امور الميكروكنترولر وليس عرض منتجات ووضع اعلانات

عندي لك حل جيد , ضع اسم الموقع في توقيعك , و كلمتين توضح وظيفته , وشارك في المنتدى مشاركة مفيده أفضل من وضع الاعلانات , وتغيير العضوية أكثر من مره

هذا الموضوع مغلق.

مواضيع مشابهة