MINO-o'-2016 3. テストFW
こっちもテストから行きます。
LEDテスト。
キーボードの時と同じなのでコードは略。
今回は引っかかりました。昨日書いたDACの罠にかかってMCUへの書き込みが出来なかったのです。DACへの線と書き込みの線が共有だからですね。180度回して付け直したらOK。LEDもちゃんとつきました。
スイッチテスト。
今回は使用しないですが、念のため。
#include<avr/io.h> int main(){ uint8_t x; DDRB = 0x06; // PB1, PB2=OUT x=PINB; if( x & _BV(4)) { PORTB = 0x04; // PB1=L, PB2=H } else { PORTB = 0x02; // PB1=H, PB2=L } while(1); }
問題なくOK。
#include<avr/io.h> #include<avr/interrupt.h> #include<avr/sleep.h> #include<avr/cpufunc.h> #include<stdint.h> EMPTY_INTERRUPT( TIMER0_OVF_vect ); int main(){ uint8_t ctr = 0; uint8_t fast = 0; DDRB = 0x29; // PB[0,3,5]=OUT PORTB = 0x10; // PB0=LRCK=LO, PB4 PUP if( PINB & 0x10 ) fast = 1; SPSR = 0x01; SPCR = 0x70; set_sleep_mode( SLEEP_MODE_IDLE ); sleep_enable(); // 20MHz/8/256/4/8=305Hz TCCR0A = 0x00; TCNT0 = 0x00; TIMSK0 = 0x01; // OVF TCCR0B = 0x02; sei(); if( fast ) { while(1){ register uint8_t lo8 = 0x00; register uint8_t hi8 = ((ctr&0x10)?0x01:0x00); sleep_cpu(); asm volatile("out %[spdr],%[hi8]\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "out %[spdr], %[lo8]\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" ::[spdr] "I" (_SFR_IO_ADDR(SPDR)), [hi8] "r"(hi8),[lo8] "r"(lo8)); PINB = 0x01; ++ctr; ctr &= 31; } } else { while(1){ register uint8_t lo8 = 0x00; register uint8_t hi8 = ((ctr&0x10)?0x01:0x00); sleep_cpu(); asm volatile("out %[spdr],%[hi8]\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "out %[spdr], %[lo8]\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t" ::[spdr] "I" (_SFR_IO_ADDR(SPDR)), [hi8] "r"(hi8),[lo8] "r"(lo8)); PINB = 0x01; ++ctr; ctr &= 31; } } }
SPIの送信タイミングの確認を兼ねてます。
で、右しか聞こえない問題発覚。半田付けミスでした。
つけ直したらOK。両方から聞こえます。
ちょっと波形がアレですが気にしないことにします。