Thông báo

Collapse
No announcement yet.

Hướng dẫn cách dừng watchdog cho avr ATMEGA32 bằng codevisionAVR cho newbie

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

  • Hướng dẫn cách dừng watchdog cho avr ATMEGA32 bằng codevisionAVR cho newbie


    Thân chào các bạn mình đang làm 1 số thứ có dính đến watchdog của AVR cụ thể là con ATMEGA32A, bật watchdog lên thì đơn giản thôi ko bàn, nhưng thấy nhiều bạn sau khi bật lên thì ko tắt watchdog được mà vụ stop WD thấy ít ai nói đến (dễ quá chăng). Nhân đây xin chia sẻ tí kiến thức.
    Thứ nhất mình dùng watchdog loại OSC/2048K của codevision thiết lập sẵn. Theo datasheet thì nó bảo watchdog này cứ 2s reset mcu 1 lần, thế nhưng trên thực tế là chưa đến 0.8s là nó reset mcu rồi (đã kiểm nghiệm trên thực tế+ mô phỏng)
    Thứ hai lần theo datasheet mình đã stop được WD. Đây là code dừng nó đây:
    // Watchdog Timer initialization
    // Watchdog Timer Prescaler: OSC/2048k
    WDTCR=0x0F;
    PORTA.0=0;
    delay_ms(500);
    PORTA.0=1;
    WDTCR=0b00011000; // stop wd
    WDTCR=0x00010000; // stop wd
    (cái while để trống)
    Xin giải thích cơ chế theo datasheet: cái Porta là mình xuất tín hiệu để kiểm tra xem wd có làm việc hay stop, cái dòng WDTCR=0x0F là khai báo của codevision cho phép wd hoạt động, hai dòng cuối là 2 lệnh của mình nhằm stop wd
    Nếu wd đang hoạt động ok thì bạn sẽ thấy porta.0 nhấp nháy do bị reset liên tục (bỏ 2 dòng cuối đi)
    Khi wd stop bạn sẽ thấy porta.0 nháy 1 lần rồi đơ
    WDTCR=0b00011000 có nghĩa là bạn nạp giá trị 1 vào bit WDTOE và WDE trong thanh ghi WDTCR lúc này watchdog chưa stop đâu nha
    WDTCR=0x00010000 có nghĩa là sau đó bạn cho WDE=0 bây giờ watchdog stop rồi đó, bạn có thề làm gì tùy thích
    Xong ùi nếu thấy có ích thì thank hay commend or Re cho mình nhé vì lâu lâu mình mới post bài, cần động lực để post thêm
    Làm sao mà bạn dám nói là không làm được khi bạn chưa từng thử một lần nào.
    Ngay cả khi bạn đã làm 1 lần và thất bại bạn cũng không có quyền nói là không làm được vì bạn chưa làm lần thứ 2,3...

  • #2
    tôi thấy bạn viết không đúng lắm, tôi cũng đang đi tìm hiểu về wd vì trong công ty mạch nhiễu quá, chắc phải cho nó vào thì mới ổn dc
    WDTCR=0b00011000; // stop wd "nhị phân"
    WDTCR=0x00010000; // stop wd "thập lục phân"
    tom and jery !!!!!!!

    Comment


    • #3
      Tại sao lại phải tắt WDT ?

      Comment


      • #4
        nó đang thực hiện 1 đoạn chương trình mà lại bị reset lại thì làm sao

        Nguyên văn bởi duong_act Xem bài viết
        Tại sao lại phải tắt WDT ?
        tom and jery !!!!!!!

        Comment


        • #5
          Nguyên văn bởi canh48ckcd Xem bài viết
          nó đang thực hiện 1 đoạn chương trình mà lại bị reset lại thì làm sao
          Sử dụng WDT mà để nó Reset chương trình khi đang thực hiện thì chắc cũng ko cần bật nó lên đâu
          Nhiệm vụ của người lập trình là phải kiểm soát được WDT tức là không cho nó Reset chương trình bừa bãi, mà nếu không làm được điều đó thì không nên dùng.

          Comment


          • #6
            ông bạn Duơng này nói đúng, không kiểm soát dc nó thì không lên dùng. Nhưng khi đi vào môi trường nhà máy và xưởng SX nhiễu rất nhiều, chúng ta cần phải dùng đến nó, chứ hơi đâu máy có vấn đề cái lại ra reset lại máy.
            Hiện tại tôi cũng đang gặp vấn đề với nhiễu, đang nghiên cứu về nó. Hiểu thì hiểu bản chất của nó rồi nhưng khi đi lập trình thì chưa kiểm soát dc dù là chuơng trinh đơn jan, nó chạy rất là khó hiểu.
            tom and jery !!!!!!!

            Comment


            • #7
              như vậy là hoạt động đúng.
              sử dụng wdt là nhằm tránh các th ko lường trước dc.còn nếu biết trước được thì trong đoạn đó reset wdt là xong.
              còn nếu ko thì dùng wdt làm j
              email:trangonthuocthom@gmail.com

              Comment


              • #8
                Khó hiểu gì đâu. Đơn giản nó là 1 timer và khi nó tràn nó sẽ reset hoặc đánh thức MCU. Vậy khi sử dụng nó thì chỉ việc cài đặt thời gian tràn cho nó, bật nó lên và thường xuyên reset nó trước khi nó tràn và gây reset chip.

                Comment


                • #9
                  các bạn đánh giá sao về đoạn chuơng trình của chủ thớt?
                  tom and jery !!!!!!!

                  Comment


                  • #10
                    Mình cũng không biết WDT của AVR có chức năng tắt hay không nhưng mà theo mình nghĩ WDT đang chạy mà tắt được bằng phần mềm thì vứt quách WDT vào sọt rác cho xong

                    Comment


                    • #11
                      Nguyên văn bởi duong_act Xem bài viết
                      Mình cũng không biết WDT của AVR có chức năng tắt hay không nhưng mà theo mình nghĩ WDT đang chạy mà tắt được bằng phần mềm thì vứt quách WDT vào sọt rác cho xong
                      wdt có cả cứng cả mềm ... có loại chỉ có Cứng , có loại có cả cứng + mềm ... nếu có mềm có thể bật tắt WDT như ta bật tắt ngắt chẳng hạn
                      Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                      Comment


                      • #12
                        WDT mềm theo em nghĩ là không an toàn, nhiễu trúng bit OFF của nó thì thôi xong @@.
                        Chó canh mà cũng ngủ gật thì còn canh gì nữa ạ
                        Last edited by duong_act; 21-10-2012, 13:04.

                        Comment


                        • #13
                          đó là ý kiến của ban thôi, ng ta thiết kế ra thừa
                          tom and jery !!!!!!!

                          Comment


                          • #14
                            Nguyên văn bởi canh48ckcd Xem bài viết
                            đó là ý kiến của ban thôi, ng ta thiết kế ra thừa
                            Còn phải xem thằng WDT kia nó là kiểu gì.

                            Comment

                            Về tác giả

                            Collapse

                            hoahauvn2 Old man Tìm hiểu thêm về hoahauvn2

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

                            Collapse

                            Đang tải...
                            X