Thông báo

Collapse
No announcement yet.

Cho em hỏi về ngắt của PSoC

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

  • Cho em hỏi về ngắt của PSoC

    Các bác cho em hỏi.
    Địa chỉ ngắt GPIO em thấy trong sách và một số ví dụ viết thì nó ở 38h.
    Nhưng trong chương trình em thiết kế thấy địa chỉ của nó là 1ch. Và ở 38h lại là ngắt nối tiếp (UART) và ngắt nối tiếp này chạy bình thường trong khi ngắt GPIO chẳng thấy chạy gì cả.
    Các bác hỉ em cái, chứ em chả hiểu gì cả.

  • #2
    địa chỉ ngắt khác nhau chắc là do thiết bị khác nhau, với PSoC 27xxx, 29xxx thì địa chỉ ngắt GPIO có địa chỉ 1Ch, còn địa chỉ ngắt UART thì phụ thuộc vào vị trí bạn đặt nó vào khối số nào.
    Ngắt GPIO của bạn không chạy có thể là do bạn chưa khai báo trong file boot.tpl
    Bạn vào open file mở file boot.tpl (chọn chế độ view all file để thấy file này) xuống đến dòng:
    org 1Ch ;GPIO Interrupt Vector
    `@INTERRUPT_7`
    reti
    bạn sửa lại thành:
    org 1Ch ;GPIO Interrupt Vector
    ljmp _ngat_gpio
    reti
    vậy là xong.
    Lưu ý "ngat_gpio" là tên hàm phục vụ ngắt GPIO mà bạn cần gọi đến, phải có dấu "_" đằng trước tên này.
    Build thử xem thế nào. Chúc thành công
    Last edited by encoder; 22-09-2006, 17:49.
    CUNG CẤP PSOC, MẠCH NẠP
    CHUYỂN ĐỔI USB <-> RS485 AutoBaud
    RS232 <-> RS485 MultiBaud
    MẠCH NẠP USBPPI S7-200
    Mobile: 0906076116
    Email:

    Comment


    • #3
      Bạn Encoder ơi.
      Mình đang dùng con 29466 và 27443 đọc trong datasheet của 27443 thấy địa chỉ ngắt của thằng này ở 38h nên mới hỏi mọ người. Nhưng mình làm như bạn nói mà nó vẫn không chạy.
      Bạn cho mình hỏi ngoài việc thiết lập chế độ ngắt trong IDE ra còn phải đặt gì khác không( như bon timer các loại khac đều có hàm EnableInt() và Start()...).
      Bạn chỉ giúp mình nhé.
      cán ơn bạn.

      Comment


      • #4
        Tất nhiên là phải có rồi. để tôi cụ thể cho bạn như sau:

        #include <m8c.h> // part specific constants and macros
        #include "PSoCAPI.h" // PSoC API definitions for all User Modules

        #pragma interrupt_handler ngat_gpio
        void ngat_gpio()
        {
        // làm gì thì làm
        }

        void main()
        {
        M8C_EnableGInt;
        INT_MSK0 |= 0x20; // Allow post GPIO interrupt
        ......................
        }

        sau đó khai báo trong file boot.tpl như tôi nói ở trên, rồi chạy thử. Chúc vui
        CUNG CẤP PSOC, MẠCH NẠP
        CHUYỂN ĐỔI USB <-> RS485 AutoBaud
        RS232 <-> RS485 MultiBaud
        MẠCH NẠP USBPPI S7-200
        Mobile: 0906076116
        Email:

        Comment


        • #5
          Cám ơn bạn Encoder,
          Mình làm được rồi.

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          Đang tải...
          X