Thông báo

Collapse
No announcement yet.

VỀ delay trong avr

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

  • VỀ delay trong avr

    Em đang dùng con Atmega 16, dùng thạch anh 12MHz. Vậy nhưng khi mô phỏng thử em thấy em để Delay_ms(1000); thì thời gian thực lên tới 12 giây. Có cao thủ nào giải thích giúp nguyên nhân và cách giải quyết không ạ. Em cảm ơn!

  • #2
    Bạn chỉnh lại thạch anh cho Atmega 16 trong Proteus là được ( kích đúp vào nó mà chỉnh).

    Comment


    • #3
      Em cũng đang gặp trục trặc với hàm delay, mô phỏng proteus thì OK, nhưng nạp vào ATmega8 thì không được, nhờ các bác cao thủ giải quyết giùm, xin đội ơn!!!
      Cụ thể thế này: em cần tạo xung điều khiển trễ so với một xung cho trước một khoảng thời gian, em viết code để nạp vào ATmega8 như sau:
      #define F_CPU 1000000UL
      #include <avr/io.h>
      #include <avr/interrupt.h>
      #include <avr/delay.h>
      int main(void)
      {
      DDRC|=(1<<1)|(1<<3); //2 chan nay de phat xung dk
      MCUCR|=(1<<ISC01)|(1<<ISC00); //bao ngat canh len chan INT0
      GICR|=(1<<INT0); //cho phép ngat INT0
      sei(); // cho phep ngat VDK
      while(1){}
      return 0;
      }
      ISR(INT0_vect)
      {
      _delay_us(4000); //tre 4000us khi co xung vao
      PORTC|=(1<<1)|(1<<3);
      _delay_us(400);
      PORTC=0;
      _delay_us(400);
      PORTC|=(1<<1)|(1<<3);
      _delay_us(400);
      PORTC=0; // phat chum 2 xung do rong 400us
      }
      em mô phỏng với proteus thì OK như hình sau đây:Click image for larger version

Name:	MO PHONG.png
Views:	2
Size:	478.1 KB
ID:	1396591
      nạp vào ATmega8 chạy thực tế thì nó thế này:Click image for larger version

Name:	THUC TE.png
Views:	2
Size:	859.5 KB
ID:	1396592
      em mới làm quen với món AVR, trình độ còn non kém, mong các bác chỉ giáo!!!

      Comment

      Về tác giả

      Collapse

      mr.tui Tìm hiểu thêm về mr.tui

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

      Collapse

      Đang tải...
      X