私と私の友人の何人かは時間がかかりましたが、何時間もの検索、試行、および「デバッグ」の後、問題を修正することができました. これが、同じ問題を抱えている他の人が解決するのに役立つことを願っています。
問題は、ISP (私の場合は USB-Prog 3.3) が、1MHz の速度でしか動作していない Atmega8 との通信速度が速すぎることでした。したがって、2 つの解決策が考えられます。
- ISP の速度を遅くする
- Atmega8のスピードアップ
私は、ISP が下層のマイクロコントローラーの速度の 1/4 よりも高速であってはならないことをどこかで赤字にしました。
次の行は私の日を救った:
Atmega8 を 8MHz に設定し、その周波数をスピンアップするために 64ms を与えます。
avrdude -p atmega8 -P usb -c avrispv2 -U lfuse:w:0xe4:m -U hfuse:w:0xd9:m -B 22
avrdude マンページの抜粋を次に示します。
`-B BITCLOCK'
Specify the bit clock period for the JTAG interface or the ISP
clock (JTAG ICE only). The value is a floating-point number in
microseconds. The default value of the JTAG ICE results in about
1 microsecond bit clock period, suitable for target MCUs running
at 4 MHz clock and above. Unlike certain parameters in the
STK500, the JTAG ICE resets all its parameters to default values
when the programming software signs off from the ICE, so for MCUs
running at lower clock speeds, this parameter must be specified on
the command-line.
さらに、Android 用のAVR Fuse Calculatorをお勧めしたいと思います。これは、マイクロコントローラー プログラマーにとって非常に便利なツールのようです。