BASIC4MCU | 질문게시판 | stm32f103 질문 드립니다.
페이지 정보
작성자 몽규 작성일2018-01-19 15:09 조회38,635회 댓글8건본문
//안녕하세요 임베디드 엔지니어가 꿈인 학생입니다.
아두이노로 임베디드를 접한뒤 stm32f103 보드를 얻게 되어 공부하고 있습니다.
HAL 드라이버를 사용하며 라이브러리를 뒤지면서 이해해 가고 있는 상황입니다.
(보다 자세히 이해하고 싶어서 CubeMX 는 현재 사용하지 않고 있습니다.)
제 질문은 스텝 모터 2개를 동시에 작동 시키기위해서 어떠한 방법이 있을지 궁금합니다 .
현재 main 문에서 동작시키다 보니 개별로 움직이고 있는데 동시에 작동 시키려면
인터럽트 혹은 타이머를 사용 하는것이 맞는지 궁금 합니다.
stm32f1xx_it.c내부의
void TIM3_IRQHandler(void)
{
HAL_TIM_IRQHandler(&TimHandle3);
timerCount3++ ;
}안에다 스텝모터 동작 코드를 넣는게 맞을까요?
맞다면 개별로 동시에 작동이 가능할까요?
아직 전반적인 이해도가 낮아 질문의 수준도 낮은점 양해 부탁 드립니다. 감사합니다!
댓글 8
조회수 38,635master님의 댓글
master 작성일
스텝모터 구동 외에 다른 작업이 없다면
메인함수 안에서 GPIO 구동으로 동작시키더라도 스텝모터 여러개 별 문제 안됩니다.
master님의 댓글
master 작성일
만약 1개의 스텝모터만 구동 한다고 하더라도 다른 작업과 병행해서 동작시켜야 하는 경우에는
타이머 인터럽트 안에서 스텝모터를 구동하는 것이 좋으며
타이머 인터럽트의 주기는 스텝 딜레이로 맞춰주면 됩니다.
몽규님의 댓글
몽규 작성일
빠른 답변 감사합니다! GPIO를 통해서 스텝모터 여러개가 작동되는것은 확인하였습니다.
하지만 저는 스텝모터 2개를 동시에 움직이게 하고 싶어서 다시 질문 드립니다.
1번과 2번 모터가 동시에 같이 한바퀴 움직이는 방법이 타이머인터럽트 안에서 구동하라는 말씀이신건가요?
master님의 댓글
master
메인함수 안에서 GPIO 구동으로 동작시키더라도 스텝모터 여러개 별 문제 안됩니다.
//
위 답변에 적은 내용을 되 묻는 것이죠?
잘 모르겠으면 소스코드 첨부하세요
몽규님의 댓글
몽규 작성일
제가 전달력이 부족한거 같습니다. 소스코드 첨부하겠습니다.
do{
if(HAL_GPIO_ReadPin(motor1SENSOR_PORT, motor1_PIN)==GPIO_PIN_SET){ //센서에 안걸린 상태면모터 굴림
HAL_GPIO_WritePin(motor1_STEP_PORT, motor1_STEP_PIN, GPIO_PIN_SET) ;
HAL_GPIO_WritePin(motor1_STEP_PORT, motor1_STEP_PIN, GPIO_PIN_RESET) ;
}
if(HAL_GPIO_ReadPin(motor2SENSOR_PORT, motor2_PIN)==GPIO_PIN_SET){
HAL_GPIO_WritePinmotor2_STEP_PORT, motor2_STEP_PIN, GPIO_PIN_SET) ;
HAL_GPIO_WritePin(motor2_STEP_PORT, motor2_STEP_PIN, GPIO_PIN_RESET) ;
}
Delay_ms(1) ;
}while(HAL_GPIO_ReadPin(motor1SENSOR_PORT, motor1_PIN)||HAL_GPIO_ReadPin(motor2SENSOR_PORT, motor2_PIN)!=GPIO_PIN_RESET);
현재도 두 모터가 두 센서에 닿을 때까지 동시에 돌기는 합니다.
하지만 제가 첨부한 코드는 너무 원시적이고 수준이 낮아서 다른 방법이 있는지 질문 드렸습니다.
master님의 댓글
master
원시적이고 낮은 레벨의 코드가
가장 확실하게 동작하면서 최고 속도를 냅니다.
별 문제가 없는 코드입니다.
몽규님의 댓글
몽규
감사합니다. 소신을 갖고 공부해야겠습니다!
master님의 댓글
master
아래 답글에 타이머 사용 시의 코드 예를 적었으니 참고하세요