2021年02月01日
setup()
1231行目〜1234行目です。
/* cli() について調べたのですが、Arduino IDEのリファレンスにはありませんでした。
ATmega328のデータシート https://wiki.onakasuita.org/pukiwiki/?Arduino/%E3%83%94%E3%83%B3%E9%85%8D%E7%BD%AE
によると、アセンブラでCLI命令があり、割り込み禁止ということがわかりました。おそらくArduino IDE
のライブラリのどこかに定義してあるのでしょう。
*/
1236行目〜1245行目です。
/* DDRB、PORTB、DDRD、PORTD、UCSR0A、UBRR0H、UBRR0L、UCSR0C、UCSR0Bは、
ATmega328のレジスタです。大文字の変数はレジスタということでしょうか。これもおそらくArduino
IDEのライブラリのどこかに定義してあるのでしょう。
UCSR0A、UBRR0H、UBRR0L、UCSR0C、UCSR0Bは、USB通信の初期設定をします。
UCSR0A=0x02は、日本語データシートP138より、U2X=1のこと。日本語データシートP125 図24-2
によると2分周期を通らない設定。
UBRR0H = 0x00は、UBRR0の上位4ビット。
UBRR0L = 0x08は、UBRR0の下位4ビットで、ボーレート分周器の分周値を8に設定
以上のことから、ボーレイト=fOSC/(UBRR0+1)/2/4=16000000/(8+1)/2/4=222.2(kbps)になる。
誤差3.5%で230.4kbpsのことだよね?。日本語データシートP136にfOSC=16MHzのときの設定値があり
ました。
UCSR0C = 0x06は、非同期、パリティ無し、停止ビット1、UCSR0BのUCSZ2とでデータ長8ビット
UCSR0B = 0x18は、受信許可、送信許可を設定
*/
1247行〜1251行です。
/*
txinit()、rxinit()、rminit(false)、oscinit()を順次実行
*/
1253行〜1258行です。
/*
gen_cmd(0,0)の戻りがtrueの時、oscconfig |= 2; // fgen is connected
oscinfo(true, 0)を実行
*/
void
setup()
{
cli();
/* cli() について調べたのですが、Arduino IDEのリファレンスにはありませんでした。
ATmega328のデータシート https://wiki.onakasuita.org/pukiwiki/?Arduino/%E3%83%94%E3%83%B3%E9%85%8D%E7%BD%AE
によると、アセンブラでCLI命令があり、割り込み禁止ということがわかりました。おそらくArduino IDE
のライブラリのどこかに定義してあるのでしょう。
*/
1236行目〜1245行目です。
DDRB |= 0x20; // output D13
PORTB &= 0xdf; // D13 = LOW
DDRD |= 0x2c; // output D2, D3, D5
PORTD |= 0x04; // D2 == HIGH disconnect the funcgen
UCSR0A = 0x02; // uart async 230400bps 8bit non-parity 1 stopbit
UBRR0H = 0x00;
UBRR0L = 0x08;
UCSR0C = 0x06;
UCSR0B = 0x18;
/* DDRB、PORTB、DDRD、PORTD、UCSR0A、UBRR0H、UBRR0L、UCSR0C、UCSR0Bは、
ATmega328のレジスタです。大文字の変数はレジスタということでしょうか。これもおそらくArduino
IDEのライブラリのどこかに定義してあるのでしょう。
UCSR0A、UBRR0H、UBRR0L、UCSR0C、UCSR0Bは、USB通信の初期設定をします。
UCSR0A=0x02は、日本語データシートP138より、U2X=1のこと。日本語データシートP125 図24-2
によると2分周期を通らない設定。
UBRR0H = 0x00は、UBRR0の上位4ビット。
UBRR0L = 0x08は、UBRR0の下位4ビットで、ボーレート分周器の分周値を8に設定
以上のことから、ボーレイト=fOSC/(UBRR0+1)/2/4=16000000/(8+1)/2/4=222.2(kbps)になる。
誤差3.5%で230.4kbpsのことだよね?。日本語データシートP136にfOSC=16MHzのときの設定値があり
ました。
UCSR0C = 0x06は、非同期、パリティ無し、停止ビット1、UCSR0BのUCSZ2とでデータ長8ビット
UCSR0B = 0x18は、受信許可、送信許可を設定
*/
1247行〜1251行です。
txinit();
rxinit();
rminit(false);
oscinit();
/*
txinit()、rxinit()、rminit(false)、oscinit()を順次実行
*/
// when the function generator seems not to be attached,
// check again up to 2 more times.
if (gen_cmd(0, 0) || gen_cmd(0, 0) || gen_cmd(0, 0))
oscconfig |= 2; // fgen is connected
oscinfo(true, 0);
}
1253行〜1258行です。
/*
gen_cmd(0,0)の戻りがtrueの時、oscconfig |= 2; // fgen is connected
oscinfo(true, 0)を実行
*/
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image
-
no image
-
no image
この記事へのトラックバックURL
https://fanblogs.jp/tb/10510306
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック