RP Store Tìm linh kiện theo mã, gửi BOM nhận báo giá Gửi BOM

Xin hỏi về ngắt timer0 PIC6F877A!!! giúp e với !!!!

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • aka
    Nhập môn đệ tử
    • May 2007
    • 9

    #1

    Xin hỏi về ngắt timer0 PIC6F877A!!! giúp e với !!!!

    e được biết là khi timer0 tràn thi nhảy vào ngắt, nhưng khi nào thì nó đếm tiếp? khi thực hiện xong ngắt hay là khi vừa nhảy vào ngắt?
    e mới học nên kô rõ lắm chỗ nay, xin các cao thủ chỉ giáo?
  • phamminhtuan
    Super Moderator
    • Feb 2006
    • 150

    #2
    Nguyên văn bởi aka View Post
    e được biết là khi timer0 tràn thi nhảy vào ngắt, nhưng khi nào thì nó đếm tiếp? khi thực hiện xong ngắt hay là khi vừa nhảy vào ngắt?
    e mới học nên kô rõ lắm chỗ nay, xin các cao thủ chỉ giáo?
    Khi còn được cấp dao động và còn cho phép Timer 0 chạy thì nó sẽ đếm
    Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
    http://www.picvietnam.com/forum/showthread.php?t=1263

    Comment

    • aka
      Nhập môn đệ tử
      • May 2007
      • 9

      #3
      E biết vậy nhưng ý e hỏi là khi nó đang thực hiện ngắt thì nó có đếm không hay là khi thực hiện xong ngắt và trở về chương trình chính nó mới đếm tiếp ?

      ngắt của e nó thế này :
      Code:
      void timer0()
      {
      set_timer0(6); // T = 16*(256 - 6)*0.2us = 800us (ne^'u dùng tha.ch anh 4M thi thay 0.2us thành 1us)
      ++count;
            set_adc_channel(0); // RA0/AN0(Pin2) is analog input channel
            delay_us(10);
            ap_adc=read_adc();
            ap_dc=ap_dc+ap_adc;
            set_adc_channel(1);
            delay_us(10);
            dong_adc=read_adc();
            dong_dc=dong_dc+dong_adc;
            power=(ap_adc-v_offset)*(dong_adc-i_offset);
            value=power+ value;
       if(count==625) //800*200=240000
         {
         count=0;
            v_offset=ap_dc/625;
            i_offset=dong_dc/625;
            power_tb=(value/625)*1.13;            //Ki=480
                                                        //Kv=639
                                                      //power_tb=(ap_adc*Kv*(5/1024))*(dong_adc*Ki*(5/1024))
            
            power_sum=power_tb*0.5/(3600*1000); //power_tb*0.2/(3600*1000) __10 chu ky
            temp=power_sum+temp;
            if(temp>=0.001) 
            {
               sum=sum+temp;
               temp=temp-0.001;
               RB7=1;
               delay_ms(20);
               RB7=0;
            }
         ap_dc=0;
         dong_dc=0;
         value=0;
         }
      }
      Last edited by phamminhtuan; 10-12-2009, 11:15 AM. Lý do: Định dạng code

      Comment

      • phamminhtuan
        Super Moderator
        • Feb 2006
        • 150

        #4
        Có nghĩa là khi con PIC còn chạy thì vẫn còn dao động, cho dù CPU có làm việc gì đi chăng nữa, nếu Timer0 vẫn được cho phép thì nó vẫn cứ tiếp tục đếm.

        Trả lời chính xác câu hỏi của bạn là "Trong ngắt Timer 0 vẫn đếm"

        Tuy nhiên, dùng delay tới 20ms trong ngắt như chương trình của bạn thì cho dù Timer 0 có tràn tiếp 1 lần nữa nó vẫn không gây ra ngắt, vì khi vào Ngắt, GIE bị xóa che các ngắt khác
        Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
        http://www.picvietnam.com/forum/showthread.php?t=1263

        Comment

        • aka
          Nhập môn đệ tử
          • May 2007
          • 9

          #5
          cảm ơn bạn nhiều, mình hiểu rồi, mình sẽ đem delay ra ngoài ngắt !

          Comment

          • nghia_tdh21
            Đệ tử 3 túi
            • Oct 2006
            • 46

            #6
            Ở trong chương trình phục vụ ngắt không nên đặt lời gọi một hàm hay thủ tục nào đó mà mình đã sử dụng trong chương trình. Tốt nhất là bạn nên đặt các biến dạng cờ hay tăng giảm giá trị nào đó thôi. Nếu mình dùng hàm hay thủ tục nào đó đã sử dụng chỗ khác vào trong trình phục vụ ngắt thì trình dịch sẽ thông báo reentrancy
            http://www.hieunghia.info
            Lướt web thoải mái với USB3G của Viettel
            http://www.hieunghia.info/tin-cong-n...3g-vietel.html
            -----------------------------------------------------------------------------------
            Một chút giận,hai chút tham,lận đận cả đời ri cũng khổ.
            Trăm điều lành,ngàn điều nhịn,thong dong tấc dạ rứa mà vui

            Comment

            Working...