제가 지금 AVR128을 가지고 트레이서를 제작중입니다.
모터가감속은 했구요. ADC도 8비트받는거 성공했습니다. 폴링방식도 성공했고 인터럽트방식도 성공했습니다.
근데 이두개를 합치고 나서가 문제입니다.
모터는 타이머 1/ 3번 컴패어A 매치로 1분주를 사용해서 7000개의 배열을 불러서 씁니다.
가감속은 문제 없이 됩니다.
ADC도 폴링방식 인터럽트 원하는값을 다 뽑는데 문제가 없습니다.
근데 이두개가 동시에 되면 ㅡㅡ 모터가 돌다 멈추다 돌다 멈추다 난리를 치네요...
여러가지의 것을 생각해볼수 있을텐데요..
우선 인터럽트가 걸리는것은 ADC보다 타이머 1/3번이 우선순위가 높으니 펄스 들어가는것은 상관이 없을듯한데..
걸리는것이 ADC 샘플링 시간에 모터 펄스가 한타임 씹히면 그렇게 탈조 비슷하게 나오는것 같은데요.
ADC하면서 모터 펄스를 넣어주는거 타이밍만 맞추면 해결될까요?
이것만 완성되면 신나는 보정 작업이 될거 같은데... 미치겠네요..
모터가감속은 했구요. ADC도 8비트받는거 성공했습니다. 폴링방식도 성공했고 인터럽트방식도 성공했습니다.
근데 이두개를 합치고 나서가 문제입니다.
모터는 타이머 1/ 3번 컴패어A 매치로 1분주를 사용해서 7000개의 배열을 불러서 씁니다.
가감속은 문제 없이 됩니다.
ADC도 폴링방식 인터럽트 원하는값을 다 뽑는데 문제가 없습니다.
근데 이두개가 동시에 되면 ㅡㅡ 모터가 돌다 멈추다 돌다 멈추다 난리를 치네요...
여러가지의 것을 생각해볼수 있을텐데요..
우선 인터럽트가 걸리는것은 ADC보다 타이머 1/3번이 우선순위가 높으니 펄스 들어가는것은 상관이 없을듯한데..
걸리는것이 ADC 샘플링 시간에 모터 펄스가 한타임 씹히면 그렇게 탈조 비슷하게 나오는것 같은데요.
ADC하면서 모터 펄스를 넣어주는거 타이밍만 맞추면 해결될까요?
이것만 완성되면 신나는 보정 작업이 될거 같은데... 미치겠네요..
모터 함수내에 delay함수를 사용하셨나요?
LCD 컨트롤 할때 쓴 딜레이 빼고는 딜레이는 전혀 없습니다.
거의 1~2US라 영향이 거의 없을듯 하구요..;
발광센서를 타이머로 돌리셨나요???
아니면 delay로 돌리셨는지 궁금....
이것 때문에 아직도 삽질중이네요 ㅎ
초보자라서 그상의 말씀은 드릴수가 없을듯 하네요..
아크마 라인트레이서 소스를 보신는 것도 도움이 대실듯 하네요..
-> 이렇게 하면 나중에 보정작업하기 너무 힘들어 질꺼 같군요;;
우선순위의 문제도 아닐것입니다 왜냐하면 우선순위라는것은 실제로 동시에 작업될일은 거의 없다고 보시면되니까요..
ADC도 폴링방식 인터럽트 원하는값을 한다고 하셨는데 adc제어방법에 문제가 있지 않나싶군요.
님께서 작업하시는 양정도의 부하라면 avr이 충분히 인간이 보기에 실시간이라 느껴질만큼 처리할 수 있습니다.
여러가지 복잡한 작업을 동시에 수행할때 문제가 된다면 다른 작업에 동기가 되버리는것이 문제인데요
타이머와 인터럽트를 이용해서 비동기처럼 수행할 수 있겠지요.
더 자세한 부분은 소스를 봐야알꺼 같습니다.
아크마님이 넘 좋은 답변을 하신듯 ㅠ_ㅠ 아크마님 처럼될려면 얼마나 공부를 해야되는지 ㅋㅋ
급좌절입니다 OTL
쩝...대학때 논게 너무 후회됨..~~~
으하하하 오랜만에 방청소 했내여 ㅋㅋ
그럼 한가지더 폴링방식과 인터럽트 두가지가있죠 ㅎADC를 하는방법중에
똑같은 분주비를쓰고 ADC샘플링을 한다면 속도가 비슷할까요??이론적으로?
저는 인터럽트가 훨씬 빠르던데..해보셧을까요?
단지 샘플링된 값을 처리하는 응답속도의 차이겠지요..뭐 응답속도도 실제로는 제어하는 방법에 따라서
다릅니다. 인터럽트 자체도 호출되는 시간이 있으므로 제어만 한다면 똑같다고 보입니다.
단, 비동기형태로 호출이 되다보니 여러가지 작업할때 용이한것뿐입니다.
님께서 겪는 문제는 속도의 문제가 아닙니다..;;
아..항상느끼는거지만 공부 열심히 해야겠네요..ㅠㅡㅠ