その後のMPLAB@Snap:Arduino IDEで使えるぞ
あれこれネットをさまよっていたら、
JH7UBCブログ:
・ATtiny402 ArduinoでLチカまで(2023-07-18)
・USBシリアル変換器でATtiny402への書き込み(2023-07-23)
Arduinon IDEでATtiny402を手懐ける方法が出てきました。
その中で「書き込み装置の選択」にMPLAB SNAP(UPDI mode)が
出ています。
うまく行くのかどうか分かりませんでしたが、
試してみると・・・書けました。
設定、確認するとことろ。
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をトグル。
すると、こんな波形が出てきます。
もうちょい拡大すると・・・
「millis()値変化でトグル」が1msきっちりにならない
のに注意が必要です。
Arduino UNO R3でもきっちり1msじゃ
ありません。














最近のコメント