Thông báo

Collapse
No announcement yet.

lập trình đa nhiệm cho vi diều khiển dùng timer

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • lập trình đa nhiệm cho vi diều khiển dùng timer

    ai biết viết hàm delay dùng timer cho vi điều khiển mà khi delay CPU vẫn làm được những việc khác không? chẳng hạn như khi delay vi điều khiển vẫn có thể quét được phím
    em tham khảo code trên diễn đàn nhưng khi delay CPU không làm được gì cả. mong các tiền bối chỉ giáo.
    cảm ơn nhiều.
    Never forget who you are!

  • #2
    Cái này bạn nên tìm hiểu về freertos.

    Comment


    • #3
      Nguyên văn bởi enter88 Xem bài viết
      Cái này bạn nên tìm hiểu về freertos.
      đây là đoạn code mình viết để tạo xung ở PORTA.0 tạo ra 1 xung cứ 1ms tích cực ở mức 1 và 2ms tích cực mức 0 nhưng nó không tạo ra xung như ý muốn bạn có thể check giúp mình không?
      #include <mega16.h>
      #define yes 1
      #define no 0
      void KhoiTao();
      unsigned long ulTime=0;
      unsigned long ulTimeDelay = 0;
      interrupt [TIM0_OVF] void timer0_ovf_isr(void) //ngat timer 100us
      {
      TCNT0=0x9C;
      ulTime++;//mot lan la 100us
      }

      char Delay_100us_(unsigned long *ulMoc_thoi_gian,unsigned long ulThoi_gian_tre)
      {
      if(ulTime>0xFFFFFFFD) ulTime = 0;
      if(*ulMoc_thoi_gian == 0)
      *ulMoc_thoi_gian = ulTime+ulThoi_gian_tre; //set future time will check
      if(ulTime >= *ulMoc_thoi_gian)
      return yes;
      else
      return no;
      }
      //----- ham main------
      void main(void)
      {
      KhoiTao();
      while (1)
      {
      //-------------tao ra xung co do rong khac nhau o muc 1 1ms muc 0 20ms;
      if(Delay_100us_(&ulTimeDelay,10)==no) // tao ra xung tich cuc muc 1 10ms
      {
      PORTA.0 = 0x01;
      ulTimeDelay = 0;
      }
      else
      if(Delay_100us_(&ulTimeDelay,30)==no) //tao xung tih cuc muc 0 20ms
      {
      PORTA.0 = 0x00;
      ulTimeDelay = 0;
      }
      }
      }
      void KhoiTao()
      {

      PORTA=0x00;
      DDRA=0xFF;
      TCCR0=0x02;
      TCNT0=0x9C;
      OCR0=0x00;
      TIMSK=0x01;
      ACSR=0x80;
      #asm("sei")
      }
      cảm ơn nhiều.
      Never forget who you are!

      Comment


      • #4
        Nguyên văn bởi nhquangdt3k5 Xem bài viết
        ai biết viết hàm delay dùng timer cho vi điều khiển mà khi delay CPU vẫn làm được những việc khác không? chẳng hạn như khi delay vi điều khiển vẫn có thể quét được phím
        em tham khảo code trên diễn đàn nhưng khi delay CPU không làm được gì cả. mong các tiền bối chỉ giáo.
        cảm ơn nhiều.
        Bạn vào đây và tìm hiểu về lập trình đa nhiệm với hOS nhé!!!
        http://www.dientuvietnam.net/forums/...Bui-Viet-Hoang

        Comment


        • #5
          bác có thể check hộ mình đoạn code trên được không? mình viết mãi hàm delay dùng time mà không được. tìm trên diễn đàn cũng không thấy. chỉ toàn là delay mà khi delay CPU không làm gì cả. nếu có thì cho mình xin đoạn code tham khảo luôn.
          cảm ơn nhiều
          Never forget who you are!

          Comment


          • #6
            không có bác nào check giúp mình đoạn code này sao??
            Never forget who you are!

            Comment

            Về tác giả

            Collapse

            nhquangdt3k5 Tìm hiểu thêm về nhquangdt3k5

            Bài viết mới nhất

            Collapse

            Đang tải...
            X