Embedded system/AVR 썸네일형 리스트형 소프트웨어로 AVR 메모리 초기화 하기 와치독 타이머를 사용하는 방법과 리셋 스위치를 입력하는 방법이 있습니다. 와치독 타이머를 사용하면 진정한 리셋이 이루어 지지만 다음과 같은 간단한 방법으로 프로그램의 시작부로 간단하게 이동하는 방법도 있습니다. void (*reset)(void) = 0x0000; 와 같이 함수 포인터를 이용해 점프할 위치를 정의하고 if(bit_is_set(PORTA, 0) ){ reset(); } 와 같이 하는 방법과 #asm("jmp 0x0000"); 을 이용해서 점프 하는 방법도 있습니다. 더보기 winavr 버전에 따른 문제점 20081205 vs 20090313 #define CPU_CLOCK 14745600 #define BAUD_RATE 9600 #define BAUD_RATE_L (CPU_CLOCK / (16l * BAUD_RATE)) - 1 #define BAUD_RATE_H ((CPU_CLOCK / (16l * BAUD_RATE)) - 1) >> 8 void uart_init(void) { // baud rate 설정 UBRR1H = (unsigned char)BAUD_RATE_H; UBRR1L = (unsigned char)BAUD_RATE_L; // no parity, 1 stop bit, 8bit 설정 UCSR1C = (0 더보기 일광절약제(Daylight Saving) RCT의 DSE 비트에 있던데 무슨 소린지 몰라서... 알아보니 4월의 첫번째 일요일에 1:59:59AM 다음에 3:00:00 AM이 되도록 하고 , 10월의 마지막 일요일에 처음으로 1:59:59 AM이 된 다음에 또 다시 1:00:00 AM이 되도록 하여 일광시간절약제를 가능하게 한다... 라고 윤덕용 교수님이 말씀하셨네요. 근데 RTC register B에 1번 24/14 비트를 set 하면 시계가 왜 뻣을까요.. -_-; 타이밍 문제일가요? 더보기 atmega128의 컴파일러 AVR-GCC의 모든 것 WinAVR의 Makefile 파일로 컴파일 하다보면 avr-gcc 옵션이 부쩍 늘어난 것을 볼 수 있다. 이런 옵션의 대부분은 Makefile의 CFLAGS에 정의되어 있다. 그 중에서 프로그램 동작에 영향을 미칠 수 있는 몇 가지만 살펴보고자 한다. avr-gcc에 국한된 옵션(-m)도 있고, 대부분의 gcc에서 통용되는 옵션(-f)도 있다. avr-gcc 전용 옵션이 아닐 경우는 쉽게 접할 수 있는 32-bit x86-gcc 기준으로 설명하고 있으니 혼란없길 바란다. -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -fno-unit-at-a-time -mint8 (avr-gcc) -mshort-calls (avr-gcc) avr-g.. 더보기 the problem of delay //자체 소스에서 만든 딜레이를 쓰면 //에러가 발생되는 걸 보여주는 소스 #include #include #include #include #include #define CPU_CLOCK 16000000 #define TICKS_PER_SEC 1000 #define BAUD_RATE 9600 #define BAUD_RATE_L (CPU_CLOCK / (16l * BAUD_RATE)) - 1 #define BAUD_RATE_H ((CPU_CLOCK / (16l * BAUD_RATE)) - 1) >> 8 /* #define DDR_RF DDRC #define PORT_RF PORTC #define PIN_RF PINC */ volatile unsigned int tic_time; unsigned int ad.. 더보기 AVR studio optimization problem 자! 최적화 옵션 항목을 보면 -00, -01, -02, -03, -0s 선택항목이 있다 -O0 최적화 과정이 없어 컴파일 시간이 감소한다. 기대되는 결과치를 받아서 디버깅 할 때 이용할 때 적합하다. -O1 최적화를 진행해서 코드 사이즈와 수행시간을 감소 시킨다. -O2 최적화 옵션 중 제일 적당한 최적화이다. -O3 O2 보다 최적화를 좀 더 한다. 라고 하지만 optimization을 통해 lcd 그래픽 제어시 속도 향상을 가져왔다고.. - -; O0- 제어 하고 전역변수에 volatile를 선언해 주어야 한다. 외냐면 코드 최적화 컴 일러가 불필요한 코드라고 생각하는 걸 간략화 시키다가 프로그램 의도하지 않은 방향으로 결과물이 나오기 때문이다. 그러므로 volatile을 붙이면 그 변수는 고정된 .. 더보기 이전 1 다음