詳細はまだ不明。
?@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 ) ;
}
【このカテゴリーの最新記事】
- no image
- no image
- no image
- no image
- no image