マガジン

  • ATMEGAで学習しよう

    AVRマイコンプログラミング入門用として、レッスン形式にまとめました。 マイコンの機能の理解にも役立ちます。 対象とするマイコンはATmega88ですが、arduinoで使われているATmega328Pの学習にもなります。

  • AVRマイコンde学習しよう AVR128DA28

    AVRマイコンプログラミング入門用として、レッスン形式にまとめました。 マイコンの機能の理解にも役立ちます。 トレーニング用の基板頒布も行います(現在準備中) 対象とするマイコンは、トランジスタ技術2021年4月号で特集されたAVR-DxマイコンのAVR128DA28です。

最近の記事

ATMEGAで学習しよう(開発環境編)

開発環境をインストールしよう 開発環境 Microchip Studio をインストールします。 https://www.microchip.com/ を開き、下記の画像の流れで進めてください。 Offline Installer かWeb Installer か好きなほうでインストールして下さい。 (画像は変更されている場合があります) 各レッスンでダウンロードした avrdlesson フォルダを C ドライブに入れて下さい。(圧縮フォルダを解凍) <ライタ(書き

    • ATMEGAで学習しよう(基板編)

      現在、基板は頒布しておりませんので、動作検証をされる場合は回路図と部品表をもとに自作してください。 外観 部品表 回路図 スイッチ(SW1~3)とLED(LED1~3)は単純に信号の入出力を行っているだけです。 LEDに流す電流は最大定格を超えないように抵抗で制限します。 U4(ADT7310)はSPI通信方式の温度センサで、U3(ADT7410)はI2C通信方式の温度センサです。 温度センサから温度データをそれぞれの通信方式で受け取ります。 VR1の10k可変抵抗

      • ATMEGAで学習しよう(プログラム記述編)

        <はじめに> プログラムはC 言語で記述しています。 特に難しい書き方はしていないつもりですので、理解に困るということは無いと思いますが、ビット操作についてはマイコンではよく使うので説明をしておきます。 A レジスタのB ビット目を1 にするには、A |= (1<<B) と書きます。 なお、A レジスタのB ビット目が1 であった場合にこの操作を行っても1 のままです。 (まれに特殊なレジスタで1 にする操作で0 になるものがあります。そういったものはレッスン中で説明しま

        • ATMEGAで学習しよう(マイコン編)

          マイコンの選択 マイコンを選ぶ基準にビット数というものがあります。 簡単に言うと、ビット数が大きいほど一度に処理できるデータが増える=処理速度が上がる ということが言えます。 趣味の電子工作用としては、8、16、32ビットマイコンが主流です。 あとは、マイコンの入手性と価格(手に入れやすく安い)、理解が容易かどうか、開発環境が容易に手に入るかなどになるかと思います。 私的意見としては、入門用としては32ビットは画像処理など大量データの高速処理向きで理解のハードルが高い、1

        ATMEGAで学習しよう(開発環境編)

        マガジン

        • ATMEGAで学習しよう
          22本
          ¥2,000
        • AVRマイコンde学習しよう AVR128DA28
          20本
          ¥2,000

        記事

          ATMEGAで学習しよう(はじめに)

          ご挨拶 長年仕事や趣味でマイコンを使った設計をしてきました。 最近noteという媒体を知り、稚拙ではありますが自分の知識を広く伝えることができればと思い、原稿を作成しました。 原稿中、手間の都合で手書き図を使っている場合があります。ご容赦ください。 本記事の目的 最近はarduinoやRaspberry Piなどのワンボードマイコンを使った工作が目立ちますが、そういったものはライブラリを利用することが多いと思います。 そういった場合、必要なライブラリが見つからない場合

          ATMEGAで学習しよう(はじめに)

          ATMEGAで学習しよう(レッスン17)

          「内部EEPROM アクセス」 <目的> ・内部EEPROM アクセス方法について学ぶ。 <動作概要> ・最初の電源ON では25.5 秒点灯、25.5 秒消灯となる。 ・SW1 が押されたら明0.5 秒暗3.5 秒、SW2 が押されたら明1 秒暗1 秒をEEPROM に書き込む。 ・電源をOFF→ON すると、押したSW に応じた時間でLED1 が点滅する。 <ポイント> ・#include <avr/eeprom.h>を追加する。 ・変数を入れる領域は電源OFF とと

          有料
          100

          ATMEGAで学習しよう(レッスン17)

          ATMEGAで学習しよう(レッスン16)

          「ウォッチドッグタイマ」 <目的> ・ウォッチドッグタイマの設定方法について学ぶ。 <動作概要> ・ウォッチドッグタイマを8 秒を設定する。 ・電源ON 時はLED1 は消灯している。 ・SW1 を押すとLED1 が点灯し、ウォッチドッグタイマがクリアされる。 ・8 秒未満でSW1 を押し続ける限り、ウォッチドッグタイマがクリアされ続け、LED1 は点灯状態を維持する。 ・SW1 を押してから8 秒放置すると、ウォッチドッグによるマイコンのリセットがかかり、電源ON と同様

          有料
          100

          ATMEGAで学習しよう(レッスン16)

          ATMEGAで学習しよう(レッスン15)

          「PWM 制御」 <目的> ・PWM 制御について学ぶ。 <動作概要> ・SW1 が押されたらLED3 をホタルのように点灯させる。(外部割り込み0) ・SW2 が押されたらタイマ2 を停止しそのときの明るさで止める。(外部割り込み1) ・再度SW1 が押されたら明るさが変化する。 <ポイント> ・LED3 は設定されたduty(ON とOFF の比率)で高速点滅するが、人の目には連続した光に見える。 ・duty が低い(OFF 時間>>ON 時間)と暗く見え、duty

          有料
          200

          ATMEGAで学習しよう(レッスン15)

          ATMEGAで学習しよう(レッスン14)

          「通信(SPI)」 <目的> ・SPI を使った通信について学ぶ。 <動作概要> ・3 秒毎にLED1 を反転させ、温度センサの温度を読出しUSART 通信でパソコンに送信する。 <ポイント> ・SPI インタフェースをもつ温度センサを使用する。 <レジスタ説明> <プログラム>

          有料
          200

          ATMEGAで学習しよう(レッスン14)

          ATMEGAで学習しよう(レッスン13)

          「通信(i2c)」 <目的> ・i2c を使った通信について学ぶ。 <動作概要> ・SW1 が押されたらLED1 を反転させ温度センサの温度を読出し、UART 通信でパソコンに送信する。 <ポイント> ・i2c インタフェースは用意したモジュールを使用する。 ・i2c インタフェースをもつ温度センサを使用する。 ・SW1 のチャタリング対策をする。 <レジスタ説明> <プログラム>

          有料
          200

          ATMEGAで学習しよう(レッスン13)

          ATMEGAで学習しよう(レッスン12)

          「アナログコンパレータ(割込み使用)」 <目的> ・アナログコンパレータ(割込みを使用する)について学ぶ。 <動作概要> ・アナログコンパレータ割込みがかかったらAIN0 端子とAIN1 端子の電圧比較を行う。 ・AIN0>ADC1 の場合はLED1 を、AIN0≦AIN1 場合はLED2 を点灯する。 <ポイント> ・レッスン11 で比較のトリガをSW1 にしていたのを、比較電圧の大小入れ替わりをトリガとする。 <レジスタ説明> 「コンパレータ入力選択について」 基

          有料
          200

          ATMEGAで学習しよう(レッスン12)

          ATMEGAで学習しよう(レッスン11)

          「アナログコンパレータ」 <目的> ・アナログコンパレータ(割込みを使用しない)について学ぶ。 <動作概要> ・SW1 が押されたらAIN0 端子とAIN1 端子の電圧比較を行う。 ・AIN0>ADC1 の場合はLED1 を、AIN0≦AIN1 場合はLED2 を点灯する。 <ポイント> ・外部割り込みに関してはレッスン2 を流用する。 ・AIN0 に対する比較対象は複数から選択できるが、今回はAIN1 とする。 <レジスタ説明> 「コンパレータ入力選択について」 基

          有料
          200

          ATMEGAで学習しよう(レッスン11)

          ATMEGAで学習しよう(レッスン10)

          「AD 変換」 <目的> ・AD 変換について学ぶ。 <動作概要> ・ボーレートは9600 とする。 ・SW1 が押されたらLED1 を反転させADC0 端子のAD 変換を行い、結果をUSART でパソコンに転送する。(外部割り込み0) ・VR1 を回すことでADC0 端子の入力電圧が変わり、SW1 を押すとそのAD 変換値がパソコンに転送される。 <ポイント> ・外部割り込みに関してはレッスン2 を流用する。 ・SW1 のチャタリング対策をする。 ・変換の基準電圧は複数

          有料
          200

          ATMEGAで学習しよう(レッスン10)

          ATMEGAで学習しよう(レッスン9)

          「USART 通信(受信割込み使用)」 <目的> ・受信割込みを使用したUSART 通信について学ぶ。 <動作概要> ・ボーレートは9600 とする。 ・SW1 が押されたらLED1 を反転させ"SW1 ON"を送信する。 (外部割り込み0) ・SW2 が押されたらLED2 を反転させ"SW2 ON"を送信する。 (外部割り込み1) ・1 文字受信したらLED3 を反転させ受信した文字を送信する。 <ポイント> ・レッスン8(USART 通信)を参照下さい。 ・レッスン8

          有料
          200

          ATMEGAで学習しよう(レッスン9)

          ATMEGAで学習しよう(レッスン8)

          「USART 通信」 <目的> ・USART 通信について学ぶ。 <動作概要> ・ボーレートは9600 とする。 ・SW1 が押されたらLED1 を反転させ'SW1 ON'を送信する。 (外部割り込み0) ・SW2 が押されたらLED2 を反転させ'SW2 ON'を送信する。 (外部割り込み1) ・1 文字受信したらED3 を反転させ受信した文字を送信する。 <ポイント> ・外部割り込みに関してはレッスン2 を流用する。 ・SW1 とSW2 のチャタリング対策をする。 ・

          有料
          200

          ATMEGAで学習しよう(レッスン8)

          ATMEGAで学習しよう(レッスン7)

          「ピン変化割込み」 <目的> ・ピン変化割込みについて学ぶ。 <動作概要> ・SW1 が押されたらLED1 を点灯させる。 ・SW2 が押されたらLED2 を点灯させる。 <ポイント> ・ピン変化割込みはポート単位で用意されている。 ・よって、ピン変化割込みが発生した際は、プログラムでどのピンに変化が発生したかを判定する必要がある。 ・各ピンに割込みのマスク設定が可能なので、割込み対象にしないピンはマスクをかける。(0 を設定) <レジスタ説明> レッスン2 で外部割

          有料
          100

          ATMEGAで学習しよう(レッスン7)