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

            • Andrea14
              Vấn đề về tốc độ quay
              bởi Andrea14
              Chào mọi người,

              Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...
              Hôm qua, 12:42
            • bqviet
              Trả lời cho Đấu tắt điện cho máy tính bảng
              bởi bqviet
              Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
              06-12-2025, 17:17
            • nguyendinhvan
              Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
              bởi nguyendinhvan
              Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
              05-12-2025, 19:59
            • afrendly
              Trả lời cho Đấu tắt điện cho máy tính bảng
              bởi afrendly
              Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
              04-12-2025, 01:27
            Đang tải...
            X