Thông báo

Collapse
No announcement yet.

Cách đếm số lần tràn timer của Atmega16

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

  • Cách đếm số lần tràn timer của Atmega16

    cho e hỏi là với chế độ bình thường Timer1 sau khi đếm từ 0-->top =65536 thì avr sẽ tràn và cờ Tov1 sẽ được bật lên 1.nhưng đến lần thứ 2 tràn thì TOV1 sẽ ở giá trị mấy(e đọc datasheet mà ko hiểu chỗ này),như vậy nếu muốn đọc số lần tràn của Timer 1 thì mình phải làm sao có cách nào khác ngoài việc quan sát cờ TOV1 ko ạ,ai có code hay ví dụ mẫu cho e xin để e dễ hình dung với .E mới tiếp xúc AVR nên còn nhiều thắc mắc mong các mem giúp đỡ nhiều

  • #2
    Bạn không hiểu bản chất của cờ TOV1, cờ đó chỉ là báo hiệu tràn thôi, còn nếu muốn đếm số lần tràn thì bạn phải sử dụng một biến khác nhé

    Comment


    • #3
      vậy là cách sử dụng biến ntn b cho mình gợi ý chút đi ,biến này là từ trong các bit,cờ trong timer hay từ code ra vậy

      Comment


      • #4
        Bạn sử dụng thanh ghi R0 hay R1...... gì đó ở các bank thanh ghi ấy

        Comment


        • #5
          hix - khổ quá cơ
          thế này này:

          cờ trong timer được tự động bật lên 1 khi có tràn - và để cho lần tràn sau thì ta phải xóa đi trong chương trình ngắt

          giả sử: demsolantran la 1 biến

          int demsolantran = 0;


          Chuong trinh ngat timer:
          void ngat_timer()
          {
          xoa co bao ngat di ( cho OV = 0);
          tăng biến demsolantran lên 1 đơn vị ( demsolantran = demsolantran + 1 )

          }
          Be quan. Plz contact through email:

          Comment


          • #6
            Nguyên văn bởi Lenh Ho Xem bài viết
            hix - khổ quá cơ
            thế này này:

            cờ trong timer được tự động bật lên 1 khi có tràn - và để cho lần tràn sau thì ta phải xóa đi trong chương trình ngắt

            giả sử: demsolantran la 1 biến

            int demsolantran = 0;


            Chuong trinh ngat timer:
            void ngat_timer()
            {
            xoa co bao ngat di ( cho OV = 0);
            tăng biến demsolantran lên 1 đơn vị ( demsolantran = demsolantran + 1 )

            }
            Ý bạn ấy là muốn đếm số lân tràn

            Comment


            • #7
              thế biến demsolantran ban ko hiểu ý nghĩa sao - haizzzzz
              Be quan. Plz contact through email:

              Comment


              • #8
                Mình mới học 8051 thôi nhưng nếu trong trường hợp muốn đếm số lần tràn thì khi tràn lần 1 cờ tràn ( TFx) sẽ báo 1 thì ta chỉ việc cộng vào thanh ghi A rồi xóa đi sau đó tràn tiếp thì cộng tiếp vào thôi. Bạn xem trong AVR thanh ghi để xử lý phép toán học là gì nhé.

                Comment


                • #9
                  Nguyên văn bởi lucky3379 Xem bài viết
                  cho e hỏi là với chế độ bình thường Timer1 sau khi đếm từ 0-->top =65536 thì avr sẽ tràn và cờ Tov1 sẽ được bật lên 1.nhưng đến lần thứ 2 tràn thì TOV1 sẽ ở giá trị mấy(e đọc datasheet mà ko hiểu chỗ này),như vậy nếu muốn đọc số lần tràn của Timer 1 thì mình phải làm sao có cách nào khác ngoài việc quan sát cờ TOV1 ko ạ,ai có code hay ví dụ mẫu cho e xin để e dễ hình dung với .E mới tiếp xúc AVR nên còn nhiều thắc mắc mong các mem giúp đỡ nhiều
                  Bác cần khai báo 1 biến đếm số lần tràn, đặt chế độ ngắt với Timer1. Khi tràn cờ Tov1 được bật lên, hàm phục vụ ngắt sẽ chạy và cờ này tự động xóa, lần 2 tràn thì cờ này chỉ là 1 thôi. Nếu không đặt chế độ ngắt, cờ này cũng chỉ lấy giá trị 1 thôi. Các hàm và thủ tục bác có thể lấy trong codevision:
                  Hàm ngắt đây:
                  unsigned int demsolantran;
                  // Timer 1 overflow interrupt service routine
                  interrupt [TIM1_OVF] void timer1_ovf_isr(void)
                  {
                  // Place your code here
                  demsolantran++;
                  }

                  Phần khởi tạo đây:
                  // Clock value: 16000.000 kHz
                  // Mode: Normal top=FFFFh
                  // OC1A output: Discon.
                  // OC1B output: Discon.
                  // Noise Canceler: Off
                  // Input Capture on Falling Edge
                  // Timer 1 Overflow Interrupt: On
                  // Input Capture Interrupt: Off
                  // Compare A Match Interrupt: Off
                  // Compare B Match Interrupt: Off
                  TCCR1A=0x00;
                  TCCR1B=0x01;
                  // Timer(s)/Counter(s) Interrupt(s) initialization
                  TIMSK=0x04;

                  Comment

                  Về tác giả

                  Collapse

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

                  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 nay, 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