めも

windowsマシンであえてavr用バイナリのクロスコンパイルしようと、win-avrをインストールして、led.cを作って、makeして、avrdude.exeで書き込んでテストしました。朝の一時間でぱぱっと。

一年か何年か前にもC言語で開発できて楽だー、とかエントリ書いた気がしますが、やはり楽です。16bitの和算をするのに、a+bでいいとは素敵。addしてadcしてmovwとかしなくていい。C言語で開発できないスタック3段のAT90S1200はディスコンで、現在秋月で一番安いATTINY2313-20PU 100円はC言語で開発できる。ので、もうアセンブリ言語を使うことは少なくなりそうな。アーキテクチャを理解する上でアセンブリ言語での開発は一度はやらなきゃいけないと思われるので、入門者はアセンブリ言語をつかえばいいとおもうよ!ですが。

古いAVRばかり使っていて、新しいAVRのよさに感動するこのごろです。
ATTINY2313-20PUは安いくせに出荷状態で8MHz clock/8 prescalerが有効。USARTもついてる。DDR{B,D}がout(1)のときPINに書き込みすると出力反転機能とか。

私の秋月でのチップの選び方は、
ADCがいる-> ATmega328P 250円
いらん-> ATtiny2313 100円
という二択です。いまのところ328Pあれば不足なしって感じです。

led.c


#include <avr/io.h>
#include <util/delay.h>

void wait(uint16_t w){
    while(w--) _delay_ms(1);
}


int main(void){
  PORTB = 0x00;

  DDRB = 0xFF;
  while(1){
    wait(500);
    PORTB += 0x01;

  }

  return 0;
}

makefile
mfile/makefile_templateの書き換え。


MCU = attiny2313
F_CPU = 1000000
TARGET = led
  • このエントリーをはてなブックマークに追加
  • Pocket

コメントを残す