Прошивка Iskra Mini через Arduino Uno

Тема в разделе "Arduino & Shields", создана пользователем artman9k, 11 фев 2016.

  1. artman9k

    artman9k Нуб

    Пытаюсь прошить Iskra Mini через Arduino Uno согласно инструкции http://wiki.amperka.ru/продукты:iskra-mini

    Но инструкция, судя по всему, написана для платы аналогичной Leonardo и поэтому на Uno скетч не компилится, т.к. на Uno нет Serial1 - только Serial.

    Как быть?
     
  2. artman9k

    artman9k Нуб

    А также, раз уж начал спрашивать, еще вопрос: как передавать данные с Arduino Uno на Iskra Mini в ходе работы?
    То есть, грубо говоря, мне нужно, чтобы Uno постоянно передавал значение нескольких переменных (Int) на Искру.
     
  3. AlexU

    AlexU Гуру

    https://www.arduino.cc/en/Tutorial/ArduinoISP
    На картинках в качестве прошиваемого нарисована Arduino UNO, но способ подключения Искры такой же. Т.е. так же используются выводы 11, 12, 13, RST, +5V и GND.
    Например, через USART интерфейс (Serial), SPI или TWI.
     
  4. artman9k

    artman9k Нуб

    Так я тоже пробовал.
    Пишет

    avrdude: Yikes! Invalid device signature.
    Double check connections and try again, or use -F to override
    this check.

     
  5. artman9k

    artman9k Нуб

    Возможно это как-то связано со скоростью передачи.

    У меня стоит в boards.txt

    ## Arduino Mini w/ ATmega328
    ## -------------------------
    mini.menu.cpu.atmega328=ATmega328

    mini.menu.cpu.atmega328.upload.maximum_size=28672
    mini.menu.cpu.atmega328.upload.maximum_data_size=2048
    mini.menu.cpu.atmega328.upload.speed=115200


    В programmers.txt

    arduinoasisp.name=Arduino as ISP
    arduinoasisp.communication=serial
    arduinoasisp.protocol=stk500v1
    arduinoasisp.speed=115200
    arduinoasisp.program.protocol=stk500v1
    arduinoasisp.program.speed=115200
    arduinoasisp.program.tool=avrdude
    arduinoasisp.program.extra_params=-P{serial.port} -b{program.speed}


    Выбрана плата Arduino Mini, процессор 328

    В скетче программатора вот так:

    #define BAUDRATE 115200
     
  6. AlexU

    AlexU Гуру

    В Arduino IDE галочку "прошивать через программатор" поставили? (или как она там называется?)
    Avrdude должен вывести сигнатуру, что за сигнатуру выводит?
     
  7. artman9k

    artman9k Нуб

    Да, поставил (вернее выбрал Скетч->Загрузка через программатор и выбрал Инструменты->Программатор->Arduino as ISP )

    Кроме того, что я прислал больше ничего загрузчик не пишет (
     
  8. AlexU

    AlexU Гуру

    В настройках Arduino IDE есть галочки "показать подробный вывод при компиляции, при загрузке". Может они помогут узнать больше о причинах ошибки.
     
  9. artman9k

    artman9k Нуб

    Да, стало больше информации:

    avrdude: Version 6.0.1, compiled on Apr 14 2015 at 16:30:25
    Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
    Copyright (c) 2007-2009 Joerg Wunsch

    System wide configuration file is "/Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf"
    User configuration file is "/Users/art/.avrduderc"
    User configuration file does not exist or is not a regular file, skipping

    Using Port : /dev/cu.usbmodem1411
    Using Programmer : stk500v1
    Overriding Baud Rate : 115200
    AVR Part : ATmega328P
    Chip Erase delay : 9000 us
    PAGEL : PD7
    BS2 : PC2
    RESET disposition : dedicated
    RETRY pulse : SCK
    serial program mode : yes
    parallel program mode : yes
    Timeout : 200
    StabDelay : 100
    CmdexeDelay : 25
    SyncLoops : 32
    ByteDelay : 0
    PollIndex : 3
    PollValue : 0x53
    Memory Detail :

    Block Poll Page Polled
    Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
    ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
    eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
    flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
    lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
    hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
    efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
    lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
    calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
    signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00

    Programmer Type : STK500
    Description : Atmel STK500 Version 1.x firmware
    Hardware Version: 3
    Firmware Version: 4.4
    Vtarget : 0.3 V
    Varef : 0.3 V
    Oscillator : 28.800 kHz
    SCK period : 3.3 us

    avrdude: AVR device initialized and ready to accept instructions

    Reading | ################################################## | 100% 0.01s

    avrdude: Device signature = 0x000000 (retrying)

    Reading | ################################################## | 100% 0.01s

    avrdude: Device signature = 0x000000 (retrying)

    Reading | ################################################## | 100% 0.01s

    avrdude: Device signature = 0x000000
    avrdude: Yikes! Invalid device signature.
    Double check connections and try again, or use -F to override
    this check.
     
  10. AlexU

    AlexU Гуру

    Первое:
    Вы уверенны, что в Arduino UNO последовательный порт инициализируется со скоростью 115200. То что скетч программатора содержит запись '#define BAUDRATE 115200' может ни о чём не говорить. Да и сам скетч откуда был взят? В комплекте Arduino IDE (1.6.5 и 1.7.8) порт инициализируется со скоростью 19200 без всяких define'ов.
    Второе:
    порт выбран правильно?
     
  11. AlexU

    AlexU Гуру

    Если Вы в скетче уверены, то третья причина:
    неправильно подключили Искру к UNO или плохой контакт.
     
  12. artman9k

    artman9k Нуб

    Меня сбило то, что в конфиге для мини такие настройки по умолчанию:

    ## Arduino Mini w/ ATmega328
    ## -------------------------
    mini.menu.cpu.atmega328=ATmega328

    mini.menu.cpu.atmega328.upload.maximum_size=28672
    mini.menu.cpu.atmega328.upload.maximum_data_size=2048
    mini.menu.cpu.atmega328.upload.speed=115200

    И то что тут http://wiki.amperka.ru/продукты:iskra-mini пишут выставить 115200

    Поменял назад на 19200 - все равно та же самая ошибка (
     
  13. AlexU

    AlexU Гуру

    Давайте начнём заново.
    Расскажите как подключили Искру к UNO. Только не говорите "как на схеме", а расскажите какой вывод UNO к какому выводу Искры.
     
  14. artman9k

    artman9k Нуб

    ISKRA -> UNO

    5V -> 5V
    GND -> GND
    RST->10
    11->11
    12->12
    13->13
     
  15. artman9k

    artman9k Нуб

    Полная последовательность действий такая

    0. Установка Arduino (mac os)


    1. Соединение плат

    ISKRA -> UNO

    5V -> 5V
    GND -> GND
    RST->10
    11->11
    12->12
    13->13

    2. Загрузка скетча из примера

    Прошивка UNO

    3. Новый скетч

    Настройки:

    Плата: Arduino Mini
    Процессор: ATmega328
    Программатор: Arduino as ISP

    Скетч -> Загрузить через программатор

    И тут ошибка..
     
  16. AlexU

    AlexU Гуру

    Посмотрел на скетч ArduinoISP из комплекта для MacOS. Вроде как в качестве пина управления сбросом используется 4 пин (в случае с UNO).
    Попробуйте соединить:
    ISKRA -> UNO
    RST->4
     
  17. artman9k

    artman9k Нуб

    Там на самом деле вот так:

    // The standard pin configuration.
    #ifndef ARDUINO_HOODLOADER2

    #define RESET 10 // Use pin 10 to reset the target rather than SS
    #define LED_HB 9
    #define LED_ERR 8
    #define LED_PMODE 7

    // Uncomment following line to use the old Uno style wiring
    // (using pin 11, 12 and 13 instead of the SPI header) on Leonardo, Due...

    // #define USE_OLD_STYLE_WIRING

    #ifdef USE_OLD_STYLE_WIRING

    #define PIN_MOSI 11
    #define PIN_MISO 12
    #define PIN_SCK 13

    #endif

    // HOODLOADER2 means running sketches on the atmega16u2
    // serial converter chips on Uno or Mega boards.
    // We must use pins that are broken out:
    #else

    #define RESET 4
    #define LED_HB 7
    #define LED_ERR 6
    #define LED_PMODE 5

    #endif

    // By default, use hardware SPI pins:
    #ifndef PIN_MOSI
    #define PIN_MOSI MOSI
    #endif

    #ifndef PIN_MISO
    #define PIN_MISO MISO
    #endif

    #ifndef PIN_SCK
    #define PIN_SCK SCK
    #endif


    Может тогда и остальные на 7-6-5 перебросить?
     
  18. artman9k

    artman9k Нуб

    Если просто RST на 4 перекинуть - не работает все равно
     
  19. artman9k

    artman9k Нуб

    А изменить как-то этот скетч http://wiki.amperka.ru/продукты:iskra-mini чтобы только один Serial использовался и заработало на Uno не получится?
     
  20. AlexU

    AlexU Гуру

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