アフィリエイト広告を利用しています
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日以上新しい記事の更新がないブログに表示されております。