회원가입 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
번호 분류 제목 글쓴이 조회 수 날짜
2804 자유주제 HOTㅈ ㅓ랑 공유하실분~?6 사천y 4801 2010.08.12
2803 PADS HOTpads 2007을 Window7에 설치할수 있나요?15 도연사랑 6571 2010.08.12
2802 자유주제 HOT시리얼 통신이 연결이 되지 않습니다.4 잡털고구마 3690 2010.08.13
2801 전기전자 아무거나 HOT초보자 질문2 별헤는 밤 871 2010.08.13
2800 개발용역 HOTPCB 아트웍 / PCB 제작 / PCB 조립 전문 업체1 용가리3 12192 2010.08.14
2799 전기전자 아무거나 HOTIBM 하드웨어 이론 핸섬 868 2010.08.15
2798 자유주제 HOTUntitled 지구는내끄다 3173 2010.08.15
2797 마이크로프로세서 HOTatmega128에 타이머용 외부오실레이터(32.768KHz) 부착문의입니다.1 준성87 1446 2010.08.16
2796 마이크로프로세서 HOTinterrupt에서 변수값을 바꿔도 main에서는 안 변해요...5 도리형 1217 2010.08.16
2795 자유주제 HOT자동 등록 방지 기능7 빛나는 영혼 5242 2010.08.16
2794 자유주제 HOT정보를 검색하고 들어왔는데... ㅎㅎ6 만년필 3650 2010.08.16
2793 자유주제 HOT오실로 스코프에 프로브를 접촉하면 동작을 하고4 만년필 3988 2010.08.16
2792 자유주제 HOT잠시 쉬어갑시다27 졸뿌 1699 2010.08.16
2791 자유주제 HOTzigbee를 이용한 자율 주행 로봇2 졸뿌 4897 2010.08.16
드론/로봇/라인트레이서 HOT라트소스를 짜는데요 실제 구동은 좀 이상하네요 Mirel 1487 2010.08.16
2789 전기전자 아무거나 HOT전자회로수리2 핸섬 1447 2010.08.16
2788 전기전자 아무거나 HOT스피커 단선 경보회로좀 부탁드립니다2 너구리한마리 1337 2010.08.17
2787 자유주제 HOT후...납100...힘드네요ㅡㅠ21 KIAPEK 11523 2010.08.17
2786 자유주제 HOT확인했습니다2 절대초보 9137 2010.08.18
2785 전기전자 아무거나 HOTLED를 100개를 배터리로 구동하려면...2 jjogi 1159 2010.08.19
  • 분노는 종종 도덕과 용기의 무기이다.
    - 아리스토텔레스
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.