ATTINY202でLチカ

ATTINY202 に対して MPLAB X IDE と PICkit4 を使って書き込みを行い、 Lチカできるようになるまでの手順を備忘録として残します。

準備するもの
No 名称 個数
1 MPLAB X IDE v6.20 -
2 PICkit4 1個
3 ATTINY202DIP化キット 1個
4 ミニブレッドボード 1個
5 ブレッドボード・ジャンパーワイヤ 14種類×5本 1セット
6 両端ロングピンヘッダ 1×40 1本
7 お好みのLED 1個
8 カーボン抵抗 4.7kΩ 1/4W 2個
9 電源用マイクロUSBコネクタDIP化キット 1個
10 USBケーブル USB2.0 Aオス-マイクロBオス 1.5m 1本

No.1 の MPLAB X IDE v6.20 は ↓ の Microchip 公式からインストーラーを入手します。
その時の最新バージョンを入手するのが良いでしょう。
https://www.microchip.com/en-us/tools-resources/develop/mplab-x-ide

No.2~8 については ↓ の 秋月電子通商 の通販で購入できます。
https://akizukidenshi.com/catalog/default.aspx

No.3 については半田付けが必要になりますので注意してください。 また、PICkit4 は新モデルの PICkit5 が販売されていますのでそちらを入手した方が良いと思います。(どちらもかなり高価ですが…)

PartsCabi.net のアカウントを持っている場合は ↓ にパーツリストを作成しましたので活用してください。
https://partscabi.net/list/e5aa8617-b0da-4876-be09-7aeab537ddb4

ATTINY202について

秋月電子通商で 70円(2024/05/02現在) という価格が魅力的ですが、表面実装パッケージの SOP8 しか入手できないため扱いにくいです。 最初は扱いやすいDIP化キットを購入するのが良いと思います。

主なスペックや機能を以下に記載します。 価格を考えると十分な性能だと思いますが、ピン数が少ないため色々なパーツを接続するような使い方は難しいと思います。
※調査不足で記載できていない情報もありますので調査できたら追記しようと思います。

項目 数値 備考
電源電圧 1.8 ~ 5.5V 絶対最大定格は -0.5~6.0V。VDD、GND端子に流せる電流は -40~85℃ で最大 200mA。
クロック 20MHz 内部オシレータは OSC20M と OSCULP32K の2種類搭載。基本的には OSC20M を使用する。OSC20M について、VDD電圧によって安定動作する周波数が変化する。1.8V で 5MHz、2.7V で 10MHz、4.5V で 20MHz まで。周波数が高いほど消費電流が増加する。
プログラムメモリ 2kB 書き込み回数の上限は10.000回
RAM 128B -
EEPROM 64B 書き込み回数の上限は100,000回
GPIO 6 各ピンのシンク/ソース電流は最大 -40~40mA。PA0ピンはデフォルトではUPDIで使用されるため、GPIOとして使用するには設定の変更が必要ですが、一度変更すると 12V programming が必要になるため注意が必要です。
ADC 6 分解能:10Bit
UART/USART 1 -
I2C 1 データシート上では TWI((Two-Wire Interface) と表記されている。100kHz、400kHz、1MHz をサポート。
SPI 1 -
タイマー 2 調査中


ATTINY202 のピン配置は以下のようになっています。
引用元: ATTINY202 データシート p13

書き込み回路の組み立て

PICkit4 を使って ATTINY202 にプログラムを書き込むための回路を組み立てます。
回路図は以下の通りです。(回路まわりは専門ではないので参考程度でお願いします。)

J1 の VDD、GND、UPDI に PICkit4 を接続します。 書き込み後すぐに動作確認ができるように ATTINY202 の PA1 端子に LED を接続しています。 PA2,3,6,7 は未接続としています。

実際にブレッドボード上に配線すると以下のようになります。 ATTINY202 をブレッドボードに差し込む向きを間違えないようにシールを貼り付けてみました。

プログラムの作成

MPLAB X IDE を使ってLチカ のプログラムを作成していきます。
おおまかな流れは以下の通りです。

  1. 新規プロジェクトの作成
  2. main.c の新規作成
  3. コーディング
  4. ビルド
新規プロジェクトの作成



main.c の新規作成



コーディング

main.c へ以下のコードを貼り付けます。
コードの解説はまた別の記事にしたいと思います。

#define F_CPU 3300000UL

#include <xc.h>
#include <util/delay.h>

FUSES = 
{
    .WDTCFG = PERIOD_OFF_gc | WINDOW_OFF_gc,
    .BODCFG = ACTIVE_DIS_gc | LVL_BODLEVEL0_gc | SAMPFREQ_1KHz_gc | SLEEP_DIS_gc,
    .OSCCFG = FREQSEL_20MHZ_gc,
    .SYSCFG0 = CRCSRC_NOCRC_gc | RSTPINCFG_UPDI_gc,
    .SYSCFG1 = SUT_64MS_gc,
    .APPEND = 0x0,
    .BOOTEND = 0x0,  
};

int main(void) {
    PORTA.DIRSET = 0x02;

    PORTA.PIN0CTRL = 0x00;
    PORTA.PIN1CTRL = 0x00;
    PORTA.PIN2CTRL = 0x08;
    PORTA.PIN3CTRL = 0x08;
    PORTA.PIN4CTRL = 0x08;
    PORTA.PIN5CTRL = 0x08;
    PORTA.PIN6CTRL = 0x08;
    PORTA.PIN7CTRL = 0x08;
    
    while(1)
    {
        PORTA.OUTSET = 0x02;
        _delay_ms(500);
       
        PORTA.OUTCLR = 0x02;
        _delay_ms(500);
    }    
}


ビルド

プログラムの書き込み

作成中