|
가변저항 연결
ADC = Analog to Digital Converter
ADC = Analog to Digital Conversion
ATmega168의 ADC 정보: Datasheet, 243 p.
시리얼 통신 - 터미널 이용하기 / 프로세싱 이용하기
센서값을 컴퓨터로 전송해서 txt파일로 저장하기
시리얼 통신 속도( baud rate)와 센싱의 관계
저장된 txt파일을 엑셀로 열어서 센서값을 그려보기
편리하지만 시간을 많이 소요해서 ADC 를 방해하는 코드 찾아보기
마이크로컨트롤러 -> 컴퓨터 센서 데이터 넘기는 다양한 방법
1. ADC 할때마다
while(1)
{
ADC
컴퓨터로 보내기
}
2. ADC 여러번하고 적당한 처리를 하여 컴퓨터에 넘기기
while(1)
{
for 30번
{
ADC
}
처리하기 = 유식하기 Filtering = 더 유식하게 Digital Signal Processing
처리된거 컴퓨터로 보내기
}
AVR의 ADC 공부하기
AVR이란? "Alf and Vegard's Risc".
the AVR is affectionately referred to as "Alf and Vegard's Risc".
|
Q: ATmega168은 16MHz의 클록이 들어가면 1개의 기계어 명령이 수행될때 얼마의 시간이 걸리나요?
A: 1/16000000 초
*요건 회사마다 칩마다 다르다. PIC의 경우에는 클럭이 4번 튀겨야 한번 수행되는데 그래서 시간의 조금 더 걸린다. 1/ (16000000 / 4)
Q: 왜 위 질문이 중요한가요?
A: 마이크로컨트롤러가 반복적으로 똑같은 명령을 수행할 때, 그 수행간격을 알면 많은걸 예상할 수 있다.
예를들어 아날로그값인 센서값을 계속 읽어서 컴퓨터로 전달한다고 할때 1초에 한번씩 센서값을 읽는지, 0.00000001초에 한번씩 센서값을 아는지 알며 얼마나 자주 세밀하게 내가 센싱을하고 있는지 알 수 있기 때문이다
또한 아주 정확한 타이밍 다시 말해 us 단위 (u = micro = 10의 - 6승) 의 정확도를 요구하는 동작에서는 당연히 기계어의 수행시간에 관심을 가져야 한다.
몇 us 단위로 용접로봇이 자동차를 찌그러트릴 수도 있기 때문이다.
Q: 우린 C 언어로 프로그래밍하는데 어떻게 기계어가 수행되는 시간을 알 수 있나요?
A: AVR Studio 에서 Disassembler 를 실행시켜서 내가 짠 C언어 코드가 몇행의 기계어 라인으로 바뀌었는지 본다. 한행은 한 인스트럭션이고 한 인스트럭션이 수행될때의 시간의 AVR 마이크로 컨트롤러에 들어간 클록의 수의 역수로 (1/16000000 초) 알수 있다
Q: 우리가 쓰는 ATmega168 의 기계어는 도대체 어디 나와있나요? 누가 만든건가요?
A: 첫 시간에 이야기 했듯이 기계어는 기계를 만든 회사에서 제공한다. 따라서 ATmega168의 datasheet에 나와 있다. instruction set에 대해서 찾아보라.
더욱 흥미를 갖을 수 있는 것은 기계어는 바로 1과 0으로 직접 매칭이 되는데 다시말해 5V와 0V의 조합인것이다.
소위 해커라고 하는 사람들을 특정 기계의 datasheet를 먼저 구해보고 시스템에서 전압을 재서 거꾸로 소스 코드를 알아낼 수 있다. 즉 해커는 별게 아니라 설명서를 숙지한 사람이라고 할 수 있겠다.
이전에 세운상가에서 일본에서 들여온 오락기를 복사할 때도 비슷한 방법을 썼다고 한다
기계어 관심있는 사람은 다음 페이지를
Q. 소스코드에서 << 가 의미하는바는?
A. C언어에서 연산자중 하나로 bit shift 할때 쓰인다.
bit 연산 공부하기
각종 센서 data 처리 자료 by Tom Igoe, NYU ITP
|

