뉴티씨



  • HOME
  • 고객지원
  • 질문답변


 
ex_AM_DCx_x_DC_MOTOR_Control 테스트
 글쓴이 : 김상용
작성일 : 19-04-15 23:07
조회 : 52  
   portg.bmp (416.7K) [1] DATE : 2019-04-15 23:37:04
   portg1.bmp (641.7K) [0] DATE : 2019-04-15 23:37:04
안녕하세요
아래 소스를 빌더하여 다운로드 하였는데 모터는 회전을 합니다.
그런데 PORTG SWITCH2,3 키이가 먹지 않네요.
PORTG = 0x02;PORTG = 0x03;
다른프로그램 ex_Motor_SW_PWM_Speed_control 이것도 맞찮가지이데요..
뭔가 잘못되었는지요.....


// S/W Environment :AVR Studio + WINAVR Compiler
// Target : M128
// Crystal: 16MHz
//
// Made by NEWTC Co., Ltd. in Korea.
// DAEWOO RYU 
// Email : davidryu@newtc.co.kr
// +82-2-704-4774(TEL), +82-2-704-4733(FAX)
// http://www.newtc.co.kr
// example : AM-DCx-xx DC motor controller test

#include <avr/io.h>
#include <avr/interrupt.h>

#define MOTOR_PORT PORTC
#define PWM1_ON (MOTOR_PORT|=0x01)
#define PWM1_OFF (MOTOR_PORT&=0xFE)
#define DIR1_ON (MOTOR_PORT|=0x02)
#define DIR1_OFF (MOTOR_PORT&=0xFD)
#define ENABLE1_OFF (MOTOR_PORT|=0x04)
#define ENABLE1_ON (MOTOR_PORT&=0xFB)
#define BREAK1_ON (MOTOR_PORT|=0x08)
#define BREAK1_OFF (MOTOR_PORT&=0xF7)

#define PWM2_ON (MOTOR_PORT|=0x10)
#define PWM2_OFF (MOTOR_PORT&=~0x10)
#define DIR2_ON (MOTOR_PORT|=0x20)
#define DIR2_OFF (MOTOR_PORT&=~0x20)
#define ENABLE2_OFF (MOTOR_PORT|=0x40)
#define ENABLE2_ON (MOTOR_PORT&=~0x40)
#define BREAK2_ON (MOTOR_PORT|=0x80)
#define BREAK2_OFF (MOTOR_PORT&=~0x80)



void port_init(void)
{
 PORTA = 0x00;
 DDRA  = 0x00;
 PORTB = 0x00;
 DDRB  = 0x00;
 PORTC = 0x00; //m103 output only
 DDRC  = 0xff;
 PORTD = 0x00;
 DDRD  = 0x00;
 PORTE = 0x00;
 DDRE  = 0x00;
 PORTF = 0x00;
 DDRF  = 0x00;
 PORTG = 0x00;
 DDRG  = 0x00;// DDRG  = 0xff;
}

//call this routine to initialize all peripherals
void init_devices(void)
{
 //stop errant interrupts until set up
 cli(); //disable all interrupts
 XMCRA = 0x00; //external memory
 XMCRB = 0x00; //external memory
 port_init();

 MCUCR = 0x00;
 EICRA = 0x00; //extended ext ints
 EICRB = 0x00; //extended ext ints
 EIMSK = 0x00;
 TIMSK = 0x00; //timer interrupt sources
 ETIMSK = 0x00; //extended timer interrupt sources
 sei(); //re-enable interrupts
 //all peripherals are now initialized
}

void delay(int delaytime){
int i,j;
for(i=0;i<1000;i++){
for(j=0;j<delaytime;j++){
}
}
}

int main(void)
{
 init_devices();
 
 ENABLE1_ON;
 PWM1_ON;
 BREAK1_OFF;
 ENABLE2_ON;
 PWM2_ON;
 BREAK2_OFF;
 
 while(1){
  DIR1_ON;
DIR2_ON;
PORTG = 0x02;
delay(2000);
  DIR1_OFF;
DIR2_OFF;
PORTG = 0x03;
delay(2000);
  }
  return 0;
}