Studio hhjjj workshop

Participation

위키 공동 편집을 원하시는 분은 다음 이메일로 자기소개를 부탁드립니다.
Send me an email to participate in workshop wiki.

songhojun@gmail.com

SensorComm Board

최근 사이트 활동

라이선스 안내

Creative Commons License
본 사이트의 모든 저작물크리에이티브 커먼즈 저작자표시-동일조건변경허락 2.0 대한민국 라이선스에 따라 이용할 수 있습니다.

Day 3: AVR Studio / ADC&DAC


가변저항 연결


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".
Risc  는  간단한 명령만 하드웨어에 준비되어 있는 컴퓨터. 〔< reduced instruction set computer〕
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