Я сделал простую плату с микроконтроллером ATMega8U2 для экспериментов с USB (хочу сделать MIDI, HID, ... устройства). Я черпал вдохновение в Arduino Uno. Если вы посмотрите на схему ниже, вы увидите, что она почти такая же, как Uno.
Я запрограммировал 8U2 прошивкой из проекта Arduino — UNO-dfu_and_usbserial_combined.hex . Теперь, если я подключаю плату к USB, я получаю последовательный порт, и он работает так же, как Arduino, так что это совершенно нормально.
Моя проблема: как мне перевести 8U2 в режим DFU, чтобы я мог менять прошивку без внешнего программатора? Если вы посмотрите на картинку, я подключил HWB (контакт PD7) к земле, так что это должно быть просто — просто нажмите кнопку сброса. К сожалению, это не работает.
Я что-то пропустил? Может быть проблема в неправильных прикусах предохранителей?
Редактировать: Мои предохранители: lfuse=0xff hfuse=0xd9 efuse=0xf4
Редактировать2:
проверил предохранители на чипе
$ avrdude -p at90usb82 -P /dev/tty.usbmodem411 \
> -F -c arduino \
> -U lfuse:r:low:h \
> -U hfuse:r:high:h
$ cat high low
0x00
0x00
Для программирования я использую Arduino Uno в качестве интернет-провайдера и эту команду (на Mac):
$ avrdude -p at90usb82 -F -P /dev/tty.usbmodem411 \
> -c arduino \
> -U flash:w:UNO-dfu_and_usbserial_combined.hex \
> -U lfuse:w:0xFF:m \
> -U hfuse:w:0xD9:m \
> -U efuse:w:0xF4:m \
> -U lock:w:0x0F:m
.......
avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
0xff != 0x00
avrdude: verification error; content mismatch
Так что я полагаю, avrdude не запрограммировал фьюзы, и они все еще пустые. Является ли это возможным? Потому что плата работает корректно, за исключением режима DFU после сброса.
Установлен ли бит HWBE (HardWare Boot Enable) в ваших фьюзах?
васко
васко
hfuse
не ставился.Амер Саван