NYAN!

Тема в разделе "Arduino & Shields", создана пользователем Борис, 24 дек 2016.

  1. Борис

    Борис Нуб

    Попытался запустить NyanCat.ino на Iskra Neo
    Получил сообщение :
    Sketch uses 9 364 bytes (32%) of program storage space. Maximum is 28 672 bytes.
    Global variables use 2 017 bytes (78%) of dynamic memory, leaving 543 bytes for local variables. Maximum is 2 560 bytes.
    Low memory available, stability problems may occur.

    Вместо искры поставил мегу, все заработало :)
    В чем подвох ?
    У меня установлен IDE 1.7.7
     
  2. rkit

    rkit Гуру

    Написано же всё.
     
  3. Борис

    Борис Нуб

    да. действительно. все написано. но вчера не работало, а сейчас заработало. спасибо
     
  4. ZAZ-965

    ZAZ-965 Гуру

    @Борис, попробуйте разместить массивы во flash памяти, используя модификатор переменной const PROGMEM
    Код (C++):
    //подключаем библиотеку
    #include <avr/pgmspace.h>

    //размещаем ноты в памяти
    const PROGMEM int melody[] =

    const PROGMEM int noteDurations[] =
     
    Semiliranda нравится это.
  5. Борис

    Борис Нуб

     
  6. Борис

    Борис Нуб

    ZAZ-965 спасибо. помогло.
    Меня смутило сообщение: Low memory available, stability problems may occur.
    Теперь его нет.
    Вероятно на него не надо было обращать внимание :)
     
  7. mcureenab

    mcureenab Гуру

    Видимо под стек мало памяти осталось. А поскольку потребный размер стека компилятор не определяет, вот такое предупреждение получается.
     
  8. ZAZ-965

    ZAZ-965 Гуру

    На все сообщения компилятора нужно обращать внимание. У меня на IDE 1.80 исходный скетч занял
    Код (Text):
    Скетч использует 8802 байт (30%) памяти устройства. Всего доступно 28672 байт.
    Глобальные переменные используют 2019 байт (78%) динамической памяти, оставляя 541 байт для локальных переменных. Максимум: 2560 байт.
    С указанием константные значения хранить во flash
    Код (Text):
    Скетч использует 8802 байт (30%) памяти устройства. Всего доступно 28672 байт.
    Глобальные переменные используют 183 байт (7%) динамической памяти, оставляя 2377 байт для локальных переменных. Максимум: 2560 байт.
    То есть массив не занимает динамическую память (не переносится в память при начале инициализации скетча) .
     
  9. Борис

    Борис Нуб

    IDE 1.80 сообщения стал писать по русски ?
     
  10. ZAZ-965

    ZAZ-965 Гуру

    Да, сборка от arduino.cc и в предыдущих версиях выдавала сообщения на русском. А судя по одному гитхаб репозиторию, arduino.org и arduino.cc наконец объединили кодовую базу.
     
  11. ZAZ-965

    ZAZ-965 Гуру

    Забыл, из flash памяти читаем с помощью макроса pgm_read_word_near, т.е. строки обращения к noteDurations и melody будут выглядеть так
    Код (C++):
    //считываем массив из памяти
    int noteDuration = 1200 /  pgm_read_word_near (noteDurations+thisNote);

    tone(BUZZER, octaveMul *  pgm_read_word_near (melody+thisNote), noteDuration);
     
    Semiliranda нравится это.
  12. Борис

    Борис Нуб

    Поправил скетч и установил 1.8.0. Компиляция идет без без странных сообщений :) Все работает, внуки радуются :) Спасибо за дельные советы.