목록avr (5)
Brise
STK500기반의 AVR ISP 프로그래머를 사용하는 사람들은 최근에 Atmel(Microchips)에서 나오는 Atmel Studio를 사용할 수 없다. 이는 IDE에서 해당 ISP를 지원하지 않기 때문이다. 게다가 Atmel Studio는 Visual Studio 기반의 개발 툴로 단축키 맵이 이클립스 기반의 툴과 다른 점들이 있어 이클립스 기반으로 개발하던 사람들이 사용하기에 어렵기도 하다. 궁여지책으로 Atmel Studio 이전에 사용하던 AVR Studio 4.19버전을 사용하는 사람들이 많은데, 윈도우 10에서는 윈도우 업데이트를 꼭 하여야 설치가 가능한 단점이 있으며, AVR Studio 자체의 에디팅 기능도 그리 좋지 않아 사용하기 난해한 점이 있었다. 필자도 이러한 부분에 필요성을 느껴..
이 예제에서는 가변저항의 전압값을 읽어온 후 전압값에 따라 서보모터를 움직인다. 가변저항은 이전 adc예제를 이용하여 전압값을 읽어오며, 읽어오는 전압값은 0~5V, 값으로는 0~1023사이의 값으로 읽어들여진다. RC 서보모터의 경우 PWM 신호를 받아 동작한다. 서보모터의 한 주기는 20ms로 1초당 50번 반복되어야 하며핀의 값이 HIGH인 시간이 0.5ms일 때 서보모터의 각도가 0도가 되며핀의 값이 HIGH인 시간이 2.5ms일 때 서보모터의 각도가 180도가 된다. 아트메가128에서 서보모터를 제어하기 위해서 20ms주기의 PWM을 발생시킨다. 아트메가128에는 타이머 1,3(8비트 타이머) 타이머 2,4(16비트 타이머)가 있으며 8비트 타이머로는 충분한 정밀도를 확보하기 어렵기 때문에 16..
12345678910111213141516171819202122232425262728#define F_CPU 16000000UL #include #include //#include #include "nb_adc.h" void nb_sleep_ms(uint16_t ms){ while(ms-- != 0) _delay_ms(1);}int main(){ DDRA = 0xFF; PORTA = 0xFF; adc_init(); int16_t adc_value = 0; while(1){ for(int i=0; i
아트메가를 인공호흡하기 위해서는 1mhz의 클럭이 필요하다 확실하게는 1mhz의 오실레이터를 구하거나, PWM을 이용하여 분주를 잘 맞춰야 겠지만, 칩에 익숙하지 않아 편의상 GPIO를 이용하여 1mhz를 만들어 보았다. 아두이노의 제공 API인 digitalWrite를 쓰면 속도가 나오지 않아(1M번 스위칭을 수행하는데 12초..) avr의 레지스터를 직접 만져 만들었다. 아두이노 Pro Micro의 회로도는 다음과 같다. D3핀이 PD0에 물려 있으므로 PORTD 레지스터를 바꾸어 코드를 짠다. 코드는 다음과 같다. 123456789101112131415161718192021222324252627282930313233343536unsigned long int i = 1000000;unsigned in..
-- 기존에 시중에 판매하고 있는 후미등들은 밝기가 어둡거나 지속시간이 짧은 단점이 있다. 사실 후미등은 한번 달아놓으면 가능한 오래가고 밝은게 좋은데 그런 후미등을 아직 못찾았다;; 그러한 이유로 단점들을 극복하고 자신이 원하는대로 맞출 수 있는 후미등을 만들고자 한다. 만들고자하는 후미등의 필요 스펙은 다음과 같다. - 원하는 점멸모드와 속도를 조절할 수 있을 것- 밝을 것 (적어도 코인전지 led보단)- 오래갈 것 ( 예상 10시간)- 고정 할 수 있을 것- 전지 교체가 가능할 것 위와 같은 specification을 만족시키기 위한 refinement는 다음과 같다. - avr atmega8 MCU- 하이플럭스 LED- 18650 전지 홀더- 몰렉스 2극 커넥터 LED를 파워 led로 사용하면 매..