Thông báo

Collapse
No announcement yet.

Thanh ghi TCNT1

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

  • Thanh ghi TCNT1

    Các bác cho em lời khuyên làm sao để đọc hết giá trị 16 bit của thanh ghi TCNT1 của timer/counter 1 vậy ?

    Trong code vision em đã thử mọi cách nhưng chỉ đọc được giá trị của 8 bit ( tức chỉ có TCNT1L), hic. Cứ mỗi lần timer0 tràn sẽ cập nhật giá trị của thanh ghi TCNT1.

    Code:
    interrupt [TIM0_OVF] void timer0_ovf_isr(void)
    {
    // Reinitialize Timer 0 value
    	TCNT0=0x01; 
           count=TCNT1;      // kể cả khi làm như vầy cũng không xong : 
                                    //count=TCNT1H<<8+TCNT1L,
    }
    các bác cho ý kiến với.

  • #2
    Nguyên văn bởi core T Xem bài viết
    Các bác cho em lời khuyên làm sao để đọc hết giá trị 16 bit của thanh ghi TCNT1 của timer/counter 1 vậy ?

    Trong code vision em đã thử mọi cách nhưng chỉ đọc được giá trị của 8 bit ( tức chỉ có TCNT1L), hic. Cứ mỗi lần timer0 tràn sẽ cập nhật giá trị của thanh ghi TCNT1.

    Code:
    interrupt [TIM0_OVF] void timer0_ovf_isr(void)
    {
    // Reinitialize Timer 0 value
    	TCNT0=0x01; 
           count=TCNT1;      // kể cả khi làm như vầy cũng không xong : 
                                    //count=TCNT1H<<8+TCNT1L,
    }
    các bác cho ý kiến với.
    Code:
    unsigned int TIM16_ReadTCNT1( void )
    {
    unsigned char sreg;
    unsigned int i;
    /* Save Global Interrupt Flag */
    sreg = SREG;
    /* Disable interrupts */
    _CLI();
    /* Read TCNT1 into i */
    i = TCNT1;
    /* Restore Global Interrupt Flag */
    SREG = sreg;
    return i;
    }
    việc đọc các thanh ghi 16 bit trong AVR yêu cầu 1 số thủ tục vì cấu trúc nó chỉ có 8bit.

    Sông dài, Thuyền lớn, Biển rộng bao la.
    Tháo neo ngôn ngữ, lèo lái con thuyền kiến thức nhân loại.

    Comment


    • #3
      @quoc_thaibk: T đã làm theo của bác trước đó rồi, đây là mẫu code trong datasheet của AVR, nhưng khi dịch T thấy nó báo lỗi + giá trị thanh ghi không phải là giá trị thực, T vẫn chưa hiểu nguyên do tại sao nữa.

      Code:
      unsigned int TIM16_ReadTCNT1( void )
      {
      unsigned char sreg;
      unsigned int i;
      /* Save Global Interrupt Flag */
      sreg = SREG;
      /* Disable interrupts */
      _CLI();// báo lỗi ngay tại đây ????
      /* Read TCNT1 into i */
      i = TCNT1;
      /* Restore Global Interrupt Flag */
      SREG = sreg;
      return i;
      }
      Last edited by core T; 10-12-2008, 07:53.

      Comment


      • #4
        8 bit là phải rồi . Muốn đọc 16 bit thì phải đọc TCNT1L trước .

        count=TCNT1L+ 256*TCNT1H .( thế là xong) . Đọc datasheet kỹ trước khi post bài nha bạn . Tránh làm loãng diễn đàn .

        Comment


        • #5
          Để đọc TCNT1 thì cứ ...đọc bình thường, ko phải làm thao tác gì thêm.

          usnigned int i;
          i = TCNT1;

          nếu bị lỗi thì nên: xem đã iclude file header đúng chưa, cài lại covisionAVR.

          Comment


          • #6
            Nguyên văn bởi hoacucvang Xem bài viết
            8 bit là phải rồi . Muốn đọc 16 bit thì phải đọc TCNT1L trước .

            count=TCNT1L+ 256*TCNT1H .( thế là xong) . Đọc datasheet kỹ trước khi post bài nha bạn . Tránh làm loãng diễn đàn .
            Cám ơn bạn đã cho lời khuyên.

            Sorry, T khai báo bị sai nên giá trị update không đúng ngay từ đầu.

            Thanks for all.
            Last edited by core T; 10-12-2008, 13:00.

            Comment

            Về tác giả

            Collapse

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

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

            Collapse

            • 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
            • nick22
              Trả lời cho Máy điện châm ?
              bởi nick22
              Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
              01-12-2025, 13:23
            Đang tải...
            X