Thông báo

Collapse
No announcement yet.

Atmega16 điều khiển động cơ bước qua A4988

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

  • Atmega16 điều khiển động cơ bước qua A4988

    Mình điều khiển 3 động cơ bước qua a4988 như mạch trong file đính kèm.
    Nhưng khi đổ code vào chip thì động cơ không chạy. Nhưng mình mô phỏng thì chạy tốt
    Mong mọi người giúp.
    Thank!!
    AT16.zip
    Code:
      
      #define  F_CPU   12000000UL
      #include <avr/io.h>
      #include <avr/interrupt.h>
      #include <util/delay.h>
       
      int x = 0;
      int y = 0;
      int z = 0;
      int cp = 0;
      int buoc=0;
      int main(void)
      {
       
      /* Replace with your application code */
      DDRC=0xFF;
      DDRD=0x00;
      PORTD=0x00;
      PORTC=0xFF;
      MCUCR|=(1<<ISC11)|(1<<ISC01);
      MCUCSR|=(1<<ISC2);
      GICR |=(1<<INT2)|(1<<INT1)|(1<<INT0); 
      sei();
      while (1)
      {
      //if ((PIND&0x01) == 0) {x=20;y=20;z=20;}
      _delay_ms(10);
      if(cp==1)
      if (x!=0) {
      PORTC=~(1<<PORTC0);
      chay_buoc(x);
      if(buoc==0){
      x=0;
      PORTC=~(0<<PORTC0);
      }
      }
      _delay_ms(20);
      if (cp==2)
      if (y!=0) {
      PORTC=~(1<<PORTC1);
      chay_buoc(y);
      if(buoc==0){
      y=0;
      PORTC=~(0<<PORTC1);
      }
      }
      _delay_ms(20);
      if (cp==3)
      if (z!=0) {
      PORTC=~(1<<PORTC2);
      chay_buoc(z);
      if(buoc==0){
      z=0;
      cp=0;
      PORTC=~(0<<PORTC2);
      }
      }
       
      }
      }
      void chay_buoc(int buoc)
      {
       
      while(buoc!=0)
      {
      PORTC^=(1<<PORTC3);
      buoc--;
      _delay_ms(150);
      }
      }
      ISR (INT0_vect){
      cp++;
      if (cp==4) cp=0;
      _delay_ms(10);
      }
      ISR (INT1_vect){
      x=200;y=200;z=20;
      //PORTC^=(1<<PORTC4);
      _delay_ms(10);
      }
    Attached Files

Về tác giả

Collapse

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

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

Collapse

Đang tải...
X