회원가입 ID/PW 찾기
AA

딜레이함수, 키제어, 모니터제어는 헤더파일을 생성했다고 가정하겠습니당! ㅠㅠ
빨간부분만 제발 알려주세염!! ㅠㅠ접때두 이문제로 올린적있는데
도와주신분들 정말 진심으로 감사드립니다.


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

#define MOTOR_CW  (PORTE &= 0xFB)
#define MOTOR_CCW  (PORTE |= 0x04)

#define MOTOR_STOP  (PORTE &= 0xFD)
#define MOTOR_ENABLE (PORTE |= 0x02)

#define FREQ_CLK10  160000 // clock 10 16Mhz/100
#define PRESCALE  64
#define FREQ_REFER  1000 // 1Khz(1msec)

#define LCD_RS_1  (PORTG |= 0x01)
#define LCD_RS_0  (PORTG &= 0xFE)

#define LCD_RW_1  (PORTG |= 0x02)
#define LCD_RW_0  (PORTG &= 0xFD)

#define EN_1     (PORTG |= 0x04)
#define EN_0      (PORTG &= 0xFB)


// motor control
void initStepMotor(void)
{
 TCCR3A = 0xAA; // COM3A[1:0] = 10. 비교일치시 클리어
     // TOP 셋
     // WGM3[3:0] = 1010, Phase correct PWM mode
     // TOP값은 ICR 레지스터가 결정
 TCCR3B = 0x13;

 ICR3 = 249; // 최고값 250(2msec)
 OCR3A = 90; // 최저값 (duty rate 결정, 클수록 커짐)
    // OC3A를 출력을 설정(PE3)
}

void CtrlStepMotor(unsigned int speed)
{
 if(speed >= 150)
  speed = 150;

 ICR3 = (FREQ_CLK10 / (2*PRESCALE*2*speed))*60;
  // 200Hz/100 // RPM 단위로 환산
}

void initPort()
{
 DDRA = 0x0f; // keypad 제어
 DDRC = 0xff; // LCD 데이터
 DDRG = 0xff; // LCD 제어
 DDRE = 0xff; // 모터펄스, 방향 인에이블
}


int main(void)
{
 char strBuff[20]={0};
 int speed = 0;

 initPort();
 LCD_init();

 initStepMotor();

 sprintf(strBuff,"Welcome");
 LCD_Write(0,0,strBuff);

 ms_delay(500);

 sprintf(strBuff,"Step Motor");
 LCD_Write(0,0,strBuff);
 sprintf(strBuff,"          ");
 LCD_Write(0,1,strBuff);


 
while(1)
  {
  KeyScan();

  if(KeyValue == 0)
  {
   MOTOR_STOP;
  }
  else if(KeyValue == 1)
  {
   MOTOR_ENABLE;
  }
  else if(KeyValue == 2)
  {
   MOTOR_CCW;
  }
    else if(KeyValue == 3)
    {
   MOTOR_CW;
  }
    else if(KeyValue == 4)
  {
   speed =40;
   CtrlStepMotor(speed);
  }
    else if(KeyValue == 5)
  {
   speed =60;
   CtrlStepMotor(speed);
  }
    else if(KeyValue == 6)
  {
   speed =80;
   CtrlStepMotor(speed);
  }
   else if(KeyValue == 7)
  {
   speed =100;
   CtrlStepMotor(speed);
  }

    if(PORTE & 0x04)
   sprintf(strBuff,"Dir = CCW:%3drpm", speed);
    else
   sprintf(strBuff,"DIr = CW : %3drpm", speed);

  LCD_Write(0,1,strBuff);
  }

  return 0;
}

댓글 1

하드웨어 설계 및 개발에 대하여 개발자들이 자유롭게 토론하는 공간입니다.
- Q&A, 자유주재 토론, 관련 정보 공유
- 분야 : 마이크로프로세서 응용, 전기/전자(아날로그/디지털) 회로 설계, C/C++ 프로그래밍, 펌웨어,
         PCB Artwork, 트러블슈팅 등 하드웨어 설계에 관한 전반인 내용
※ 게시글에 맞는 분류를 선택하여 글을 작성해 주시면 쾌적한 사이트 운영에 많은 도움이 됩니다.
※ 하드웨어 인사이트는 회원들간의 거래정보를 게재할 뿐이지, 그 어떤 책임과 의무도 가지지 않습니다.

search
번호 분류 제목 글쓴이 조회 수 날짜
448 마이크로프로세서 HOT소스 짜는 방법 좀 알려주세요~ ㅠㅡㅠ3 엔젤루피님 910 2010.04.26
447 마이크로프로세서 HOTwin8051 프로그램좀.. 좀8051해보자 1580 2010.04.26
446 마이크로프로세서 HOT프로테우스로도 hex파일 넣어서 돌릴수 있나요?1 좀8051해보자 1433 2010.04.25
445 마이크로프로세서 HOT프로테우스 에 관해서요 질문좀..2 좀8051해보자 1024 2010.04.25
444 마이크로프로세서 HOTATMEGA128에 UC/OS2 포팅하려고 하는데요1 컴공대생ㅠㅠ 1484 2010.04.22
443 마이크로프로세서 HOTCDS를 이용한 모터제어(Atmega88)2 바다새 1939 2010.04.21
마이크로프로세서 HOTat90can128 모터제어 문의드립니다!1 꼬막소녀 1263 2010.04.14
441 마이크로프로세서 HOT8051명령어집합에대해서알고싶어요!!2 hanfx 1078 2010.04.13
440 마이크로프로세서 HOTAVR 학습에 있어 AVR 선택에 관한 질문 드립니다.7 BMTD 946 2010.04.12
439 마이크로프로세서 HOTLED 스위치 제어 소스인데 해석좀 도와주세요3 8051초입기 2228 2010.04.12
438 마이크로프로세서 HOT이제 막 시작한 학부생입니다.6 no.206 940 2010.04.11
437 마이크로프로세서 HOT3가지정도 질문하고 싶습니다.3 marin_blues 1183 2010.04.11
436 마이크로프로세서 HOT인터럽트1 밀향 1103 2010.04.10
435 마이크로프로세서 HOT8051 기판없이 시뮬레이션 가능한 프로그램 있을까요?5 팁티바 1395 2010.04.10
434 마이크로프로세서 HOTir리모콘 컴파일러 질문드립니다. 야래 1144 2010.04.09
433 마이크로프로세서 HOTAVR 교재좀 부탁드려요8 빛의속도 1863 2010.04.09
432 마이크로프로세서 HOT센서를 제어할 수 있는 회로도를 어디서 구할 수 있나요?3 우기우기 1264 2010.04.07
431 마이크로프로세서 HOTir리모콘 컴파일러 질문드립니다. 야래 926 2010.04.07
430 마이크로프로세서 HOTATmega48을 이용해서 모터를 제어하는데..1 바람2 942 2010.04.07
429 마이크로프로세서 HOTspi 속도문의 눈티 1637 2010.04.07
Prev 1 ... 23 24 25 26 27 28 29 30 31 32 ... 50 Next
  • 인생에서 중요한 법칙은 만사에 중용을 지키는 일이다.
    - 테렌티우스
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.