!RakuChordバグ取り
!!雑音がのる件[ソフトウェア]
てっきりトランジスタの扱いを間違えてなんか変なノイズが乗っているものとばかり思っていた
が、該当する配線をカットしても同じようにノイズが乗ったことから更に調査すると、トランジスタ操作のための操作によりタイマ割り込みが定期的に遅延していたことが原因だったぽい。

ソフトウェアを書きなおしたらノイズはなくなった

!!時々AVRが暴走した件[ハードウェア]
AVRの動作が不審になり、なぜかシフトレジスタが順番にONになっていくという症状
これは以前も経験したことがあった(忘れてた)

電池切れですw

電池の残量をはかると4本あるのに3本分くらいしかなかった…
しかし減り方が妙なのが気になった 4本中1本だけがほぼ空っぽになっていた。ほかはわずかに減っているだけ… これは一体?

様子見です。

!!LEDが上手く制御できない件[ハードウェア]
ラッチの配線をサボってたので、ラッチを使うようにすると驚くほど綺麗に!
サボるのは良くないねw

!電子工作のバグとりについて
ソフトウェア起因かハードウェア起因かによって直し方も確認方法も違うので切り分けがなかなかつらい所… 経験値が足りない感じです…

!メモ
>>
const unsigned int timerLoadValue = 254;
<<

>>
  TCCR1A = _BV(COM2A1) | _BV(COM2B1)| _BV(WGM20);
  TCCR1B = _BV(CS22) | _BV(WGM12) | _BV(WGM13);
  OCR1A = 180; // for debug
  //OCR1B = 50;
  
  TCCR1B = TCCR1B & 0b11100000 | 0b00001; // pwm: 31250Hz
  
  TCCR2A = 0; // Normal Timer
  TCCR2B = 1<<CS22 | 0<<CS21 | 1<<CS20; // clk/128 prescale
  TIMSK2 = 1<<TOIE2; // Timer/Counter2 Overflow Interrupt Enable
  TCNT2 = timerLoadValue;
<<

>>
ISR(TIMER2_OVF_vect) {    // Timer/Counter2 Overflow
  TCNT2 = timerLoadValue; // Reset the timer
  dn[0] = dn[0] + d[0] + bend;
  dn[1] = dn[1] + d[1] + bend;
  dn[2] = dn[2] + d[2] + bend;
  dn[3] = dn[3] + d[3] + bend;
  dn[4] = dn[4] + d[4] + bend;
    
  //chord composite
  level = ((dn[0]&(1<<14))?vol[0]:0) +
          ((dn[1]&(1<<14))?vol[1]:0) +
          ((dn[2]&(1<<14))?vol[2]:0) +
          ((dn[3]&(1<<14))?vol[3]:0) +
          ((dn[4]&(1<<14))?vol[4]:0);
  OCR1A = level;
}
<<
5643382
wiki
1347923569