انا مش عارف اقول لحضرتك كميه الاستفادة اللي بستفادها من حضرتك اد اة رغم اني باخد دبلومة بره بس انت كل مرة بضيفلي جديد اسلوبك متميز جددا ربنا يزيد علمك
@DeepBlueMbedded5 жыл бұрын
دا شىء يسعدنى جدا و الله .. ربنا يحفظك و يوفقك ^^
@mohammedahmed-br5jt6 жыл бұрын
جزاك الله خيرا يا استاذ خالد
@DeepBlueMbedded6 жыл бұрын
و اياكم اخی الكريم ^^
@belfakiromar45524 жыл бұрын
The best, thank you so much sir !!!
@abdelrahmanyousef22375 жыл бұрын
مش المفروض حضرتك هنا كنا نعمل كدا TMR1L=0xD0 TMR1H=0x3C ولا عادي نحط ال values ع طول كدا ف ال timer
@DeepBlueMbedded5 жыл бұрын
سواء قسمته ل امرين او كتبتها ف سطر واحد مش هتفرق. TMR1 دا 16 بت
@accorzakaria32515 жыл бұрын
TMR1L=0xB0;
@youssefelidrissi94714 жыл бұрын
for Tutorial 11 second method of timer preloading correction X = (2 / 0.06553) = 30.52 overflows Thus, the value which we’ll be loading to Timer1 is => (TMR1 = 31536) void interrupt ISR () { // Check The Flag Bit if (TMR1IF) { C++; if(C==31) // Note That We're Taking The First Overflow Into Account! { // Load The Value Which We've Calculated To The TMR1 Register TMR1 = 31536; // Event2 = Toggle LED RB0 = ~RB0; // Clear The Global Counter C = 0; } TMR1IF = 0; // Clear The Flag Bit } }
@DeepBlueMbedded4 жыл бұрын
Thanks for this feedback. I've to double-check this point and will get back to you 👌
@sayedmohsen77143 жыл бұрын
لو سمحت انا ليه بيظهر عندى الاشارة على ال oscilliscope بشكل معوج شوية مش معدول و مش مطلع الثانية بالظبط مع انى مظبط الكود و متاكد منه؟
@sayedmohsen77143 жыл бұрын
#include #include "config.h" #define _XTAL_FREQ 4000000 //Make variable for counter of OverFlows unsigned char c = 0; void main(void) { //Make RB0 output pin TRISB0 = 0; //Make RB0 low RB0 = 0; //Enable Timer1 interrupt TMR1IE = 1; PEIE = 1; GIE = 1; //Configure Timer module to operate in Timer Mode //Count from start TMR1 = 15536; //Select Local Clock to be in timer mode TMR1CS = 0; //Set the pre-scalar to 1:1 T1CKPS0 = 0; T1CKPS1 = 0; //Turn On Timer1 Module TMR1ON = 1; //Write the system's main routine while(1){ } return; } __interrupt() void ISR(void){ if(TMR1IF){ TMR1 = 15536; c++; if(c == 15){ RB0 = ~RB0; c = 0; } TMR1IF = 0; } }
@sayedmohsen77143 жыл бұрын
ده الكود
@suzanaentertainment65995 жыл бұрын
جزاك الله خيرا
@DeepBlueMbedded5 жыл бұрын
و اياكم يارب ^^
@accorzakaria32515 жыл бұрын
يمكن كتابة 15536 ب Hex TMR1=0x3CB0;
@DeepBlueMbedded5 жыл бұрын
صحيح تماما
@abdelrahmanelzennary37604 жыл бұрын
سلام عليكم لو سمحت لو بستخدم كريستالة ٢٠ ميجا رقم الpreloading بيطلع بالسالب ازاي احل المشكلة دي؟ هل بأني ازود 65536 على الرقم السالب اكتر من مرة لحد مايبقى موجب؟
@DeepBlueMbedded4 жыл бұрын
حلو السؤال دا جدا لما يحصل معاك كدة تعرف انو لازم تزود ال Prescaler بدل ما هو 1 خلاص خليه 8 مثلا و عوض فالمعادلة لو عايز الTout يكون ب 0.05 ثانية على اساس انك تعمل 20 انتربت علشان تعرف انو عدى زمن قدره واحد ثانية ف خلاص عوض عن الكريستالة ب20ميجا و البريسكايلر ب8 و هيطلع معاك قيمة البريلود للتايمر ب 34285 و طبعا ما تنساش فالكونفيجوريشن بتاعتك التايمر انك تختار قيم البيتات T1CKPS1:T1CKPS0 تخليهم 1 و 1 علشان البريسكايلر يبقا 8 بس كدة .. اعمل كدة و الدنيا هتظبط معاك ان شاء الله
@osamaemam42304 жыл бұрын
newmain.c:34:6: error: variable has incomplete type 'void' void interrupt ISR() ^ newmain.c:34:15: error: expected ';' after top level declarator void interrupt ISR() ^ انا بيطلعلي error بالشكل ده ومش فاهم فيه ايه حاولت كتير ومش فاهم فين المشكله
@DeepBlueMbedded4 жыл бұрын
اه دا تغيير عملوه فالنسخ الحديثة من الكومبايلر غيروا الidentifier بتاع الisr بقی يتكتب بالشكل ال تحت دا void __interrupt() ISR(void) { } بس اعملها بالشكل دا و هتشتغل معاك الموضوع دا كذا حد اشتكی منه من سنتين تقريبا و كتبت عنه ملحوظة علی المقالات فالموقع 😀
@osamaemam42304 жыл бұрын
@@DeepBlueMbedded تمام شكرا جدا فعلا اتغير واتعمل خلاص
@ms13leon5 жыл бұрын
بس الليد مش شغاله غير مره واحده بس !!!
@DeepBlueMbedded5 жыл бұрын
حاولى تحطى سلسكوب زى ماعملت فى الشرح كدة و شوفى شكل الاشارة ايه فى السميوليشن لو علطول HIGH و الليد منورة مرة واحدة فقط ف الكلام دا معناه ان تقريبا حضرتك ناسية حاجة ف تفعيل الانتربت نفسه, مش بيحصل فاير للانترنت او بيحصل فاير و بندخل فالانتربت سيرفس روتين مرة واحدة بس و دا ممكن يكون نتيجة انك نسيتى تصفرى الFlag اتاكدى من الكلام دا و جربى تانى و ان شاء الله تظبط معاكى
@ms13leon5 жыл бұрын
ده معايا من الفيديو اللى فات ان الانتربت فعلا مش شغال غير مره واحده بس وانا مصفره ال FLAG فى الاخر عادى فمش عارفه ايه المشكله !! بس سؤال ايه اللى هيخليه يعيد الكود تانى مادام مش جوا loop ؟؟؟
@DeepBlueMbedded5 жыл бұрын
هيعيد الكود تانى من غير لووب علشان التايمر بيعد و كل ما يخلص عد بيـ فاير انتربت و ندخل تانى ننفذ تانى الكود اللى جوا الانتربت سيرفس روتين ف فى نهاية المطاف هتلاقى الكود ال جوا الانتربت سيرفس روتين عمال يتنفذ بشكل متكرر بيفصل بين كل مرة تكرار واللى وراها زمن قدره 1ث او حسب ما احنا ظابطين قيمة المدة دى
@DeepBlueMbedded5 жыл бұрын
كويس طيب يعنى دى مشكلة قديمة عندك لسا ما اتحلتش XD لازم نحلها الاول و بعدين نشوف الباقى لو حابة ترفعى فايل الكود درايف و تحطى اللينك اشوفه معاكى اتس اوكى
@ms13leon5 жыл бұрын
www.mediafire.com/file/1vudhv7ul88zq5w/Timer1_led.X.rar/file ده لينك اهو