2

私は今、友人に AVR マイクロコントローラーのプログラミング方法を教えています。簡単なモールス信号のようなコードを送信するこの小さなプログラムを作成しました。

問題は、AVR-GCC と WinAVR の両方でコンパイルした後、a.out ファイルがほぼ 30KB になり、hex ファイルが 11KB になり、attiny2313 フラッシュに適合しないことです。

WinAVR CMD:avr-gcc -mmcu=attiny2313 -Os -g main.c

Avr-objcopy:avr-objcopy -O ihex a.out a.hex

コードは次のとおりです。

#define F_CPU 8000000L
#include <avr/io.h>
#include <util/delay.h>

void light_led(int ms)
{
 PORTD |= (1 << 4);
 _delay_ms(ms);
 PORTD &= ~(1 << 4);
 _delay_ms(1000);
}

void send_char(int c)
{
 int i;
 for(i = 1; i < 8+1; i++)
 {
  if(c & i) light_led(1000);
  else light_led(500); 
 }
}

int main(void)
{
 DDRD |= (1 << 4);
 //char text[] = {'t', 'e', 's', 't'};
 int i;
 for(i = 0; i < 1; i++) send_char(100);//text[i]);
 return 0;
}
4

1 に答える 1