본문 바로가기

로봇_PROJECT/모터부

arm 7 스텝모터 돌리기

#include "AT91SAM7S256.h"
#include "lib_AT91SAM7S256.h"
#include "OK7S256ads.h"


//#define PWMC_MR (*(volatile unsigned int *) 0xFFFCC000)
#define PWMC_CMR0 (*(volatile unsigned int *) 0xFFFCC200)
#define  PWMC_CDTYR  (*(volatile unsigned int *) 0xFFFCC204)
#define  PWMC_CPRDR  (*(volatile unsigned int *) 0xFFFCC208)

//volatile unsigned int frequency=00000001;

__inline void AT91F_PWMC_CfgMode(
        AT91PS_PWMC pPWM,   // pointer to a PWM controller
        unsigned int mode)   // PWM_MR register value
{
 pPWM->PWMC_MR = mode;
}

int main(void)
{
  unsigned int PWM0_duty = 10, PWM1_duty = 20; // initial PWM duty value

  MCU_initialize();    // initialize AT91SAM7S256 & kit
  Delay_ms(50);     // wait for system stabilization

  AT91F_PWMC_CfgPMC();    // enable clock of PWMC
  AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA, AT91C_PA1_PWM1 | AT91C_PA0_PWM0, 0);
        // PWM1,PWM0 output(Peripheral A)

  AT91F_PWMC_CfgMode(AT91C_BASE_PWMC, 0x031E031E); // CLKA=CLKB = 48MHz/8/30 =200kHz
 
// pPWM->PWMC_MR = 0x031A031E;

//------------------------------------모터1  pa0 포트 로 출력이 나오고  증속은 pa07 콘트롤한다-------------

  //AT91F_PWMC_CfgChannel(AT91C_BASE_PWMC, 0, 0x020B, 2000, PWM0_duty); // CLKA/100 = 2kHz
   PWMC_CMR0 =  0x020B;
 PWMC_CDTYR = PWM0_duty;
 PWMC_CPRDR =850;
//------------------------모터 2 pa1 포트 로 출력이 나오고 듀티비가 달라진다 pa08 콘트롤한다------------

  AT91F_PWMC_CfgChannel(AT91C_BASE_PWMC, 1, 0x020B, 1000, PWM1_duty); // CLKA/200 = 1kHz
//-----------------------------------------------------------------------------------------------------

  AT91F_PWMC_StartChannel(AT91C_BASE_PWMC, AT91C_PWMC_CHID1 | AT91C_PWMC_CHID0);
      // start PWM1 and PWM0

  while(1)
    { switch(Key_input())
        {
        case 1:
       if(PWMC_CPRDR >550)// 가장높은 최대 주파수 (최고속도의 주기 550)
     PWMC_CPRDR -= 50;// 가속되는 주기(가속주파수)
    else
  PWMC_CPRDR=800;//기동 주기(가장 낮은주파수)
     break;
        }
    }
}

L297 핀 설정
1       
2 GND(=LOW)
3
4 A
5 B
6 ~A
7
8 ~B
9
10 5V(=HIGH)
11 GND(=LOW)
12 5V(=HIGH)
13
14
15
16 GND(=LOW)
17 5V(=HIGH)
18 CLOCK  (암 포트 PA0) 신호입력
19 GND(=LOW)
20 5V(=HIGH)