Thông báo

Collapse
No announcement yet.

Cách tạo ra trạng thái treo cho AVR

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

  • Cách tạo ra trạng thái treo cho AVR

    Tôi đang xem lại về watchdog của AVR muốn có được trạng thái treo của VDK để thử, mong anh em giúp đỡ cách làm với (Treo có ý thức!)

  • #2
    cho nó vào 1 cái vòng lặp vô hạn là coi như treo
    |

    Comment


    • #3
      Thử cái này xem nhá !

      Khởi tạo lại stack pointer về đâu đó miễn là không còn nằm trong bộ nhớ Flash nữa.
      --> dùng asm cho nó một lệnh "ret" là nó tiu ngay

      Chưa biết bạn có thành công hay không nhưng NVT2 vẫn hay làm thế !

      NVT2
      Tín đồ AVR giáo.

      Comment


      • #4
        Cám ơn hai bạn, tôi sẽ thử hai cách đó xem! hy vọng là ổn.

        Comment


        • #5
          Theo tui thì 2 cách trên không ổn.
          Vì bạn phải cần 1 chương trình chạy tốt có thể kiểm chứng được, ví dụ nhấp nháy 1 con LED. Và tác động cho nó treo (con LED hết nhấp nháy).
          Chứ theo 2 cách kia thì ta đâu có biết nó chạy (dù là chạy tầm bậy), hay treo.
          Theo mình thì bạn thử dùng con AVR có điện áp làm việc cao (4.5 - 5.5 VDC), nạp 1 chương trình chạy tốt, disable BOD, chân reset nối +VCC.
          Tức là AVR khởi động bằng POR.
          Sau đó giảm từ từ Vcc xuống và theo dõi xem AVR có treo k?
          Imagine all the people
          Living life in peace...

          Comment


          • #6
            Treo có nghĩa là Time out , vậy thì ta chỉ cần thử time out là được thôi

            Muốn thử Watchdog time out của AVR thì chỉ cần :

            1) trong hàm Main cho 1 chân bất kỳ ( VD : PD1 =1 ; Delayms (250); )

            trong while xóa PD1 =0;

            làm thêm 1 lệnh trễ thật lớn ( lớn hơn time out của WDT )

            VD : delay (1 giây ) .

            Khi thấy cái PD1 nhấp nháy tức là WDT tràn và AVR reset.

            --- Còn trong trường hợp cụ thể nếu treo quá cả cứng cả mềm thì dùng WDT ngoài .
            ( nhưng tôi thấy WDT của AVR tốt hơn PIC )
            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


            • #7
              Muốn check watchdog thì cũng không nhất thiết phải để cho nó treo đâu !
              NVT2
              Tín đồ AVR giáo.

              Comment


              • #8
                Nguyên văn bởi nvt2 Xem bài viết
                Muốn check watchdog thì cũng không nhất thiết phải để cho nó treo đâu !
                NVT2
                Có cách nào vậy, ban có thể cho tôi và những người quan tâm được biết không? Thực ra cái này cũng rất ít người biết mặc dù đa số các chip hiện nay có chức năng này!

                Comment


                • #9
                  Nguyên văn bởi linhleduong Xem bài viết
                  Có cách nào vậy, ban có thể cho tôi và những người quan tâm được biết không? Thực ra cái này cũng rất ít người biết mặc dù đa số các chip hiện nay có chức năng này!
                  Bài trên của tôi trả lời câu hỏi của bạn rồi đó
                  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


                  • #10
                    To AT89C51:
                    Cái luồng này không trao đổi từ tháng 11-2009 không biết giờ còn ai theo dõi không nhỉ.
                    - Để thử hoạt động của watchdog timer không nhất thiết phải tạo ra trạng thái treo CPU.
                    - watchdog timer chỉ là một cái timer, nó được thiết kế ra để giải cứu CPU khỏi các tình huống nguy hiêm như các trạng thái treo, hoặc chết ở đâu đó không thể trở về được...
                    - Khi khởi tạo cho watchdog timer, CPU đặt cho watchdog timer một thời gian timer out (một ngưỡng đếm) và watchdog timer bắt đầu đếm. Mỗi khi watchdog timer đếm đến ngưỡng thì CPU phải thực hiện một tác vụ đó là xoá giá trị đếm của watchdog timer về giá trị đầu. Nếu vì một lý do nào đó (do treo, do đang chết trong vòng lặp nào đó...) CPU không thể xoá giá trị đếm của watchdog timer về giá trị đầu, watchdog timer sẽ đếm tràn qua ngưỡng, khi đó nó sẽ reset hệ thống.
                    - Vì vậy để thử hoạt động của watchdog timer có thể thực hiện bằng cách, đặt một thời gian timeout rồi cho nó đếm. Nhưng khi nó đếm đến ngưỡng, không xoá giá trị của nó về giá trị đầu và kiểm tra xem hệ thống có bị reset hay không.

                    Thân mến,
                    For a better world

                    Comment

                    Về tác giả

                    Collapse

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

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

                    Collapse

                    Đang tải...
                    X