アフィリエイト広告を利用しています
Ad×Ad


Ad×Adは表示されるだけで報酬がもらえます。
以下から登録すると100ptもらえます。
 →  アドアド -あなたの街の無料広告サイト-
検索
最新記事

広告

posted by fanblog

2017年12月15日

moderoll()について調べたこと(備忘録)

moderoll()は、kit_scope.ino 中の loop() の中にある関数です。

詳細はまだ不明。

?@rmon==0の時(プログラム開始直後の時か?)
 各種レジスターに値を代入

?Aheader(3, 0)を実行
 txput1(0)
 txput1(osctvolt)
 txputcrc(false)
 上記は何かしらデータを送信している

?Btxgo()を実行 パケットを送信開始

?Cfor文を実行 この中でおそらく初めにヘッダーデータを、次に波形データを送信しているらしい

?Dtxputcrc(false)
 txfinish(true, true) を実行し、一連のデータ送信が完了ということらしい

ソースコードは下記の通り。


void
moderoll ( )
{
byte i ;

if ( rmon == 0 ) { // start rollmode
// reset and initialize timer1
TCCR1B = 0x00 ; // stop
TCCR1A = 0x00 ;
TIMSK1 = 0x00 ; // no irq
TCNT1 = 0x0000 ;
ICR1 = 200 ; // 100 usec
TIFR1 = 0x27 ; // clear flags;

ACSR = 0x94 ; // disable analog comparator
ADCSRB = 0x00 ;
ADCSRA = 0x84 ; // adc enable
ADMUX = 0x60 ; // adc target is A0 pin to get trigger value;
ADCSRB = 0x07 ; // timer1 capture event;
ADCSRA = 0xf4 ; // adc auto trigger, force start 1st conversion

TCCR1B = 0x1a ; // timer1 CTC-ICR1 mode pre1/8
TCCR1A = 0x00 ; //             CTC mode;

// wait until the 1st conversion finishes.
while ( ( ADCSRA & 0x10 ) == 0x00 )
uartjob ( ) ;
osctvolt = ADCH ; // trigger level

ADMUX = 0x61 ;
ADCSRA = 0xb4 ; // clear flag, 1MHz, adate on

rminit ( true ) ;
}

header ( 3 , 0 ) ;

txput1 ( 0 ) ;
txput1 ( osctvolt ) ;
txputcrc ( false ) ;

txgo ( ) ; // start to trasmit a packet

for ( i = 0 ; i < 200 ; i ++ ) {
while ( rmw == rmr )
uartjob ( ) ;
txput1 ( rmbuf [ rmr ++ ] ) ;
}
txputcrc ( false ) ;

txfinish ( true , true ) ;
}




【このカテゴリーの最新記事】
この記事へのコメント
コメントを書く

お名前: 必須項目

メールアドレス: 必須項目


ホームページアドレス: 必須項目

コメント: 必須項目

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/7091036
※ブログオーナーが承認したトラックバックのみ表示されます。

※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック
×

この広告は30日以上新しい記事の更新がないブログに表示されております。

Build a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: