Thông báo

Collapse
No announcement yet.

xin giúp đỡ về giải mã ir

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

  • xin giúp đỡ về giải mã ir

    Mình có phần cứng như sau:
    -atmega8 -16pu.
    -thạch anh 16Mhxz.
    - remote sony (TV)
    - led thu (loại vỏ sắt 3 chân 1838).
    - led 3mm nối vào PORTC.5 // led thường để báo kiểm tra
    #define led PORTC.5

    Phần mềm:Codevison

    Chương trình mình check phần cứng đơn giản chỉ như sau:

    +)Khai báo portD.3 (INT1) ngắt ngoài 1 là input và trên phần cứng thực nối pin này với pin out của led thu .
    PORTD=0x04;
    DDRD=0x00;
    +) ở trạng thái thường chân ngắt ngoài 1 này ở mức cao (đo bằng VOM được 4V)



    Trong chương trình chính mình kiểm tra xem pin ngắt ngoài có ở mức cao không:

    while (1)
    {
    // Place your code here
    if(PORTD.3 == 0) // chân ngắt ngoài 1
    { led =on;
    delay_ms(300);
    led = off;
    delay_ms(300);
    led = on;
    delay_ms(300);
    led = off;
    delay_ms(300);
    led = on;
    delay_ms(300);
    led = off;
    delay_ms(300);
    }
    else
    led = on;
    }
    }

    => kết quả thực tế led nhấp nháy liên tục => PORTD.3 ở mức thấp trong khi mình đo thực lại được 4V tại pin nek mình không hiểu lý do tại sao??
    để loại trừ mình dùng điện trở 10k kéo lên Vcc tại pin nek đo được 5V nhưng kết quả thu được led vẫn nhấp nháy =>VDK vẫn hiểu pin này đang ở mức thấp.

  • #2
    nếu led thu bạn mắc trực tiếp vào chân port thì bình thường chân LED thu ở mức thấp đấy, phải dùng trans NOT nó 1 cái ^^!

    Comment


    • #3
      Nguyên văn bởi chung1608 Xem bài viết
      nếu led thu bạn mắc trực tiếp vào chân port thì bình thường chân LED thu ở mức thấp đấy, phải dùng trans NOT nó 1 cái ^^!
      mình đo được 5V tại chân đó sao lại gọi là mức thấp được hả bạn? Mình đang chạy mạch trên testboard nên mình thử bỏ lun con led ra và dùng điện trở kéo lên Vcc thì kết quả vẫn vậy. VDK vẫn hiểu đang ở mức thấp

      Comment


      • #4
        Nguyên văn bởi typhoon Xem bài viết
        mình đo được 5V tại chân đó sao lại gọi là mức thấp được hả bạn? Mình đang chạy mạch trên testboard nên mình thử bỏ lun con led ra và dùng điện trở kéo lên Vcc thì kết quả vẫn vậy. VDK vẫn hiểu đang ở mức thấp
        tình hình là bạn khai báo portD =0x04 thì là tất cả các chân portD đều bằng 0 và chỉ có portD.2 là bằng 1 đó,thử khai báo lại xem

        Comment


        • #5
          Nguyên văn bởi chung1608 Xem bài viết
          tình hình là bạn khai báo portD =0x04 thì là tất cả các chân portD đều bằng 0 và chỉ có portD.2 là bằng 1 đó,thử khai báo lại xem
          đó là cách khai báo dùng "điện trở kéo trong" mình mún dùng điện trở kéo ngoài không được ah ? :=)

          Comment


          • #6
            Nguyên văn bởi typhoon Xem bài viết
            đó là cách khai báo dùng "điện trở kéo trong" mình mún dùng điện trở kéo ngoài không được ah ? :=)
            mình ko rành C lắm, nhưng mình thấy là phần cứng trở pullups nội của VDK thì đã là phần cứng rồi, nếu bạn khai báo chân nào đó là 0 thì nó sẽ ở mức 0 và ngược lại. Gắn thên trở ngoài chỉ làm tổng trở pullups nhỏ lại thôi

            Comment


            • #7
              nó là ngõ input tín hiệu phải biến đổi theo những gì được cấp chứ sao lại cố định.0 hoặc 1 theo khai báo?

              mình khai báo lại điện trở trong lên:
              PORTD=0x0C;
              đúng ý bạn rùi phải không? và chương trình chính vẫn giữ nguyên:
              while (1)
              {
              //Place your code here
              if(PORTD.3 == 0)
              { led =on;
              delay_ms(300);
              led = off;
              delay_ms(300);
              led = on;
              delay_ms(300);
              led = off;
              delay_ms(300);
              led = on;
              delay_ms(300);
              led = off;
              delay_ms(300);
              }
              else
              led = on;
              }
              =>Kết quả thu được led sáng và không nhấp nháy => pin nek đang ở mức cao, rồi mình dùng một sợi dây nối mass nguồn với pin này => kết quả led vẫn sáng không nhấp nháy => pin này vẫn ở mức cao vậy là sao ????oke reset thử cái kết quả vẫn vậy ..pó tay toàn tập
              Last edited by typhoon; 28-09-2011, 11:31. Lý do: lỗi font

              Comment


              • #8
                Mình không dùng phần mềm codevision bản ***** để viết nữa mà dùng thằng studio avr của atmel thì chạy rất oke. có lẽ nào lỗi ở bản ***** nek không nhỉ.:=)

                Comment


                • #9
                  potay là đúng rồi. Đọc input vào phải là PIND.3 chứ ai lại là PORTD.3! chúc vui.

                  Comment

                  Về tác giả

                  Collapse

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

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

                  Collapse

                  Đang tải...
                  X