For those who have compiler error you should use this syntax for interrupt function: void __interrupt() ISR(void); make sure that there is a distance between void and __ 24/9/2022 keep going Khaled!
ما شاء الله لا قوة الا بالله ... ان الله يحب اذا عمل احدكم عملا ان يتقنه وانت قد وفيت وكفيت ... بارك الله فيك وزادك الله علما وبركة في العمر والرزق والعمل
هو ليه شكل الاشارة فى اوسلسكوب مش واخدة شكل square wave ? يعنى بعد ما بقت high لما بتيجى بتنزل , بتنزل ب curve , و لما بتبقى low مبتفضلش low بتطلع ب curve
جزاك الله كل خير عندي استفسار يا استاذ خالد نحنا بالكود ماعرفنا الكرستال ولا حددنا قيمة و نحنا اصلا شغالين بالinternal osc لكن لما انزع الكرستال من على الميكرو كنترولر ببطل يشتغل ما السبب؟ سؤال تاني: انت تركت حلقة while (1) فاضية, انا جربت اكتب فيها delay لزمن 1000ms لكن الميكروكنترولر لم ينفذ التاخير و ضل شغال بالمقاطعة (يشغل الليد و يطفيه) بدون اي تاخير و هذا يؤدي ان الكود بداخل while1 لم يتم تنفيذه,صحيح؟
اعزك الله اخی الكريم اجابة سؤالك الاول. اكيد فی مشكلة بالconfigurations بتاعتك الميكروكنترولر لتحديد مصدر الكلوك .. لازم تختاره بشكل صحيح سواء داخلية او خارجية. واضح من كلامك ان الكونفيج معمولة علی كريستالة خارجية لذلك لما تنزعها بيبطل يشتغل. السؤال الثانی. طبيعی ما يحدث معك لان المقاطعات تقطع ای شیء بداخل الmain بما في ذلك الديلای نفسه. وقت يجی انتربت التايمر يتم قطع الديلای و يروح المتحكم يغير حالة الليد و يرجع يكمل الديلای. فی لابات عملية اخری فی الكورس هتعرف خلالها الموضوع دا اكتر و بشكل اوضح ان شاء الله. و اخر شیء. لأ الكود بداخل الwhile 1 يتم تنفيذه بشكل عادی لكن يتم قطعه عند وصول ای انتربت و يعود الكنترولر لاستكماله بعد انتها تنفيذ الكود بتاع الisr
جزاك الله خيرا على هذا المحتوي الجميل والاكثر من رائع عندي سؤال . انا لما اجي استخدم مكثف داخل الدايرة بتاعتي بحدد قيمة المكثف المناسبة ازاى انا عارف ان قيمة المكثف بتساوي 1/(2*Pi*R*Fc) المقاومة دي بتكون معلومة معايا وتقريبا بتكون متوصلة على التوازي مع المكثف وكمان التردد معلوم بنسبالى انا الى بحدده في بداية الكود او لو حاطتها خارجية هل الكلام دة صحيح ولا نقصه حاجة انا مش فهمها
@@DeepBlueMbedded انا فهمت انا المكثف الى بتحطه عند مدخل الجهد دة بيكون للتنعيم لكن لما يكون فية Bouncing effect اتغلب على الموضوع دة بالمكثف بس انا مش عارف المفروض احط قيمته كام بالظبط هو التعليق خارج الدرس دة
أها ايوا صح كدة XD انا عصرت دماغى فاكر ان الدرس دا مكنش فيه مكثفات ايوا .. تعليق خارج الدرس و فعلا النقطة دى مهمة جدا و ليه حلقات الكترونكس خاصة يمكن لسا منزلتش لكن هتنزل قريب اوى ف خليك متابع و ان شاء الله هتلاقى اجابات وافية بخصوص الموضوع دا و بالنسبة للBypassing Cap ال بيتحط عند مدخل الجهد عادة بيكون من100ميكرو و اكبر منها لو تطلب الامر , حسب التصميم و كمية الICs فى البوردة
For those who have compiler error you should use this syntax for interrupt function:
void __interrupt() ISR(void);
make sure that there is a distance between void and __
24/9/2022
keep going Khaled!
thanks bro
correct for september 2024 as well but don't include the semicolon (;) at the end of this statement it should give you a successful build.
ما شاء الله لا قوة الا بالله ... ان الله يحب اذا عمل احدكم عملا ان يتقنه وانت قد وفيت وكفيت ... بارك الله فيك وزادك الله علما وبركة في العمر والرزق والعمل
واو واو👏🏻👏🏻👏🏻
المحتوى رائد جدا ونااادر جدا مشفتش زيه في اليوتيوب الاجنبي ولا العربي
اهنيك على هالقناة وانشاءالله تسمتر على هالمستوى الرائع والمتقن
فعلا حاجة عظمة اوي
the interrupt new declaration for xc8 V2.0 is
void __interrupt() ISR() {}
//it seems like i've seen the hell already with ISR without even started!!
danke schon
very thannnnk u
Merci
شكرااااااااااااااااااااااااااااااااااااااااا
جزاك الله خيرا
جزااااااك الله الف الف الف خيييرا ياااخ😍😍....
انا بدور يوم كامل ع حل هذه المشكله....
ربنا يوفقك ياااا رب
mercii ;)
The new Syntax. Thank you Khaled
void __interrupt() ISR(){
if (TMR1IF){
c++;
if (c==15){
RB0 = ~RB0;
c = 0;
}
TMR1IF = 0;
}
}
الله يعطيك العافية...استمر
هو ليه شكل الاشارة فى اوسلسكوب مش واخدة شكل square wave ? يعنى بعد ما بقت high لما بتيجى بتنزل , بتنزل ب curve , و لما بتبقى low مبتفضلش low بتطلع ب curve
لو سمحت انا الكود شغال معايا بس علي ال Proteus ال simulation مش شغال
جزاك الله كل خير
عندي استفسار يا استاذ خالد نحنا بالكود ماعرفنا الكرستال ولا حددنا قيمة و نحنا اصلا شغالين بالinternal osc لكن لما انزع الكرستال من على الميكرو كنترولر ببطل يشتغل ما السبب؟
سؤال تاني: انت تركت حلقة while (1) فاضية, انا جربت اكتب فيها delay لزمن 1000ms لكن الميكروكنترولر لم ينفذ التاخير و ضل شغال بالمقاطعة (يشغل الليد و يطفيه) بدون اي تاخير
و هذا يؤدي ان الكود بداخل while1 لم يتم تنفيذه,صحيح؟
اعزك الله اخی الكريم
اجابة سؤالك الاول. اكيد فی مشكلة بالconfigurations بتاعتك الميكروكنترولر لتحديد مصدر الكلوك .. لازم تختاره بشكل صحيح سواء داخلية او خارجية. واضح من كلامك ان الكونفيج معمولة علی كريستالة خارجية لذلك لما تنزعها بيبطل يشتغل.
السؤال الثانی. طبيعی ما يحدث معك لان المقاطعات تقطع ای شیء بداخل الmain بما في ذلك الديلای نفسه. وقت يجی انتربت التايمر يتم قطع الديلای و يروح المتحكم يغير حالة الليد و يرجع يكمل الديلای. فی لابات عملية اخری فی الكورس هتعرف خلالها الموضوع دا اكتر و بشكل اوضح ان شاء الله.
و اخر شیء. لأ الكود بداخل الwhile 1 يتم تنفيذه بشكل عادی لكن يتم قطعه عند وصول ای انتربت و يعود الكنترولر لاستكماله بعد انتها تنفيذ الكود بتاع الisr
@@DeepBlueMbedded اثابك الله كل خير استاذ خالد
اعتقد اني فهمت كفاية و انشاء الله استوعب بشكل اعمق في الدروس القادمة
مستمرين معك
الف تحية
Salem Khaled, Can you explain to us the Can bus? i need that for a work.
Baraka allah fik
The BUILD FAILED في البرنامج
بس السيميوليشن
Proteus اشتغل تمام
جزاك الله خيرا على هذا المحتوي الجميل والاكثر من رائع
عندي سؤال . انا لما اجي استخدم مكثف داخل الدايرة بتاعتي بحدد قيمة المكثف المناسبة ازاى
انا عارف ان قيمة المكثف بتساوي
1/(2*Pi*R*Fc)
المقاومة دي بتكون معلومة معايا وتقريبا بتكون متوصلة على التوازي مع المكثف وكمان التردد معلوم بنسبالى انا الى بحدده في بداية الكود او لو حاطتها خارجية
هل الكلام دة صحيح ولا نقصه حاجة انا مش فهمها
ربنا يحفظك يا اخى ^^
امممم مش عارف الحقيقة اى مكثف تقصد ؟ انا فاكر الفيديو دا مكنش فيش مكثفات خالص تقريبا
@@DeepBlueMbedded
انا فهمت انا المكثف الى بتحطه عند مدخل الجهد دة بيكون للتنعيم
لكن لما يكون فية Bouncing effect
اتغلب على الموضوع دة بالمكثف بس انا مش عارف المفروض احط قيمته كام بالظبط
هو التعليق خارج الدرس دة
أها ايوا صح كدة XD
انا عصرت دماغى فاكر ان الدرس دا مكنش فيه مكثفات ايوا .. تعليق خارج الدرس
و فعلا النقطة دى مهمة جدا و ليه حلقات الكترونكس خاصة يمكن لسا منزلتش لكن هتنزل قريب اوى ف خليك متابع و ان شاء الله هتلاقى اجابات وافية بخصوص الموضوع دا
و بالنسبة للBypassing Cap ال بيتحط عند مدخل الجهد
عادة بيكون من100ميكرو و اكبر منها لو تطلب الامر ,
حسب التصميم و كمية الICs فى البوردة
منتظر حلقاتك العظيمة جزاك الله خيرا
السلام عليكم شكرا على مجهودك الرائع .انا عندى مشكلة فى simulation انى الكود مش بيشتغل و مش بيحصل interrupt رغم انى عملت build و مفيش اى error ايه الحل او ايه .
#include
#include"config.h"
unsigned char counter=0;
void main(void) {
TRISB0=0;
RB0=0;
TMR1IE=1;
PEIE=1;
GIE=1;
TMR1=0;
TMR1CS=0;
T1CKPS0=0;
T1CKPS1=0;
TMR1ON=1;
while(1)
{
}
return;
}
void __interrupt() ISR(void)
{
RB0=1;
if(TMR1IE)
{
counter++;
if(counter==15)
{
RB0=~RB0;
counter=0;
}
TMR1IE=0;
}
}
#include
#include "config.h"
char i=0;
void main(void) {
TRISB=0x00;
PORTB=0X00;
T1CON=0x01;
INTCON=0xc0;
PIE1=0x01;
TMR1=0;
while(1){
}
return;
}
void interrupt ISR(){
if(TMR1IF==1){
i++;
if(i==15){
RB0=~RB0;
i=0;
}
TMR1IF=0;
}
}
معلش ممكن أعرف ايه المشكله هنا؟؟
لازم أعرف رسالة الError
مفيش خطأ syntax هنا غير بس الidentifier بتاع الانتربت لانه اتغير من فترة كدة .. اصبح بالشكل الاتی
void __interrupt() ISR(void)
{
..
}
@@DeepBlueMbedded اه دا فعلا كان المشكله
@@abdelrahmanyousef2237
code in MPLAB IDE V.5.40
void __interrupt() ISR(void){
if(TMR1IF)
{
c++;
if (c==15)
{
RB0=~RB0;
c=0;
}
TMR1IF=0;
}
}
سلامتك
بس وضح الصورة