으아~ 만 한달동안 고생해서 이제 스텝 모터를 돌렸다;;
정말 기분이 째진다..;;
중간에 기사 시험공부도 하고 해서 한달이나 걸렸지만..
그래도..;; 기분이 이빠이 좋네.. ㅋㅋ
이대로 쭉쭉 나가 보는거야~ ㅋㅋ
일단 밑 소스는 스텝모터 한 바퀴를 돌리는 거니깐.. 저장 해 놔야지.. ㅋ
#include<avr/io.h>
void delay_us(unsigned char time_us)
{
register unsigned char i;
for(i=0; i < time_us; i++)
{
asm volatile("PUSH R0"); //2 cycle = 0.125us
asm volatile("POP R0"); //2 cycle = 0.125us
asm volatile("PUSH R0"); //2 cycle = 0.125us
asm volatile("POP R0"); //2 cycle = 0.125us
asm volatile("PUSH R0"); //2 cycle = 0.125us
asm volatile("POP R0"); //2 cycle = 0.125us
// Sum = 16 cycle=1 us for 16MHz
}
}
void delay_ms(unsigned int time_ms)
{
register unsigned int i;
for(i=0; i < time_ms; i++)
{
delay_us(250); // 250us
delay_us(250); // 250us
delay_us(250); // 250us
delay_us(250); // 250us
}
}
char nextMotorCLK(char step)
{
char next = 0;
switch(step)
{
case 0x4a: next = 0x59; break;
case 0x59: next = 0x95; break;
case 0x95: next = 0xa4; break;
case 0xa4: next = 0x4a; break;
default : next = 0x4a; break;
} // 정회전 4-5-9-a 순서
return next;
}
int main()
{
DDRC = 0XFF;
char step = 0;
unsigned char text = 0;
while(text < 200) // 200으로 한 바퀴 돌림
{
step = nextMotorCLK(step);
PORTC = step;
delay_ms(4);
text = text + 1;
}
return 0;
}
'AVR' 카테고리의 다른 글
간단한 송수신 프로그램 (0) | 2009.11.11 |
---|---|
간단한 송신 프로그램 (0) | 2009.11.11 |
타이머 / 카운터 0 일반모드(실습) (0) | 2009.07.25 |
타이머 / 카운터 0 일반모드(이론) (0) | 2009.07.25 |
TEXT LCD 제어 실습(외부 인터럽트) (0) | 2009.07.21 |