Timer Module TimerMode LAB1

Поділитися
Вставка
  • Опубліковано 2 лип 2018
  • Timer Module - Timer Mode - LAB1
    Embedded Systems Tutorials - Microchip PIC Microcontrollers - MPLAB X
    [[ Tutorial #14 ]]
    You can read this exact same tutorial as a written article (in English) on my website.
    Through this link down below
    NA
    You can also check for downloadable content (code + schematics) herein in the description or on the website
    ===========================================
    In this tutorial, you'll learn how to configure the Timer1 Module in our PIC Microcontroller to operate in the timer mode. And also to use it to generate 1-Second time interval, which will be used to toggle an LED to indicate the termination of the time interval. We'll write the necessary firmware, simulate the project on a computer software and finally construct the prototype of this project to see the real-world results. We'll draw some interesting conclusions so stick around!
    ===========================================
    You can follow this course playlist on UA-cam
    You can also follow this course (with extra info) on my website
    deepbluembedded.com/pic-progr...
    ===========================================
    Downloadable Files & Links
    ----------------------
    [[ MPLAB Code Project (Firmware) ]]
    MediaFire
    Link1 zipansion.com/1xwgG
    Link2 corneey.com/wJQIYA
    Drive
    Link1 zipansion.com/1xwhp
    Link2 corneey.com/wJQIUz
    [[ Schematics + Simulation Files ]]
    MediaFire
    Link1 zipansion.com/1xwlR
    Link2 corneey.com/wJQIPi
    Drive
    Link1 zipansion.com/1xwmj
    Link2 corneey.com/wJQIAe
    ===========================================
    For More Information
    Visit my website @ DeepBlueMbedded.com
    deepbluembedded.com/
    Follow me on socials
    LinkedIn / khaled-magdy-
    Twitter / ii_deepblue_ii
    FaceBook / khaled.elrawy.359
    ===========================================
    If you've any questions, feel free to leave a comment down below. I will be glad to respond to your comments as soon as possible.
    Good Luck ^^
    And don't forget to SUBSCRIBE for more tutorials from DeepBlue!
    If you find this content useful, Then Share It With Your Network!
    #Embedded_Systems
    #PIC_Microcontrollers
    #Timer_Modules
  • Наука та технологія

КОМЕНТАРІ • 38

  • @muhammadalmahdi2924
    @muhammadalmahdi2924 Рік тому +5

    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!

  • @maryamhassan420
    @maryamhassan420 5 років тому +4

    واو واو👏🏻👏🏻👏🏻
    المحتوى رائد جدا ونااادر جدا مشفتش زيه في اليوتيوب الاجنبي ولا العربي
    اهنيك على هالقناة وانشاءالله تسمتر على هالمستوى الرائع والمتقن

  • @Omar.bin.khattab
    @Omar.bin.khattab 2 роки тому

    ما شاء الله لا قوة الا بالله ... ان الله يحب اذا عمل احدكم عملا ان يتقنه وانت قد وفيت وكفيت ... بارك الله فيك وزادك الله علما وبركة في العمر والرزق والعمل

  • @omarf148
    @omarf148 5 років тому +12

    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!!

    • @abdelrahmanyousef2237
      @abdelrahmanyousef2237 5 років тому

      danke schon
      very thannnnk u
      Merci
      شكرااااااااااااااااااااااااااااااااااااااااا

    • @accorzakaria3251
      @accorzakaria3251 4 роки тому

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

    • @wadaljack5087
      @wadaljack5087 3 роки тому

      جزااااااك الله الف الف الف خيييرا ياااخ😍😍....
      انا بدور يوم كامل ع حل هذه المشكله....
      ربنا يوفقك ياااا رب

    • @naimgouider6691
      @naimgouider6691 3 роки тому

      mercii ;)

  • @abdobatikeh5338
    @abdobatikeh5338 4 роки тому

    الله يعطيك العافية...استمر

  • @clay7970
    @clay7970 4 роки тому +1

    The new Syntax. Thank you Khaled
    void __interrupt() ISR(){
    if (TMR1IF){
    c++;
    if (c==15){
    RB0 = ~RB0;
    c = 0;
    }
    TMR1IF = 0;
    }
    }

  • @clay7970
    @clay7970 4 роки тому

    Salem Khaled, Can you explain to us the Can bus? i need that for a work.
    Baraka allah fik

  • @ahmedelmenshawie8631
    @ahmedelmenshawie8631 3 роки тому

    هو ليه شكل الاشارة فى اوسلسكوب مش واخدة شكل square wave ? يعنى بعد ما بقت high لما بتيجى بتنزل , بتنزل ب curve , و لما بتبقى low مبتفضلش low بتطلع ب curve

  • @ahmadal-tarabeen9253
    @ahmadal-tarabeen9253 3 роки тому

    The BUILD FAILED في البرنامج
    بس السيميوليشن
    Proteus اشتغل تمام

  • @ahmedbibo7214
    @ahmedbibo7214 2 роки тому

    لو سمحت انا الكود شغال معايا بس علي ال Proteus ال simulation مش شغال

  • @jasons2590
    @jasons2590 4 роки тому +1

    جزاك الله كل خير
    عندي استفسار يا استاذ خالد نحنا بالكود ماعرفنا الكرستال ولا حددنا قيمة و نحنا اصلا شغالين بالinternal osc لكن لما انزع الكرستال من على الميكرو كنترولر ببطل يشتغل ما السبب؟
    سؤال تاني: انت تركت حلقة while (1) فاضية, انا جربت اكتب فيها delay لزمن 1000ms لكن الميكروكنترولر لم ينفذ التاخير و ضل شغال بالمقاطعة (يشغل الليد و يطفيه) بدون اي تاخير
    و هذا يؤدي ان الكود بداخل while1 لم يتم تنفيذه,صحيح؟

    • @DeepBlueMbedded
      @DeepBlueMbedded  4 роки тому +1

      اعزك الله اخی الكريم
      اجابة سؤالك الاول. اكيد فی مشكلة بالconfigurations بتاعتك الميكروكنترولر لتحديد مصدر الكلوك .. لازم تختاره بشكل صحيح سواء داخلية او خارجية. واضح من كلامك ان الكونفيج معمولة علی كريستالة خارجية لذلك لما تنزعها بيبطل يشتغل.
      السؤال الثانی. طبيعی ما يحدث معك لان المقاطعات تقطع ای شیء بداخل الmain بما في ذلك الديلای نفسه. وقت يجی انتربت التايمر يتم قطع الديلای و يروح المتحكم يغير حالة الليد و يرجع يكمل الديلای. فی لابات عملية اخری فی الكورس هتعرف خلالها الموضوع دا اكتر و بشكل اوضح ان شاء الله.
      و اخر شیء. لأ الكود بداخل الwhile 1 يتم تنفيذه بشكل عادی لكن يتم قطعه عند وصول ای انتربت و يعود الكنترولر لاستكماله بعد انتها تنفيذ الكود بتاع الisr

    • @jasons2590
      @jasons2590 4 роки тому

      @@DeepBlueMbedded اثابك الله كل خير استاذ خالد
      اعتقد اني فهمت كفاية و انشاء الله استوعب بشكل اعمق في الدروس القادمة
      مستمرين معك
      الف تحية

  • @taharmouz8864
    @taharmouz8864 3 роки тому

    سلامتك

  • @abdelrahmannabil3013
    @abdelrahmannabil3013 2 дні тому

    السلام عليكم شكرا على مجهودك الرائع .انا عندى مشكلة فى 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;
    }
    }

  • @eng-mohammedrafaat7784
    @eng-mohammedrafaat7784 5 років тому

    جزاك الله خيرا على هذا المحتوي الجميل والاكثر من رائع
    عندي سؤال . انا لما اجي استخدم مكثف داخل الدايرة بتاعتي بحدد قيمة المكثف المناسبة ازاى
    انا عارف ان قيمة المكثف بتساوي
    1/(2*Pi*R*Fc)
    المقاومة دي بتكون معلومة معايا وتقريبا بتكون متوصلة على التوازي مع المكثف وكمان التردد معلوم بنسبالى انا الى بحدده في بداية الكود او لو حاطتها خارجية
    هل الكلام دة صحيح ولا نقصه حاجة انا مش فهمها

    • @DeepBlueMbedded
      @DeepBlueMbedded  5 років тому

      ربنا يحفظك يا اخى ^^
      امممم مش عارف الحقيقة اى مكثف تقصد ؟ انا فاكر الفيديو دا مكنش فيش مكثفات خالص تقريبا

    • @eng-mohammedrafaat7784
      @eng-mohammedrafaat7784 5 років тому

      @@DeepBlueMbedded
      انا فهمت انا المكثف الى بتحطه عند مدخل الجهد دة بيكون للتنعيم
      لكن لما يكون فية Bouncing effect
      اتغلب على الموضوع دة بالمكثف بس انا مش عارف المفروض احط قيمته كام بالظبط
      هو التعليق خارج الدرس دة

    • @DeepBlueMbedded
      @DeepBlueMbedded  5 років тому +1

      أها ايوا صح كدة XD
      انا عصرت دماغى فاكر ان الدرس دا مكنش فيه مكثفات ايوا .. تعليق خارج الدرس
      و فعلا النقطة دى مهمة جدا و ليه حلقات الكترونكس خاصة يمكن لسا منزلتش لكن هتنزل قريب اوى ف خليك متابع و ان شاء الله هتلاقى اجابات وافية بخصوص الموضوع دا
      و بالنسبة للBypassing Cap ال بيتحط عند مدخل الجهد
      عادة بيكون من100ميكرو و اكبر منها لو تطلب الامر ,
      حسب التصميم و كمية الICs فى البوردة

    • @eng-mohammedrafaat7784
      @eng-mohammedrafaat7784 5 років тому

      منتظر حلقاتك العظيمة جزاك الله خيرا

  • @abdelrahmanyousef2237
    @abdelrahmanyousef2237 5 років тому

    #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;
    }
    }
    معلش ممكن أعرف ايه المشكله هنا؟؟

    • @DeepBlueMbedded
      @DeepBlueMbedded  5 років тому +2

      لازم أعرف رسالة الError
      مفيش خطأ syntax هنا غير بس الidentifier بتاع الانتربت لانه اتغير من فترة كدة .. اصبح بالشكل الاتی
      void __interrupt() ISR(void)
      {
      ..
      }

    • @abdelrahmanyousef2237
      @abdelrahmanyousef2237 5 років тому +1

      @@DeepBlueMbedded اه دا فعلا كان المشكله

    • @mostafaosman4162
      @mostafaosman4162 4 роки тому

      @@abdelrahmanyousef2237
      code in MPLAB IDE V.5.40
      void __interrupt() ISR(void){
      if(TMR1IF)
      {
      c++;
      if (c==15)
      {
      RB0=~RB0;
      c=0;
      }
      TMR1IF=0;
      }
      }

  • @issaayoub1567
    @issaayoub1567 2 роки тому

    بس وضح الصورة