マガジン

  • ATMEGAで学習しよう

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

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

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

記事一覧

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

開発環境をインストールしよう 開発環境 Microchip Studio をインストールします。 https://www.microchip.com/ を開き、下記の画像の流れで進めてください。 Offline In…

nike
4か月前
2

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

現在、基板は頒布しておりませんので、動作検証をされる場合は回路図と部品表をもとに自作してください。 外観 部品表 回路図 スイッチ(SW1~3)とLED(LED1~3)は…

nike
4か月前

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

<はじめに> プログラムはC 言語で記述しています。 特に難しい書き方はしていないつもりですので、理解に困るということは無いと思いますが、ビット操作についてはマイ…

nike
4か月前

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

マイコンの選択 マイコンを選ぶ基準にビット数というものがあります。 簡単に言うと、ビット数が大きいほど一度に処理できるデータが増える=処理速度が上がる というこ…

nike
4か月前
1

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

ご挨拶 長年仕事や趣味でマイコンを使った設計をしてきました。 最近noteという媒体を知り、稚拙ではありますが自分の知識を広く伝えることができればと思い、原稿を作成…

nike
4か月前
1

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

「内部EEPROM アクセス」 <目的> ・内部EEPROM アクセス方法について学ぶ。 <動作概要> ・最初の電源ON では25.5 秒点灯、25.5 秒消灯となる。 ・SW1 が押されたら明0…

100
nike
4か月前

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

「ウォッチドッグタイマ」 <目的> ・ウォッチドッグタイマの設定方法について学ぶ。 <動作概要> ・ウォッチドッグタイマを8 秒を設定する。 ・電源ON 時はLED1 は消灯…

100
nike
4か月前

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

「PWM 制御」 <目的> ・PWM 制御について学ぶ。 <動作概要> ・SW1 が押されたらLED3 をホタルのように点灯させる。(外部割り込み0) ・SW2 が押されたらタイマ2 を停…

200
nike
4か月前

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

「通信(SPI)」 <目的> ・SPI を使った通信について学ぶ。 <動作概要> ・3 秒毎にLED1 を反転させ、温度センサの温度を読出しUSART 通信でパソコンに送信する。 <…

200
nike
4か月前

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

「通信(i2c)」 <目的> ・i2c を使った通信について学ぶ。 <動作概要> ・SW1 が押されたらLED1 を反転させ温度センサの温度を読出し、UART 通信でパソコンに送信する…

200
nike
4か月前

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

「アナログコンパレータ(割込み使用)」 <目的> ・アナログコンパレータ(割込みを使用する)について学ぶ。 <動作概要> ・アナログコンパレータ割込みがかかったらA…

200
nike
4か月前

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

「アナログコンパレータ」 <目的> ・アナログコンパレータ(割込みを使用しない)について学ぶ。 <動作概要> ・SW1 が押されたらAIN0 端子とAIN1 端子の電圧比較を行…

200
nike
4か月前

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

「AD 変換」 <目的> ・AD 変換について学ぶ。 <動作概要> ・ボーレートは9600 とする。 ・SW1 が押されたらLED1 を反転させADC0 端子のAD 変換を行い、結果をUSART で…

200
nike
4か月前

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

「USART 通信(受信割込み使用)」 <目的> ・受信割込みを使用したUSART 通信について学ぶ。 <動作概要> ・ボーレートは9600 とする。 ・SW1 が押されたらLED1 を反転…

200
nike
4か月前

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

「USART 通信」 <目的> ・USART 通信について学ぶ。 <動作概要> ・ボーレートは9600 とする。 ・SW1 が押されたらLED1 を反転させ'SW1 ON'を送信する。 (外部割り込…

200
nike
4か月前

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

「ピン変化割込み」 <目的> ・ピン変化割込みについて学ぶ。 <動作概要> ・SW1 が押されたらLED1 を点灯させる。 ・SW2 が押されたらLED2 を点灯させる。 <ポイント…

100
nike
4か月前
1
ATMEGAで学習しよう(開発環境編)

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


開発環境をインストールしよう

開発環境 Microchip Studio をインストールします。
https://www.microchip.com/
を開き、下記の画像の流れで進めてください。
Offline Installer かWeb Installer か好きなほうでインストールして下さい。
(画像は変更されている場合があります)

各レッスンでダウンロードした avrdlesson

もっとみる
ATMEGAで学習しよう(基板編)

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


現在、基板は頒布しておりませんので、動作検証をされる場合は回路図と部品表をもとに自作してください。

外観

部品表

回路図

スイッチ(SW1~3)とLED(LED1~3)は単純に信号の入出力を行っているだけです。
LEDに流す電流は最大定格を超えないように抵抗で制限します。
U4(ADT7310)はSPI通信方式の温度センサで、U3(ADT7410)はI2C通信方式の温度センサです。
温度

もっとみる
ATMEGAで学習しよう(プログラム記述編)

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

<はじめに>

プログラムはC 言語で記述しています。
特に難しい書き方はしていないつもりですので、理解に困るということは無いと思いますが、ビット操作についてはマイコンではよく使うので説明をしておきます。

A レジスタのB ビット目を1 にするには、A |= (1<<B) と書きます。
なお、A レジスタのB ビット目が1 であった場合にこの操作を行っても1 のままです。
(まれに特殊なレジスタ

もっとみる
ATMEGAで学習しよう(マイコン編)

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


マイコンの選択

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

もっとみる
ATMEGAで学習しよう(はじめに)

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


ご挨拶

長年仕事や趣味でマイコンを使った設計をしてきました。
最近noteという媒体を知り、稚拙ではありますが自分の知識を広く伝えることができればと思い、原稿を作成しました。
原稿中、手間の都合で手書き図を使っている場合があります。ご容赦ください。

本記事の目的

最近はarduinoやRaspberry Piなどのワンボードマイコンを使った工作が目立ちますが、そういったものはライブラリを利

もっとみる
ATMEGAで学習しよう(レッスン17)

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

「内部EEPROM アクセス」
<目的>
・内部EEPROM アクセス方法について学ぶ。

<動作概要>
・最初の電源ON では25.5 秒点灯、25.5 秒消灯となる。
・SW1 が押されたら明0.5 秒暗3.5 秒、SW2 が押されたら明1 秒暗1 秒をEEPROM に書き込む。
・電源をOFF→ON すると、押したSW に応じた時間でLED1 が点滅する。

<ポイント>
・#include

もっとみる
ATMEGAで学習しよう(レッスン16)

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

「ウォッチドッグタイマ」
<目的>
・ウォッチドッグタイマの設定方法について学ぶ。

<動作概要>
・ウォッチドッグタイマを8 秒を設定する。
・電源ON 時はLED1 は消灯している。
・SW1 を押すとLED1 が点灯し、ウォッチドッグタイマがクリアされる。
・8 秒未満でSW1 を押し続ける限り、ウォッチドッグタイマがクリアされ続け、LED1 は点灯状態を維持する。
・SW1 を押してから8

もっとみる
ATMEGAで学習しよう(レッスン15)

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

「PWM 制御」
<目的>
・PWM 制御について学ぶ。

<動作概要>
・SW1 が押されたらLED3 をホタルのように点灯させる。(外部割り込み0)
・SW2 が押されたらタイマ2 を停止しそのときの明るさで止める。(外部割り込み1)
・再度SW1 が押されたら明るさが変化する。

<ポイント>
・LED3 は設定されたduty(ON とOFF の比率)で高速点滅するが、人の目には連続した光に

もっとみる
ATMEGAで学習しよう(レッスン14)

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

「通信(SPI)」
<目的>
・SPI を使った通信について学ぶ。

<動作概要>
・3 秒毎にLED1 を反転させ、温度センサの温度を読出しUSART 通信でパソコンに送信する。

<ポイント>
・SPI インタフェースをもつ温度センサを使用する。

<レジスタ説明>

<プログラム>

もっとみる
ATMEGAで学習しよう(レッスン13)

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

「通信(i2c)」
<目的>
・i2c を使った通信について学ぶ。

<動作概要>
・SW1 が押されたらLED1 を反転させ温度センサの温度を読出し、UART 通信でパソコンに送信する。

<ポイント>
・i2c インタフェースは用意したモジュールを使用する。
・i2c インタフェースをもつ温度センサを使用する。
・SW1 のチャタリング対策をする。

<レジスタ説明>

<プログラム>

もっとみる
ATMEGAで学習しよう(レッスン12)

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

「アナログコンパレータ(割込み使用)」
<目的>
・アナログコンパレータ(割込みを使用する)について学ぶ。

<動作概要>
・アナログコンパレータ割込みがかかったらAIN0 端子とAIN1 端子の電圧比較を行う。
・AIN0>ADC1 の場合はLED1 を、AIN0≦AIN1 場合はLED2 を点灯する。

<ポイント>
・レッスン11 で比較のトリガをSW1 にしていたのを、比較電圧の大小入れ替

もっとみる
ATMEGAで学習しよう(レッスン11)

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

「アナログコンパレータ」
<目的>
・アナログコンパレータ(割込みを使用しない)について学ぶ。

<動作概要>
・SW1 が押されたらAIN0 端子とAIN1 端子の電圧比較を行う。
・AIN0>ADC1 の場合はLED1 を、AIN0≦AIN1 場合はLED2 を点灯する。

<ポイント>
・外部割り込みに関してはレッスン2 を流用する。
・AIN0 に対する比較対象は複数から選択できるが、今回

もっとみる
ATMEGAで学習しよう(レッスン10)

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

「AD 変換」
<目的>
・AD 変換について学ぶ。

<動作概要>
・ボーレートは9600 とする。
・SW1 が押されたらLED1 を反転させADC0 端子のAD 変換を行い、結果をUSART でパソコンに転送する。(外部割り込み0)
・VR1 を回すことでADC0 端子の入力電圧が変わり、SW1 を押すとそのAD 変換値がパソコンに転送される。

<ポイント>
・外部割り込みに関してはレッス

もっとみる
ATMEGAで学習しよう(レッスン9)

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

「USART 通信(受信割込み使用)」
<目的>
・受信割込みを使用したUSART 通信について学ぶ。

<動作概要>
・ボーレートは9600 とする。
・SW1 が押されたらLED1 を反転させ"SW1 ON"を送信する。
(外部割り込み0)
・SW2 が押されたらLED2 を反転させ"SW2 ON"を送信する。
(外部割り込み1)
・1 文字受信したらLED3 を反転させ受信した文字を送信する

もっとみる
ATMEGAで学習しよう(レッスン8)

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

「USART 通信」
<目的>
・USART 通信について学ぶ。

<動作概要>
・ボーレートは9600 とする。
・SW1 が押されたらLED1 を反転させ'SW1 ON'を送信する。
(外部割り込み0)
・SW2 が押されたらLED2 を反転させ'SW2 ON'を送信する。
(外部割り込み1)
・1 文字受信したらED3 を反転させ受信した文字を送信する。

<ポイント>
・外部割り込みに関し

もっとみる
ATMEGAで学習しよう(レッスン7)

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

「ピン変化割込み」
<目的>
・ピン変化割込みについて学ぶ。

<動作概要>
・SW1 が押されたらLED1 を点灯させる。
・SW2 が押されたらLED2 を点灯させる。

<ポイント>
・ピン変化割込みはポート単位で用意されている。
・よって、ピン変化割込みが発生した際は、プログラムでどのピンに変化が発生したかを判定する必要がある。
・各ピンに割込みのマスク設定が可能なので、割込み対象にしない

もっとみる