Пару месяцев назад собрал AVR программатор на ft232rl по схеме http://we.easyelectronics.ru/AVR/usb-programmator-dlya-mikrokontrollerov-avr-... В Windows на старой версии avrdude из статьи все работало, но мне очень хочется чтобы тоже самое работало и на Linux/MacOS. Для этого я решил для начала написать простую программу на libftdi 1.1, которая включала бы микросхему и пыталась послать команду Program Enable на ATmega8A https://gist.github.com/goganchic/b88c85b0ea652e66a320.
Какие проблемы наблюдаются:
- перед отправкой команд я полностью очищаю буфер микросхемы. Потом в режиме SYNCBB я записываю и считываю одно и то же количество байт, но при этом чаще всего после выполнения всех команд остается 1 байт в буфере на чтение. Может быть я неправильно понимаю принцип работы синхронного bitbang режима у микросхем ft232rl?
- ATmega8A неверно отвечает на команду Programming Enable, то есть такое ощущение что я то ли неправильно записываю эту команду, то ли неправильно вычитываю.
Железный сетап 100% безпроблемный, сужу об этом по следующим фактам:
- если воткнуть этот же программатор в windows машину - то avr-ка прошивается как положено
- на linux и mac os включал последовательно каждый вывод и проверял тестером
- при записи 1 на выход (MOSI, SCK, RESET) - напряжение 5в, при записи 0 - напряжение 0в
- при записи 0 в буфер - все выходы активны, при записи 1 в буфер - все выходы отключены
- при подключении 0 к MISO - считывается 0, при подключении 5В - считывается 1
Подскажите пожалуйста в чем может быть баг? Такое ощущение что я делаю не так что-то очевидное, но из-за отсутствия опыта - дико туплю.
Заранее спасибо за ответы!