Как оказалось, с завода at90usb162 идут с включенным фьюзом CLKdiv8. А это значит, что с кварцем 16МГц, ядро будет работать с частотой 2МГц, что влияет, например, на скорость счетчика, а это, в свою очередь, ограничивает максимальную частоту ШИМ.
Но это еще не все сюрпризы. Изменить этот фьюз нельзя, пока не очистишь чип. Очистишь чип — сотрется бутлоер и лок фьюзы. Если лок фьюзы не поставишь — бутлодер себя затрет.
Итого был выработан такой порядок прошивки:
- Берем плату с новым at90usb162 и зашиваем в него прошивку AVRISP MKII под 2МГц через Atmel FLIP.
- Первой платой подключаемся ко второй плате. Я использовал оболочку для AVRDude SinaProg 2.1.1 и сгенерировал драйвер с помощью libusb.
- Очищаем чип Fuses -> Advanced -> Chip Erase
- Дальше нужный нам Low Fuse меняем c 5E на DE, чтобы ядро заработало на всех 16Мгц
- Выбираем файл прошивки с родным загрузчиком at90usb162 DFU at90usb162-bl-usb-1_0_5
- После того, как загрузчик запишется, нужно вернуть Lock Bits, чтобы загрузчик не затерся. После очистки чипа мы получили 3F, а нужно установить 2C
- Теперь уже можно запускать вторую плату в режиме DFU, прошивать в не AVRISP MKII на 16МГц и первой платой повторить все действия со второй.
Сложные вещи оказываются не такими трудными, если ими заинтересоваться. Пока я ничего не понял 😛