Thông báo

Collapse
No announcement yet.

các bác cho em hỏi vấn đề này về ngắt AVR

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

  • các bác cho em hỏi vấn đề này về ngắt AVR

    em dùng ATmega 8515, con này có thể dùng các ngắt INT0 1 2 cùng với ngắt TIMER_OVERFLOW được không các bác, em dùng ngắt INT0 để nhận tín hiệu từ bên ngoài , cứ mỗi khi có xung vào chân này thì một biến Counter tự động tăng lên 1, khi biến Counter này đạt ngưỡng thì e sẽ cho một xung 25Hz ra một chân PortC , xung này được tạo bằng ngắt bộ TIMER/COUNTER1 của chip , em test bằng cách lắp một LED vào chân này của Port C xem đèn có nhấp nháy không thì chỉ thấy khi Counter đạt ngưỡng thì led sáng lên và giữ nguyên như thế ko nhấp nháy
    các bác bảo em phải làm sao chả nhẽ lại dung thêm con VDK nữa thì bó tay,

  • #2
    Bạn tìm trên datasheet của nó là có câu trả lời thôi >>> mình hay dùng Atemega16 .Oai! mà bạn tạo xung 25Hz thì led nháy thế nào nhỉ nó chỉ sáng kém đi chút thôi

    Comment


    • #3
      Nguyên văn bởi DTCCOM Xem bài viết
      em dùng ATmega 8515, con này có thể dùng các ngắt INT0 1 2 cùng với ngắt TIMER_OVERFLOW được không các bác, em dùng ngắt INT0 để nhận tín hiệu từ bên ngoài , cứ mỗi khi có xung vào chân này thì một biến Counter tự động tăng lên 1, khi biến Counter này đạt ngưỡng thì e sẽ cho một xung 25Hz ra một chân PortC , xung này được tạo bằng ngắt bộ TIMER/COUNTER1 của chip , em test bằng cách lắp một LED vào chân này của Port C xem đèn có nhấp nháy không thì chỉ thấy khi Counter đạt ngưỡng thì led sáng lên và giữ nguyên như thế ko nhấp nháy
      các bác bảo em phải làm sao chả nhẽ lại dung thêm con VDK nữa thì bó tay,
      Cái bác này, người ta xài 24 hình trên giây là xài sang lắm rồi. Tốc độ bác xem VCD chỉ mới có 12 frames/s. Vậy mà bác chơi hẳn 25Hz mà mắt bác nhìn thấy nhấp nháy được mới là lạ.
      Email: - Mobil: tạm thời ngừng liên lạc 1 thời gian
      Giới thiệu website kiếm tiền trực tuyến & tăng thứ hạng website.

      Comment


      • #4
        xin lỗi các bác là em đưa ra led là để test thôi (2Hz), còn mục đích chính là đưa ra một cái loa con cho nó báo động, vẫn được các bác ah, con này dùng khá thật chạy nhiều ngắt và có ngắt trong ngắt, cảm ơn các bác nhiều

        Comment


        • #5
          nếu bạn hiểu được ngắt là gì thì bạn sẽ tự hiểu được nó dùng để làm gì .
          Ngăt thì có ngắt bộ định thời và ngắt ngoài, ngoài ra còn có ngắt truyền thông nữa .
          Ngăt bộ định thời (Timer) là khi bạn khởi tạo cho vdk định thời sau một khoảng thời gian nào đó sẽ làm một việc gì đó.
          Còn ngắt ngoài là khi ban khởi tạo để vdk làm một việc gì đó khi có sự kiện bên ngoài tác động vào . ví dụ như trong robo thì ngắt bộ định thời để băm xung điều khiển động cơ còn ngắt ngoài thì để báo cho vdk biết là đã gặp quà chẳng hạn để robo gắp quà ...
          Nói chung là để hiểu kỹ hơn thì bạn nên chịu khó tìm hiểu thêm tài liệu cũng như các luồng đã có sẵn trong diễn đàn.
          Chúc bạn thành công

          Comment


          • #6
            AVR_điều khiển cửa

            mình đang viết chương trình CodeVision cho AVR để điều khiển cửa khi nhấn công tắc(nút bấm),nhưng mình đang gặp khó khăn:


            int i;
            int dk[8]={0x12,0x13,0x31,0x32,0x45,0x67,0xF9,0x81};
            DDPC=0x02;
            DDPB=0xFF;
            void main()
            { while()

            {
            if (PINC.1==1)
            {
            for(i=0;i<8;i++)
            {
            PORTB=dk[i];
            delay_ms(200);
            }
            }
            }
            }

            chương trình kô báo lỗi! nhưng chạy mô phỏng thì kô đc!

            Comment


            • #7
              Bó tay với bác, bác code thẳng trong đầu ra đấy à!

              1. DDPC DDPB là các thanh ghi nào??? nó là DDRC và DDRB

              2. Các phép gán DDR phải được đặt trong hàm main.

              3. while()??? ko có điều kiện mà vẫn dịch được à? ít ra phải là while(1)

              OK, code đúng ý bác đây:

              #include <mega16.h>
              #include <delay.h>

              int i;
              int dk[8]={0x12,0x13,0x31,0x32,0x45,0x67,0xF9,0x81};

              void main()
              {
              DDRC=0x02;
              DDRB=0xFF;

              while(1)
              {
              if (PINC.1==1)
              {
              for(i=0;i<8;i++)
              {
              PORTB=dk[i];
              delay_ms(200);
              }
              }
              }
              }
              PNLab
              Mạch nạp/debug ULink2, Jlink ARM USB
              Mạch nạp AVR, PIC, 8051, MSP430 USB
              Mạch phát triển STM32, ARM9, ARM11
              more...www.pnlabvn.com

              Comment


              • #8
                Tui cũng làm như bác sphinx nói rồi nhưng kô dc!
                Bác có thể cho tui mail tui sẽ gửi bài nhờ bác xem dùm!

                Comment


                • #9
                  vậy thì bạn thử cho DDRC=0; xem sao

                  Comment


                  • #10
                    Nguyên văn bởi sugus Xem bài viết
                    Tui cũng làm như bác sphinx nói rồi nhưng kô dc!
                    Bác có thể cho tui mail tui sẽ gửi bài nhờ bác xem dùm!
                    dongnd@pnlabvn.com
                    PNLab
                    Mạch nạp/debug ULink2, Jlink ARM USB
                    Mạch nạp AVR, PIC, 8051, MSP430 USB
                    Mạch phát triển STM32, ARM9, ARM11
                    more...www.pnlabvn.com

                    Comment


                    • #11
                      ngắt AVR

                      tui làm dc bài hôm trc hỏi mọi người rồi!
                      Thanks for all!

                      Comment


                      • #12
                        có pác lào có tài liệu về ngắt AVR hok pots lên cho anh em koi với nào !!!

                        có pác lào có tài liệu về ngắt AVR hok pots lên cho anh em koi với nào !!!

                        Comment


                        • #13
                          Tập lệnh trong Atemega32???

                          cho em hoi cau lenh: int dk[8]={0x12,0x13,0x31,0x32,0x45,0x67,0xF9,0x81};
                          co nghia la j. Bac nao co tai liệu về các tập lệnh của con AVR 32 thì post cho em xin với. CẢm ơn rất nhìu

                          Comment


                          • #14
                            Nguyên văn bởi dongvandinh Xem bài viết
                            cho em hoi cau lenh: int dk[8]={0x12,0x13,0x31,0x32,0x45,0x67,0xF9,0x81};
                            co nghia la j. Bac nao co tai liệu về các tập lệnh của con AVR 32 thì post cho em xin với. CẢm ơn rất nhìu
                            to dongvandinh!
                            int dk[8] là một mảng có 8 phần tử thôi mà,mảng này để lưu trữ dữ liệu để cuất ra led ma trận.
                            tập lệnh của mega32 thì bạn chỉ việc down datasheet của nó về là có ngay thôi.ở đó có đầy đủ các lệnh.

                            Comment


                            • #15
                              nói rõ hơn thì dk[0]= 0x12 , dk[1]=0x13.....

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X