Arduino 内臓RCクロック8MHzでPB6,PB7を使えるようにしてPORTBを8ビットで動かそう


ここを参考にしました
https://blog.goediy.com/?p=625


ファイル→
環境設定の
追加のボードマネージャのURLに

“https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json”

ツール→
ボード→
ボードマネージャー

MiniCore
バージョン2.1x をインストール


ツール→
ボード→MiniCore→ATmega328

ツール→
ボード→Clock:"Internal 8MHz"

ツール→
書き込み装置→"AVRISP mkⅡ(MiniCore)" か "STK500 as ISP(MiniCore)"



なおブートローダーもこの設定で
書き込み装置は"Arduino as IPS(MiniCore)" で行う



特に内部のファイルを書き換える必要はなく、
PB6 = 20
PB7 = 21
として使うことが出来ます
そして8ビットポート PB0-7を
PORTBとして使用できます

サンプルスケッチ 1
/*
 Arduino 内臓RCクロック8MHz

  PORTB 0-7にLEDをつないで
  0=消灯
  1=点灯

  開発環境 Windows11 Pro x64
  Arduino IDE 1.8.16
   Date 2022-05-08
    Program by.Tsurutsuru
*/

void setup()
{
//  pinMode(PORTB , OUTPUT);    //エラーは出ないけど設定不可

  pinMode( 8, OUTPUT); //8番ピンをOUTPUT(出力)に指定(PB0)
  pinMode( 9, OUTPUT); //9番ピンをOUTPUT(出力)に指定(PB1)
  pinMode(10, OUTPUT); //10番ピンをOUTPUT(出力)に指定(PB2)
  pinMode(11, OUTPUT); //11番ピンをOUTPUT(出力)に指定(PB3)
  pinMode(12, OUTPUT); //12番ピンをOUTPUT(出力)に指定(PB4)
  pinMode(13, OUTPUT); //13番ピンをOUTPUT(出力)に指定(PB5)

  pinMode(20, OUTPUT); //20番ピンをOUTPUT(出力)に指定(PB6)
  pinMode(21, OUTPUT); //21番ピンをOUTPUT(出力)に指定(PB7)

 PORTB=0x00;                    //PORTBすべて0
}

void loop()
{
  byte p=21;


  for(i=0;i<=255;i++)
  {
     PORTB = i;

//    digitalWrite( p, HIGH);
//    delay(100);
//    digitalWrite( p, LOW);
     delay(100);

  }// for i
}// loop





/*
  サンプル2「ナイトライダー風」
  Arduino 内臓RCクロック8MHz

  PORTB 0-7にLEDをつないで
  0=消灯
  1=点灯

  開発環境 Windows11 Pro x64
  Arduino IDE 1.8.16
   Date 2022-05-08
    Program by.Tsurutsuru
*/

byte led[15]={1,2,4,8,16,32,64,128,128,64,32,16,8,4,1};

void setup()
{
//  pinMode(PORTB , OUTPUT);    //エラーは出ないけど設定不可

  pinMode( 8, OUTPUT); //8番ピンをOUTPUT(出力)に指定(PB0)
  pinMode( 9, OUTPUT); //9番ピンをOUTPUT(出力)に指定(PB1)
  pinMode(10, OUTPUT); //10番ピンをOUTPUT(出力)に指定(PB2)
  pinMode(11, OUTPUT); //11番ピンをOUTPUT(出力)に指定(PB3)
  pinMode(12, OUTPUT); // 12番ピンをOUTPUT(出力)に指定(PB4)
  pinMode(13, OUTPUT); //13番ピンをOUTPUT(出力)に指定(PB5)

  pinMode(20 , OUTPUT); //20番ピンをOUTPUT(出力)に指定(PB6)
  pinMode(21 , OUTPUT); //21番ピンをOUTPUT(出力)に指定(PB7)

 PORTB=0x00;                    //PORTBすべて0
}

void loop()
{
  for(byte i=0 ; i<=14 ; i++)
  {
    PORTB = led[i];
    delay(100);
  }
 
}// loop