Filter
Exclude
Time range
-
Near
الانتقال من برمجة الحاسوب إلى برمجة المتحكمات (Microcontrollers) ليس مجرد تغيير في اللغة، بل هو تغيير في فلسفة الذاكرة ⚙️أحد أخطر الفخاخ التي يقع فيها المبرمجون هو تجاهل الكلمة المفتاحية volatile، مما يمنح المترجم الضوء الأخضر لـ تدميرمنطق الكود تحت مسمى التحسين (Optimization). 📌لماذا نحتاج volatile بشدة في الأنظمة المدمجة؟ 1️⃣ صراع المترجم مع العتاد: المترجم يحلل الكود برمجياً؛ إذا رأى حلقة تكرارية تنتظر تغيراً في متغير لا يتم تعديله داخل الكود، سيفترض أنه ثابت ويحذف عملية القراءة تماماً لتسريع التنفيذ. هو لا يرى أن زر الضغط أو الحساس هو من سيغير هذه القيمة في الواقع الفيزيائي. 2️⃣ معضلة المقاطعات (Interrupts): عندما تتغير قيمة متغير داخل الـ ISR، المترجم في الحلقة الرئيسية (Main Loop) قد لا يلاحظ هذا التغيير ويستمر في استخدام القيمة القديمة المخزنة في المسجلات (Registers). الـ volatile تجبره على العودة للذاكرة الأصلية في كل مرة. 3️⃣ دقة الاستجابة: استخدام هذه الكلمة يضمن أن نظامك سيبقى مستجيباً لكل نبضة خارجية، وهو الفارق بين مهندس يكتب كوداً نظرياً ومهندس يبني أنظمة مدمجة رصينة لا تنهار في الميدان. 💡 في دورة #Embedded_AVR مع #أكاديمية_اتصالاتي، نتعلم إدارة الذاكرة، المقاطعات، وبرمجة الواجهات لتربط الصورة الكاملة. 📩 سؤال للنقاش: هل واجهت سابقاً خطأً برمجياً مستعصياً اختفى فجأة بمجرد إيقاف تحسينات المترجم أو إضافة volatile؟ شاركنا قصتك #Embedded_AVR #C_Programming #Volatile_Keyword #Compiler_Optimization #Embedded_C #أكاديمية_اتصالاتي
1
1
9
403
مصطلح اليوم: Volatile Keyword في برمجة الحاسوب، المترجم (Compiler) ذكي جداً لدرجة أنه قد يحذف كوداً يراه غير منطقي لكن في الأنظمة المدمجة، هذا الذكاء قد يكون كارثياً.الكلمة المفتاحية volatile هي إشارة للمترجم تقول له: لا تكن ذكياً هنا؛ هذه القيمة قد تتغير في أي لحظة بفعل العتاد (Hardware) أو المقاطعات (Interrupts) دون أن تراها أنت في الكود. هي تمنع المترجم من القيام بعمليات التحسين (Optimization) التي قد تؤدي لتجاهل قراءة الحساسات أو الأزرار. 📡 نصيحة: إذا كان المتغير يتأثر بالعالم الخارجي، فلا بد أن يكون volatile .#Embedded_C #AVR #Microcontrollers #Programming #أكاديمية_اتصالاتي
1
9
438
When I started coding back in 80's... It was in BASIC... then I was attracted to Fortran & Pascal while I was also heavily involved in writing assembly code for Zilog Z80 & Intel 8085. Then it was #VisualBasic for a long time.... Now I'm more into "#Embedded_C" programming.
1
7
279
23 Mar 2020
Day 4/100 of #100DaysOfCode After Understanding I²C protocol, I wrote code for both Master & Slave Mcu using #Embedded_C I did my first Lab using this Driver, I just send an increment data from Master to Slave, using LED-BARGRAPH to see the result :) that's the simulation!
2
15
31
I have learned VB 6 and VB .NET when I was in 7th grade... last time I've written VB code was maybe in high school, yet, I still write "Select Case" instead of "switch case" in my C/C code. Every time I get a syntax error, and I have to google it 🤦‍♂️ #VB #ghost #CPP #Embedded_C
1