티스토리 뷰
ISP 프로젝트를 위한 회로 구성을 완료한 다음 회로가 제대로 연결되었는지 확인하는 단계를 반드시 거쳐야 한다.
먼저 확인할 내용은 PC와 UART가 제대로 연결되었는지, ISP 프로그래머와 target CPU가 SPI로 제대로 연결되었는지 확인을 하여야 한다.
입문 과정의 SPI 프로젝트를 이용하여 UART와 SPI 통신 기능을 검증해 보도록 하겠다.
위의 코드를 적용하여 보드에서 실행한 결과는 다음과 같다.
SPI를 통해서 읽어온 target CPU의 signature 데이터는 0x1E930B로 읽혔다. 그리고 그다음에 나오는 'Hello, ISP !!'는 PC에서 키보드를 통해서 보낸 글자를 AVR programmer에서 echo 한 내용을 보여주는 것이다.
ATtiny85 datasheet를 보면 signature데이터가 다음과 같은 값을 가진다고 설명되어 있다.
위의 표에서 ATtiny85에 해당되는 signature값이 0x1E930B인것을 알 수 있다.
이로써, UART와 SPI가 정상적으로 동작되고 있는것을 확인하였다.
이제, 하드웨어 구성은 정상적으로 연결되어 있고, UART와 SPI 드라이버 프로그램도 정상인것을 확인하였으므로 본격적인 ISP 프로젝트를 진행해 보도록 하겠다.
ISP 기능을 수행하는데 있어 필요한 명령어가 어떤 것들이 있는지 먼저 분석할 필요가 있다.
위의 표는 ATtiny85를 위한 ISP 명령어이다. 대부분의 AVR CPU는 비슷한 ISP 명령어 체계를 따르지만, 몇몇 CPU는 다른 명령어 조합을 가지고 있으므로 반드시 필요한 명령어가 어떻게 되어 있는지 확인하여야 한다.
그럼, 첫번째 단계로 Bootloader 프로젝트에서처럼 signature 데이터를 가지고 CPU의 상세 정보를 읽어 오는 기능부터 구현해 보도록 하겠다.
제일 먼저 해야할 일은 target CPU에게 programming mode로 진입하는 것을 알려주는 일이다. 위의 표에서 제일 첫번째로 나오는 명령어인 Programming Enable 명령어인것이다.
이를 위하여 PC에서 'P'명령을 보내준다.
Programming mode로 들어가면 LED를 켜고 target CPU의 Reset 핀을 low로 만든다. 그렇게 되면 target CPU는 SPI로 위의 표에 나오는 명령어를 받을 준비를 하게 되는 것이다.
이러한 작업은 PC 프로그램에서 UART를 통하여 ISP 프로그래머와 커넥션을 맺을때 바로 수행되도록 하였다.
커넥션이 연결되면 ISP 프로그래머에 있는 LED에 불이 켜지게 된다.
커넥션 연결을 확인한 후 'Get ID' 버튼을 눌러 target CPU의 signature 데이터를 읽어 온다. 이 값을 이용하여 XML 파일에서 target CPU의 상세 정보를 읽어 오게 되는 것이다. Signature 데이터를 읽어 오는 명령은 bootloader 프로그램과 마찬가지로 's'이다.
Target CPU에서 읽어온 signature 데이터가 '1E930B'이고 이 값을 가지고 XML파일을 찾으면 위의 그림에서처럼 ATtiny85의 Device ID인것을 알수 있게 된다. Flash 메모리의 사이즈는 8KB이고 page size는 64바이트 인것을 알 수 있다.
Device 정보를 제대로 읽어 온것을 확인 하였으므로 다음 단계로 넘어가도록 하겠다.
'프로젝트 > ISP' 카테고리의 다른 글
ISP - Flash memory write (0) | 2016.08.28 |
---|---|
ISP - Flash memory read (0) | 2016.08.28 |
ISP - 회로 구성 (0) | 2016.08.27 |
ISP - In System Programming (2) | 2016.08.27 |