Все получилось, но пришлось применять последнюю версию прошивальщика. Я сделал форк, чтобы были заметны изменения:
github.com/unitay/nrf24le1-usbasp
Инструкция по сборке для windows:
1. Скачать и установить MinGW отсюда:
sourceforge.net/projects/mingw/files/
Ставить надо пакеты: mingw32-base и msys-base
2. Добавить в системную переменную Path (Панель управления - Система - Дополнительные параметры - Дополнительно - Переменные среды) пути: c:\MinGW\bin\;c:\MinGW\msys\1.0\bin\
3. Скачать портированную libusb
бинарники:
sourceforge.net/projects/libusb-win32/fi...1.2.6.0.zip/download
и исходники:
sourceforge.net/projects/libusb-win32/fi...1.2.6.0.zip/download
4. Из архива бинарников скопировать:
- libusb.a из директории \libusb-win32-bin-1.2.6.0\lib\gcc\ в \MinGW\lib\
- lusb0_usb.h из директории libusb-win32-bin-1.2.6.0\include\ в \MinGW\include\
5. Из архива исходников:
- переименовать usbi.h в usb.h и скопировать в \MinGW\include\
- error.h скопировать в \MinGW\include\
6. Скачать исходники прошивальщика c github
7. Изменить файлы исходников:
в директории c:\MinGW\include\ в файле stdint.h комментируем строку
//typedef unsigned uint32_t;
8. Открыть командную строку (Выполнить - cmd), выполнить команды:
cd c:\nrf24le1-usbasp-master\
make clean
make -f Makefile.windows
9. Переименовать файл libusb0_x86.dll в libusb0.dll директория \libusb-win32-bin-1.2.6.0\bin\x86\ и положить его в папку с исходниками рядом с nrf24le1.exe
10. Собранный nrf24le1.exe можно применять.
Теперь о том как сбросить флаг RDISMB. Похоже это опасная операция, так что всякое бывает. Если с первого раза какая-то команда не выполнится, ее надо повторить.
1. Команда ERASE ALL очищает содержание InfoPage (даташит стр.74, 78), поэтому сначала необходимо снять дамп командой "nrf24le1.exe read infopage". Корректность чтения проверяем по содержимому файла IP-dump.bin, в нем не должны быть все 00. Для пустой страницы это будут FF. Для правильной первые 32 будут с каким-то содержимым, потом три байта FF, а потом 00 - флаг RDISMB (даташит стр.72)
2. Затем удаляем все данные командой "nrf24le1.exe erase".
3. Содержимое InfoPage сейчас должно быть заполнено FF, его надо восстановить из дампа. Для этого переименовать его в IP.bin, в hex-редакторе исправить 36 байт дампа с 00 на FF, чтобы флаг RDISMB не вернулся.
4. Заливаем дамп страницы обратно командой "nrf24le1.exe write infopage".
5. Теперь можно выполнить проверки: команда "nrf24le1.exe test", RDISMB должен быть всегда 0; команда "nrf24le1.exe read infopage", содержимое свежего дампа должно совпадать с предыдущим.
После этого все должно отлично шиться командой "nrf24le1.exe write firmware".
P.S. Буду благодарен если кто-нибудь пришлет дамп InfoPage, хочу сравнить со своим ради интереса