Thông báo

Collapse
No announcement yet.

Cho e hỏi về Timer Psoc

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

  • Cho e hỏi về Timer Psoc

    Hiện e đang có 1 bài toán như thế này, e sử dụng 1 bộ counter để đếm số xung tác động từ 1 nút ấn, LCD sẽ hiển thị số xung này. Sử dụng 1 bộ Timer để cứ sau 1 phút thì reset lại timer và counter đồng thời ghi lại số xung đếm được vào 1 biến.
    Việc đếm xung e đã làm được,còn việc tạo timer thì chưa hiểu như thế nào để thực hiện nó vì đọc cái công thức tính k hiểu j hết.
    E định làm như sau: Khởi động cuonter và timer cùng 1 lúc, counter thì cứ đếm còn timer thì đếm lùi lại,khi timer về 0 thì thực hiện ngắt Timer và làm các việc như lưu giá trị couter,hiện giá trị cuonter..... Như thế liệu có được k ạ?
    Bác nào có kinh nghiệm thì giải quyết hộ e được k ạ.
    Tài nguyên toàn cục e để như sau:
    CPU_Clock: SysClk/2
    VC1=SysClk/N=2
    VC2=1
    VC3=VC1
    VC3Divider=156

  • #2
    chỉ cần mấy lệnh này là ngắt timer chạy.

    #define PERIOD 100

    // 3 hàm này chỉ gọi 1 lần trong hàm main()
    Timer8_1_EnableInt();
    Timer8_1_WritePeriod( PERIOD); // PERIODE liên quan đến chu kì ngắt timer
    Timer8_1_Start(); // start timer

    // doạn ctrinh này viết ngoài hàm main()
    #pragma interrupt_handler Timer8_1_ISR // khai báo sử dụng ngắt timer

    void Timer8_1_ISR() // ctrinhf ngắt timer
    {
    // muốn ngắt làm j viết vào đây
    }


    có nhiều bài cũ hướng dẫn tỉ mỉ hơn bạn tham khảo thêm nhé.
    Cty tnhh thiết bị điện - điện tử công nghiệp: 0437821690 / 0988.775.900
    Thiết kế hệ thống điện điều khiển
    Sửa chữa INVERTER, DRIVER , PLC, UPS ...!

    Comment


    • #3
      e làm thử như hướng dẫn rồi đấy chứ nhưng vẫn chưa thành công.Tối e về e sẽ gửi cả chương trình của e lên cho các bác ngó thử hộ e cái nhé.Ngắt còn chưa nhảy vào đc cơ

      Comment


      • #4
        bổ sung thêm của bạn vietkien. để chương trình ngắt có thể thực hiện được. bạn phải vào trong mục header chọn mục timer8int. trong file này bạn tìm đến chương trình ISR_Timer8....., bạn thêm vào dòng lênh
        : ljmp _Timer8_1_ISR là đc

        Comment


        • #5
          Vâng e đã làm đc cái ngắt timer này nhưng các bác cho e hỏi, nếu đã xảy ra ngắt rồi thì sau đấy chương trình chạy tiếp tới đâu ạ? chạy lại hàm main() hay dừng lại luôn ạ?
          Theo e hiểu nôm na có phải là nếu e để 3s thì xảy ra ngắt timer thì bắt đầu chạy chương trình,sau 3s xảy ra ngắt, thực hiện chương trình con phục vụ ngắt .VÀ SAU 3S NỮA THÌ THOÁT KHỎI NGẮT VÀ CHẠY TIẾP HÀM MAIN(); k biết mấy chữ e viết hoa kia có đúng k ạ?

          Comment


          • #6
            thời gian để có một ngắt xảy ra, cái này bạn có thể lập trình được(tùy vào bộ đinh thời khi nào tràn) còn thời gian thực hiện xong ngắt, cái này tùy thuộc chương trình ngắt của bạn, khi ngắt thực thi xong, nó sẻ thực hiện lệnh kế tiếp (lệnh này đáng lẽ ra sẻ đựoc thực hiện nếu kô có ngắt) trong main

            Comment

            Về tác giả

            Collapse

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

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

            Collapse

            Đang tải...
            X