본문 바로가기

avr c

I2C IO-expander를 이용한 keypad의 구현 Embedded System Project 에서 구현했던 것들... Embeddad System 에서 하는 프로젝트는 Atmega32, 서보모터, LCD, keypad 등을 이용해서 자동차를 설계하고, 그 자동차를 트렉을 따라갈 수 있게 설계하고, 그 트렉에 대한 알고리즘과 한바퀴 도는데 걸리는 최소시간을 가지고 점수를 매기는 프로젝트였다. 외국에서 하는 처음프로젝트였는데 꽤나 재미있는 프로젝트였다. 막상할때는 정말 어렵다고 생각했었는데, 하고나면 -_- 정말 쉬워보인다 제길... 1. Servo motor _ 서보모터 (앞선 글을 참조하도록...) 2. 4x4 matrix Keypad _ 키패드 3. Tachometer _ 타코미터 4. Delay _ 정확한 딜레이 이번시간은 키패드구현에 대해서 말해보.. 더보기
[AVR_C] Volatile 변수에 대해서 AVR C 에서는 Volatile변수를 주로 사용한다. 이는 컴파일할때 최적화를 막아주기 위함이라고 하는데, 솔직히 이해안되서 그냥 모든 변수를 volatile이라고 선언해 주다가.... 이제 좀 알겠다 싶어 적는다. Volatile은 위에서 말한데로 컴파일하는데 최적화를 막아주는 방법이다. 컴파일할때 최적화를 시켜주는 경우가 있는데 한 변수가 바뀌는 코드가 없이 한 코드안에서 계속 사용되면, 이 변수를 얻으러 메인메모리까지 가기가 귀찮아서 로컬레지스트에 저장해놓는다. 예를 들어 int i = 100; 해놓고 아래에서 setValue(i); 뭐 이런식으로 만 쭈욱 써놨지, i = i+20; 처럼 변수를 변형하는 꼴이 없다면 그냥 가까운 곳에 복사해놓는다는 것이다. 하지만 문제가 되는게, 특히 임베디드 시.. 더보기