こんにちは
やましょうです。
どうもXAIOの種類SAMD/RP2040/ESP32C3で挙動が違う。
D6/D7の挙動が違う。なんでだろう?
確認ファームはArudinoで以下のコードを確認してみた。
こんにちは
やましょうです。
どうもXAIOの種類SAMD/RP2040/ESP32C3で挙動が違う。
D6/D7の挙動が違う。なんでだろう?
確認ファームはArudinoで以下のコードを確認してみた。
オンライン会議中は、その対応に出ることもできない。
そのため、玄関対応くん(くま)にまかせることにする。
1.擬人化する。
3.実際の画面
4.裏側
5.作成に必要なもの
1.dfplayer関連
DFPlayer - A Mini MP3 Player For Arduino - スイッチサイエンス (switch-science.com)
スピーカー、お好きに!
2.xbee関連
たぶんこのあたり
2-1.pcからxbeeへ送信する
XBee USB アダプター rev.2 - スイッチサイエンス (switch-science.com)
2-2.xbeeのピッチ変換
XBee用2.54mmピッチ変換基板: 半導体(モジュール) 秋月電子通商-電子部品・ネット通販 (akizukidenshi.com)
2-3.xbee2個
いろいろあるので自分で知られるべし。
3.接続
2-2の電源を5vとします。(なのでusb)
gndとvddを接続 xbee,dfplayerともに、
xbeeのtxを2pinをdfplayerのrx2pin繋げます。
なので
実際は3本しか接続せず終了簡単
4-1.コンパイラdelphiをエンバカデロから入手
エンバカデロ・テクノロジーズ アプリケーション開発ツール (embarcadero.com)
4-2.232cコンポーネント githubから入手
GitHub - CSDCOJP/WUni232c: WUni232c Uni232c Uart Usart delphi cppbuillder Windows
4-3.ソースgithubから入手
GitHub - qa65000/CTMEnt: delphi uni232c
変更点コムポートを変更してコンパイル完成
以上
こんにちは
やましょうです。
ATTINYでprintfする
赤の部分を追記すればUart printfがでる。
static FILE USART_stream = FDEV_SETUP_STREAM(USART_0_write, NULL, _FDEV_SETUP_WRITE);
int main(void)
{
/* Initializes MCU, drivers and middleware */
atmel_start_init();
stdout = &USART_stream;
以上
やましょうでした。
やましょうです。
ATTINY404で遊んでいるのですが、16Mhz内部発振の筈が20MHZに。。。
Atmel Startでは16MHZにしたのですが、(画像は20MHZですが。。)
いろいろ調べるとFUSEを設定する必要があるようです。。
こんにちは やましょうです。
AVR0 シリーズ本日はタイマです。
なんか昔のAVRと違う。。ということでタイマのsampleです。
TCAの構成はこんな感じですね。
typedef struct TCA_SINGLE_struct
{
register8_t CTRLA; /* Control A */
register8_t CTRLB; /* Control B */
register8_t CTRLC; /* Control C */
register8_t CTRLD; /* Control D */
register8_t CTRLECLR; /* Control E Clear */
register8_t CTRLESET; /* Control E Set */
register8_t CTRLFCLR; /* Control F Clear */
register8_t CTRLFSET; /* Control F Set */
register8_t reserved_0x08;
register8_t EVCTRL; /* Event Control */
register8_t INTCTRL; /* Interrupt Control */
register8_t INTFLAGS; /* Interrupt Flags */
register8_t reserved_0x0C;
register8_t reserved_0x0D;
register8_t DBGCTRL; /* Degbug Control */
register8_t TEMP; /* Temporary data for 16-bit Access */
register8_t reserved_0x10;
register8_t reserved_0x11;
register8_t reserved_0x12;
register8_t reserved_0x13;
register8_t reserved_0x14;
register8_t reserved_0x15;
register8_t reserved_0x16;
register8_t reserved_0x17;
register8_t reserved_0x18;
register8_t reserved_0x19;
register8_t reserved_0x1A;
register8_t reserved_0x1B;
register8_t reserved_0x1C;
register8_t reserved_0x1D;
register8_t reserved_0x1E;
register8_t reserved_0x1F;
_WORDREGISTER(CNT); /* Count */
register8_t reserved_0x22;
register8_t reserved_0x23;
register8_t reserved_0x24;
register8_t reserved_0x25;
_WORDREGISTER(PER); /* Period */
_WORDREGISTER(CMP0); /* Compare 0 */
_WORDREGISTER(CMP1); /* Compare 1 */
_WORDREGISTER(CMP2); /* Compare 2 */
register8_t reserved_0x2E;
register8_t reserved_0x2F;
register8_t reserved_0x30;
register8_t reserved_0x31;
register8_t reserved_0x32;
register8_t reserved_0x33;
register8_t reserved_0x34;
register8_t reserved_0x35;
_WORDREGISTER(PERBUF); /* Period Buffer */
_WORDREGISTER(CMP0BUF); /* Compare 0 Buffer */
_WORDREGISTER(CMP1BUF); /* Compare 1 Buffer */
_WORDREGISTER(CMP2BUF); /* Compare 2 Buffer */
register8_t reserved_0x3E;
register8_t reserved_0x3F;
} TCA_SINGLE_t;
①CTRLBのWGMODE2~01に01(FRQ)を設定
#define TCA_SINGLE_OVF_bm 0x01 /* Overflow Interrupt bit mask. */
となっているのでこれを設定
②PERにタイマ値設定
カウント数(設定値+1) = 欲しい規定時間 * 3.3Mhz(20Mhz発振時 1/6分周後)となるので。
1[mS]が欲しい規定時間の場合 3000となります。
TCBですと1/2の分周器が入るので設定値は半分の
1500になると思います。
実際タイマの回路はアンダーフローで割込みに入るでしょうから
カウント数-1を設定するべきかと思います。
③CTRLAに分周数設定し開始
TCA0.SINGLE.CTRLB = TCA_SINGLE_WGMODE_NORMAL_gc;
TCA0.SINGLE.PER = 3000;
TCA0.SINGLE.CTRLA = TCA_SINGLE_CLKSEL_DIV1_gc; /* 1/1分周 */ TCA0.SINGLE.CTRLA |= TCA_SINGLE_ENABLE_bm; /* タイマ計測開始 */
また割込みを使用する場合は、
④INTCTRLのOVFを設定して、タイマのOVERフロー割込みを許可にしておきます。
(その後MASTER割込みも許可してくださいね)
⑤割込み処理の記述、もしくはメインでOVFのチェックをします。
5-1.割込み時
タイマ割込み設定にして、
TCA0.SINGLE.INTCTRL = TCA_SINGLE_OVF_bm;を設定部に追加し
ISR(TCA0_OVF_vect)
{
任意処理
TCA0.SINGLE.INTFLAGS = TCA_SINGLE_OVF_bm;
}
5-2.メインでタイマチェック
if(TCA0.SINGLE.INTFLAGS & TCA_SINGLE_OVF_bm)
{ /*1MS単位 */
TCA0.SINGLE.INTFLAGS = TCA_SINGLE_OVF_bm;
任意処理
}
以上
やましょうでした。
こんにちは、
やましょうです。
AVR TINY 0 シリーズ(AVR TINY 202,402,204,404,804,1604,1606,806,406,807,1607)
実際にはATtiny202を使ってみようと思ったのですが、いろいろ検索をしてみたのですが、
何もみつからなったので、記載しておきたいと思います。