« シングルゲート・マルチプレクサIC「74LVC2G53」 | トップページ | ATtiny402 備忘録 »

2025年7月21日 (月)

その後のMPLAB@Snap:Arduino IDEで使えるぞ

あれこれネットをさまよっていたら、
 JH7UBCブログ
ATtiny402 ArduinoでLチカまで(2023-07-18)
USBシリアル変換器でATtiny402への書き込み(2023-07-23)
Arduinon IDEでATtiny402を手懐ける方法が出てきました。

その中で「書き込み装置の選択」にMPLAB SNAP(UPDI mode)
出ています。
うまく行くのかどうか分かりませんでしたが、
試してみると・・・書けました。

設定、確認するとことろ。
Ss12_20250721101601

  a.書き込み装置 MPLAB SNAP(UPDI mode)
  b.チップの種別 ATtiny402
  c.使用するクロック周波数
  d.milliesやdelayを使いたいならd.
  e.タイマー割り込みは要らないぜというのならe.

タイマーはタイマーAを8bit分割で使い、ベクタ番号9
のオーバーフロー割り込みで計時しています。

「e.」だと、この処理が無くなって、使用RAMバイト数
はゼロになって、ほぼ裸のTiny402が使えます。


たとえば、こんなテストスケッチ。

//  ATtiny402 : 20MHz, millis() micros()タイマーイネーブル
void setup() {
VPORTA.DIR = 0b11001110;
// || |||+---- PA0 6pin UPDI
// || ||+----- PA1 4pin
// || |+------ PA2 5pin
// || +------- PA3 7pin 20ms経過でトグル
// |+---------- PA6 2pin millis変化でトグル
// +----------- PA7 3pin loopでトグル
}

void loop() {
uint32_t ms, ms20, tnow;
tnow = millis(); // 現ms値
ms = ms20 = tnow;
while(1){
VPORTA.IN |= (1 << 7); // PA7 3pin トグル
tnow = millis(); // 現ms値
if(ms != tnow){ // ms値変化?
VPORTA.IN |= (1 << 6); // PA6 2pin トグル
ms = tnow;
}
if((tnow - ms20) >= 20){ // 20ms経過
VPORTA.IN |= (1 << 3); // PA3 7pin トグル
ms20 = tnow;
}
}
}

・loopでPA7をトグル
・millis()で1ms変化を調べてPA6をトグル。
・20ms経過を調べてPA3をトグル。

すると、こんな波形が出てきます。
Ms11a
もうちょい拡大すると・・・
Ms12a
「millis()値変化でトグル」が1msきっちりにならない
のに注意が必要です。
  Arduino UNO R3でもきっちり1msじゃ
  ありません。

|

« シングルゲート・マルチプレクサIC「74LVC2G53」 | トップページ | ATtiny402 備忘録 »

AVRマイコン」カテゴリの記事

MPLAB SNAP」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« シングルゲート・マルチプレクサIC「74LVC2G53」 | トップページ | ATtiny402 備忘録 »