Перейти к содержанию

IIIytNIK

Members
  • Постов

    1 641
  • Зарегистрирован

  • Посещение

  • Победитель дней

    4

Сообщения, опубликованные IIIytNIK

  1. :wall: :wall: :wall:

    Вот я дурак, бляха муха.

    А фьюзы-то проверить не додумался, думал ардуиновкое поделие автоматически выключает загрузчик при записи программы через spi, это же очевидно.

    Короче, Ulia, сделайте уже так:

    1) Залейте свою программу в мегу2560 через usbasp

    2) В программе AVR-Burn-O-mat снимите галочки с фьюзов отвечающие за загрузчик:

    post-53612-0-71206900-1444750099_thumb.png

    Вот тут по-русски непонятно. Если USBAsp не может корректно работать с областью программ выше 64К, то как он зальет загрузчик в Мегу 2560, если ближайшая граница этой области лежит за 130К?

    Сейчас проверил с двумя программаторами USBAsp. У меня есть две штуки, один 2010 года, другой 2012.

    Тот который 2012 нормально шьет и загрузчик и саму программу, т.е они после этого без проблем работают.

    Тот который 2010 шьет загрузчик, он работает, но залитая программа не работает, даже самая простая мигалка светодиодом.

    Все-таки проблема скорее всего была, но она актуальная для старых версий такого программатора.

    UPD: А вот прошивка от 3д принтера с размером программы больше 100К уже не работает.

    Не работает и при прошивке программатором на основе FT2232D, работающей в режиме bitbang.

  2. Короче, я разобрался в чем причина всех ваших бед :yes:

    Я попробовал сделать так:

    Взял новую мегу2560, и через avrdude залил в нее загрузчик при помощи USBAsp через ISP разъем. Загрузчик залился, но при верификации выдал ошибку avrdude: verification error, first mismatch at byte 0x1e000 0xff != 0x0d.

    Это нормально. Попробовал залить скетч через UART - скетч заливается и работает.

    Теперь, заливаем этот же скетч через ISP разъем при помощи USBAsp. Скетч заливается, при верификации выдает ошибку и после этого НЕ РАБОТАЕТ. После этого заливка через UART тоже недоступна, потому что загрузчик затерся.

    Как ни странно, это тоже НОРМАЛЬНО.

    Почему возникает ошибка при записи загрузчика? Почему скетч залитый через ISP не работает? А все дело в том, что:

    The USBasp programmers are using an older protocol that does not properly support more than 64K flash. You need a programmer that is using the stk500v2 protocol, like the AVRISPmkII

    The USBasp programmer will sort of work for burning bootloader, it will not verify correctly. It will not work for uploading sketches.

    По русски: Программатор USBasp использует старый протокол, который некорректно работает с микроконтроллерами у которых flash-память больше 64К. Вам необходимо использовать программатор который использует протокол stk500v2, типа AVRISPmkII.

    Программатор USBasp подходит для того, чтобы записать загрузчик, но проверка записи будет произведена неверно. Скетчи залитые через этот программатор работать не будут.

    В общем в вашем случае прошить мегу2560 получится только таким образом:

    1)Заливаем в мегу2560 загрузчик через usbasp. После загрузки он выдаст ошибки при верификации, не обращаем на них внимание.

    2)Покупаем, находим, воруем где-нибудь переходник USB-UART.

    3)Подцепляем переходник к портам TX0 RX0 меги2560, в программе arduino выбираем нужный последовательный порт и заливаем скетч обычным способом (Файл-Загрузить). Если у переходника нет вывода для сигнала DTR, то сразу после компиляции нужно будет на короткое время подтянуть вывод Reset микроконтроллера к земле. Проще всего это сделать при помощи кнопки.

    Вместо переходника USB-UART можно взять Arduino Uno и вытащить из него контроллер. Также подойдет любой другой Arduino, у которого на плате два контроллера (либо микросхема, отвечающая за интерфейс USB-UART).

    Еще можно попробовать сделать USB-UART переходник из Arduino Leonardo, как это описано здесь https://petervanhoyw...al-converter/ . Проверить работоспособность не могу, так как под руками леонардо сейчас нет.

    Больше никаких вариантов в вашем случае нет (кроме покупки программатора AVRISPmkII или самостоятельной сборки его аналога)

    Актуально для старых версий usbasp

  3. Да, и перезапустить программу.

    Короче говоря:

    В коде должно быть так

    #define Anod1 21
    #define Anod2 20
    #define Anod3 19
    #define Anod4 18
    #define Katod1 37
    #define Katod2 36
    #define Katod3 35
    #define Katod4 34
    #define Katod5 33
    #define Katod6 32
    #define Katod7 31

    Таймеры/счетчики у меги2560 и меги328р одинаковые, поэтому там вроде всё ровно.

    В протеусе все работает, нолики выводятся

    post-53612-0-85096600-1444658430_thumb.png

    Живая мега на связь выходит:

    post-53612-0-78400000-1444658507_thumb.png

  4. Да нет, там просто так перекомпилировать не получится.

    Во-первых, нужно задать соответствующие номера ног для семисегментного дисплея. Это меньшая из проблем.

    Во-вторых, проверить соответствие ног аппаратного spi для модуля W5100. Здесь могут быть проблемы. Хотя нет, судя по схеме, все нормально.

    В-третьих, проверить конфигурацию регистров таймера/счетчика Т2. Имена регистров совпадают, но биты конфигурации могут отличаться.

    По первому пункту уже вижу несоответствие кода схеме:

    У вас написано в коде:

    #define Anod1 3
    #define Anod2 4
    #define Anod3 A2
    #define Anod4 2
    #define Katod1 A3
    #define Katod2 5
    #define Katod3 6
    #define Katod4 7
    #define Katod5 9
    #define Katod6 A5
    #define Katod7 8

    Соответсвенно физическим портам и выводам контроллера это будет так:

    #define Anod1 PE5 7
    #define Anod2 PG5 1
    #define Anod3 PF2 95
    #define Anod4 PE4 6
    #define Katod1 PF4 94
    #define Katod2 PE3 5
    #define Katod3 PH3 15
    #define Katod4 PH4 16
    #define Katod5 PH6 18
    #define Katod6 PF5 92
    #define Katod7 PH5 17

    Естественно работать ничего не будет.

    Поэтому воспользуйтесь этой полезной табличкой, и переназначьте адреса ног в коде в соответствии со схемой:

    post-53612-0-40431700-1444654372_thumb.png

  5. Да, только так, либо в выпадающем меню выбрать find references (shift + alt + f). Тогда внизу отобразятся все строки во всех файлах проекта, где используется данная переменная.

  6. Кто на ком стоял?(С)

    По первому пункту ничего не понял, что значит не срабатывает на нажатие? Каким образом проверяется условие "срабатывания на нажатие"? Регистр DDRD как сконфигурирован?

    По второму пункту тоже, что значит не работает? Регистр DDRB как сконфигурирован?

    Потрудитесь излагать ваши мысли яснее.(С)

  7. Так, еще раз:

    1)Подключите USBasp к своей mega2560

    2)Запустите программу Arduino

    3)В меню сервис выберите плату "arduino mega 2560 or mega ADK"

    4)В меню сервис выберите программатор USBasp

    5)В меню сервис выберите пункт Записать загрузчик"

    После этого запишется загрузчик, фьюзы выставятся сами как надо.

    P.S На всякий случай фьюзы с atmega2560 с прошитым и работающим загрузчиком от arduino:

    post-53612-0-80875100-1444492121_thumb.pngpost-53612-0-30372200-1444492122_thumb.png

  8. khazama это GUI для avrdude, коих великое множество. В дудке фьюзы задаются в шестнадцатеричном виде, типа -U hfuse:w:0xd9:m -U lfuse:w:0xe4:m. Одно неверное движение, и контроллер больше не доступен для последовательного программирования. Необязательно это будет фьюз SPIEN, достаточно RSTDISBL.

  9. При таком подключении амперметра аккумулятор может бабахнуть со шрапнелью.

    Да и тут вообще оба компонента полная дичь - поддельный китайский аккумулятор и непонятный зарядник. Оставлять такие вещи без присмотра на весь день и всю ночь чревато неприятными последствиями.

  10. Аналог дешифратора к155ид1 - 74141, в протеусе его модель присутствует.

    На крайний случай, можно просто на схеме разместить ds'ку и контроллер, и проверить активность на портах.

    А еще лучше код сюда выложить.

×
×
  • Создать...