BASIC4MCU | 질문게시판 | AVR ATMEGA128 블루투스 서보모터 제어 질문드립니다.
페이지 정보
작성자 어려운AVR 작성일2019-12-10 14:13 조회20,981회 댓글5건본문
#define F_CPU 8000000UL
#define __DELAY_BACKWARD_COMPATIBLE__
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
char rx_char(void) {
while((UCSR0A&0x80) == 0);
return UDR0; }
void tx_char(char tx_data){
while((UCSR0A&0x20) == 0);
UDR0 = tx_data; }
int main()
{
UCSR0A = 0x00;
UCSR0B = 0x98;
UCSR0C = 0x06;
UBRR0H = 0x00;
UBRR0L = 103;
DDRB = 0x20;
DDRD = 0xFF;
TCCR1A=0x82;
TCCR1B=0x1A;
OCR1A = 3000;
ICR1=19999;
unsigned char data;
while(1)
{
data = rx_char();
if(data == '1')
{
OCR1A = 1900; //Period_48hz
_delay_ms(1000);
}
if(data == '2')
{
OCR1A = 900;
_delay_ms(1000);
}
}
}
서보모터 종류는 SG90 을 사용하고 있으며
서보모터와 블루투스를 동시에 작동을 시켜보고 싶은데
코드를 적용하면 서보모터 혼자서 계속 돌아가는데
어디를 수정해야 하나요?
댓글 5
조회수 20,981master님의 댓글
master 작성일
ICR1=39999; // 20ms
OCR1A=1200; // 0도
OCR1A=3000; // 90도
OCR1A=4800; // 180도
어려운AVR님의 댓글
어려운AVR
블루투스를 통해 서보모터를 제어 하고 싶은데
블루투스를 통해 값을 전송하지 않았는데도
서보모터가 계속 혼자 돌아갑니다.
밑의 링크는 초음파센서 링크인데 관련이 있는건가요?
master님의 댓글
master
엉뚱한 링크를 걸어드렸군요
https://www.basic4mcu.com/bbs/board.php?bo_table=gesiyo11&wr_id=155
master님의 댓글
master 작성일https://www.basic4mcu.com/bbs/board.php?bo_table=gesiyo13&wr_id=46
master님의 댓글
master 작성일
//UCSR0B = 0x98;
UCSR0B = 0x18;
인터럽트 이네이블 시키면 안됩니다.
sei(); 함수를 사용하는 순간 심각한 오동작을 일으킵니다.
현재는 전역인터럽트 이네이블 되어있지 않아서 문제가 발생하지 않습니다.