昨夜、TVを見ているときに、物置の様な私の机から「パン」と何かが破裂した様な結構大きな音がしました。通電中の基板はありませんしパソコンも電源オフで、そんな爆発音がするような物は見当たりません。しばらく机の上の物を色々調べて見ましたが怪しそうなものはなさそうです。
結局分からずじまいです。今日(8月30日、PM5頃)、デジボルの電池がなくなりLCDに何もでなくなりましたので電池を交換しました。LR1130 x 4です。中を開いて見ますと4個の内1個がやけに厚ぼったく見えます。はずして見ると内部のガス圧でマイナス電極が持ち上がり穴が開いています。夕べの破裂音はこの電池が爆発した事によるものと判明しました。
こんな小さな電池ですが危ないですね。
こんな経験初めてです。電池の容量が小さいから火災にはなりませんが、もっと大きな容量の電池だと燃える可能性があります。そんな事故、リチウム電池の事故は新聞にも出たことが過去にありました。まさか?アルカリ電池が破裂するなんて。
私たちの身の回りにはカメラ、携帯、其の他色々な電子機器で電池が使われています。
注意しましょう!
怪しげなプログラムを作りました。
PB1にスイッチが繋がっています。これがLowになるとパルスが発生します。ここは1.024ms Low,
220ms Highのパルス出ています。SPからはプツ プツと定期的な音が出ています。
SPにマイクを近ずけて振動を拾います。PD3にlow パルスが出るとPD0に繋がった緑のLEDを点灯します。PD2にlowが出るとPD1に繋がった赤のLEDを点灯します。
とりあえずLow パルスは出ていてPD2,3に入力されています。LEDは点灯しません。
1msのパルスが出ている間にPD2,3に検出信号が入りますが、while以下の処理がタイミング的に間に合わない?じゃーないかなと、そんな気がしてます。
/*** Speaker Polarity Checker ***/
//ATtiny2313、 CPU CLK = 8MHz
//Fuse Low = E4, High = DF,Ex = FF
#include <avr/io.h>
#include <avr/interrupt.h>
#define F_CPU 8000000UL
#include <util/delay.h>
volatile unsigned int SW = 0;
ISR(TIMER1_COMPA_vect)
{
if (bit_is_clear (PINB,PB1)){//PB1=0 start pulse generation
if(SW==0) {
OCR1A = 31; //Set timer1 1ms (1.024ms)
SW = 1;
PORTB &= ~_BV(PB0);
} else {
OCR1A = 6874; //6875 counts (Set timer1 220ms)
SW = 0;
PORTB |= _BV(PB0);
}
}
}
int main()
{
OCR1A = 0;
TCCR1A = 0x00;
TCCR1B = 0x0C; //CTC Mode, 1/256
TIMSK = 0x40; //Set OCIE1A
DDRB =(0< PORTB = (1< DDRD = (0< PORTD = (1<
cli();
sei();
while(1); { <--------whileの後の;は不要
if (bit_is_clear (PIND,PD3)){
PORTD |= _BV(PD1);
PORTD &= ~_BV(PD0); // Green On
_delay_ms(100);
PORTD |= _BV(PD0);}
//else{
if (bit_is_clear (PIND,PD2)){
PORTD |= _BV(PD0);
PORTD &= ~_BV(PD1); // Red On
_delay_ms(100);
PORTD |= _BV(PD1);}
}
return 0;
}
2014/8/30(Sat)
ジャングル配線です、何とか動作するようになりました。
何故か古いマルチトラックレコーダー(VF80)を¥3.5Kで買いこんでしまいました。ちょっと、この手の録音機の使い方を含めた中味が知りたくなり、プチッとボタンを押してしまったのです。
ジャンクですので動かなくても仕方のない、ゴミになるかも知れない代物です。HDDに録音データが書き込まれます。知り合いに頼み、不具合のある部品は何とか手にいれました。
フェーダーが1個NG、音が片ch出ません。基板を見ると何となくいじった感じが見えます。半田付けもあまり綺麗ではありません。
もう一度駄目もとで再ハンダをしました。これで何とか音が出るようになり、録音も良さそうです。ラッキーです。
40GのHDDのフォーマットをやることにしました。すべてご破算にした方がベターだと思います。
下記のプログラムはPB1がLowの時に1ms(low)、220ms(high)のパルスを連続して出すのが目的です。割り込みを許可していますので、当然割り込みが生じると其の処理へジャンプします。
割り込みは _delay_ms(1);の間に起きます。割り込みを処理するとこの1msのdelayは変わってしまいます。同時に平行して2つのことを処理は出来ませんので、当然の結果です。
while(1) {
sei();
if (bit_is_clear (PINB,PB1)){
PORTB &= ~_BV(PB0);
_delay_ms(1);
PORTB |= _BV(PB0);
_delay_ms(220);
}
else {
cli();
PORTB |= _BV(PB0);
}
}
return 0;