Lv. 57 (수석연구원) 33,896 납
70%
Exp. 33,301/33,640 | 70%
회원가입 ID/PW 찾기
AA

ADC로 적외선 센서값을 받아서 스텝모터를 구동하는 소스를 짜는중인데요
제 생각으로는 지금 소스라면 분명히 선을따라서 이동을해야하는데
제대로된 구동을 하지 않네요 ㅠㅠ... 실제로 작동을 시키면 바퀴가 덜컥덜컥거리면서
뭔가 불안해요 바닥에 내려놓으면 천천히 굴러가긴하는데 그냥 스텝모터 구동처럼
깨끗한 모양새는 아니더라구요 아래 소스 첨부하구요 뭐가 잘못됫는지 혹은 좀 수정할 곳이 있는지
조언좀해주세요 ㅠㅠ.. 처음만드는건데 여기서 막혀갖구

#include <mega128.h>
#asm
   .equ __lcd_port=0x12 ;PORTD
#endasm
#include <lcd.h>
#include <stdio.h>
#include <delay.h>
#include <stdlib.h>

unsigned char Rstep[4]={0x05,0x06,0x0a,0x09};
unsigned char Lstep[4]={0x90,0xa0,0x60,0x50};
unsigned int sensor_input[6];
unsigned int i=0,j,k;
unsigned char num[6];
interrupt [ADC_INT] void adc_isr(void)
{
 sensor_input[i]=ADCW;  
 i++;
 switch(i)
 {
   case 0:  ADMUX = 0x00; break;
   case 1:  ADMUX = 0x01; break;
   case 2:  ADMUX = 0x02; break;
   case 3:  ADMUX = 0x03; break;
   case 4:  ADMUX = 0x04; break;
   case 5:  ADMUX = 0x05; break;
   default: i=0; break;
   delay_ms(50);
 }                
}
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
 if(sensor_input[0]||sensor_input[1]>400)
 {
 TCNT2=1;
 if(j>3){
 j=0;}
 else{
 PORTA=Lstep[j];
 j++;
 }
 }
 else{
 TCNT2=237;
 if(j>3){
 j=0;}
 else{
 PORTA=Lstep[j];
 j++;
 }
 }
}


interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
 if(sensor_input[4]||sensor_input[5]>400)
 {
 TCNT0=0;
 if(k>3){
 k=0;}
 else{
 PORTA=Rstep[k];
 k++;
 }
 }
 else{
 TCNT0=235;
 if(k>3){
 k=0;}
 else{
 PORTA=Rstep[k];
 k++;
 }
 }
}
 
void main(void)
{
DDRF=0x00;
PORTF=0x00;
DDRD=0xff;
PORTD=0xff;
DDRA=0xff;
PORTA=0xff;

TIMSK=0x41;
TCCR0=0x07;
TCNT0=0xff;
TCCR2=0x05;
TCNT2=0xff;

ADMUX=0x00;
ADCSRA=0b11101111;
lcd_init(16);
 
#asm("sei")

while (1)
      {
      lcd_clear();
      lcd_gotoxy(0,0);
      sprintf(num,"%3d",sensor_input[0]);
      lcd_puts(num);
      lcd_gotoxy(4,0);
      sprintf(num,"%3d",sensor_input[1]);
      lcd_puts(num);
      lcd_gotoxy(8,0);
      sprintf(num,"%3d",sensor_input[2]);
      lcd_puts(num);
      lcd_gotoxy(0,1);
      sprintf(num,"%3d",sensor_input[3]);
      lcd_puts(num);
      lcd_gotoxy(4,1);
      sprintf(num,"%3d",sensor_input[4]);
      lcd_puts(num);
      lcd_gotoxy(8,1);
      sprintf(num,"%3d",sensor_input[5]);
      lcd_puts(num); 
      delay_ms(500);
      };
}

댓글 0

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

search
번호 분류 제목 글쓴이 조회 수 날짜
692 마이크로프로세서 HOTAVR로 인터넷 접속 및 데이타 전송2 바다거북 1003 2010.08.29
691 마이크로프로세서 HOT인터럽트가 왜 발생을 안할까요?2 윤서파파 2957 2010.08.27
690 Software & IDEs HOTbin파일에관한 질문드립니다.1 왕초보틱 962 2010.08.26
689 마이크로프로세서 HOT홈 오토매이션 만들어보신분..3 온니무 1131 2010.08.25
688 마이크로프로세서 HOT8051도 회사취직 하면 많이 쓰나요??10 온니무 1169 2010.08.25
687 펌웨어 & 코딩언어 HOT학부생인데요 가장 자신있는 프로그램이 어떤거 있으신가요? c언어인분도 계세요?4 온니무 876 2010.08.25
686 마이크로프로세서 HOTavr에서 cmos카메라의 사용방법이 궁금합니다(회로첨부)1 응캬아 1967 2010.08.24
685 마이크로프로세서 HOTATmega128에 엔코더 다신 분 계신가요?6 봉만이 3079 2010.08.24
684 마이크로프로세서 HOT부저음을 내고 싶습니다..ㅎㅎ;;2 후아푸 2111 2010.08.23
683 마이크로프로세서 HOT선풍기 모터의 RPM을 어떻게 하면 알 수 있을까요?8 Glory 3730 2010.08.22
682 펌웨어 & 코딩언어 HOTC/C++로 영상처리를 하고 싶습니다.5 Glory 2981 2010.08.22
681 마이크로프로세서 HOTinterrupt에서 변수값을 바꿔도 main에서는 안 변해요...5 도리형 1221 2010.08.16
680 마이크로프로세서 HOTatmega128에 타이머용 외부오실레이터(32.768KHz) 부착문의입니다.1 준성87 1448 2010.08.16
679 펌웨어 & 코딩언어 HOTC 언어2 연희야 1098 2010.08.10
678 마이크로프로세서 HOTATmega128에서 5상 스텝핑모터구현시 진동과 소음문제??1 디지랜드 1632 2010.08.10
677 마이크로프로세서 HOT서보 제어 전원관련 질문이요 제발 도와주세요ㅜ2 JMX 1331 2010.08.09
676 마이크로프로세서 HOT도와주세용 (__farflash ) 사용법 중에.서2 1002 1177 2010.08.06
675 Software & IDEs HOT[matlab] 사용했던 변수 저장에 관하여 키핀 983 2010.08.05
674 마이크로프로세서 HOT서보 모터 질문입니다! 도와주세요1 박종호 1206 2010.08.02
673 마이크로프로세서 HOTRC 서보모터 구동 관련2 야슬이 1394 2010.08.01
Prev 1 ... 19 20 21 22 23 24 25 26 27 28 ... 58 Next
  • 모든 죄악의 기본은 조바심과 게으름이다.
    - 카프카
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.