Блок с датойБлок с временемБлок с возрастом сайта
Mr.ALB

    Анатолий Беляев (aka Mr.ALB). Персональный сайт

    Да пребудут с вами Силы СВЕТА!

     

    Ардуино (Arduino). #10

    Проверка EEPROM

    Столкнулся с некоторой проблемой – в одной плате Ардуино не все ячейки EEPROM работали на запись, поэтому написал программку, которая проверяет способность микроконтроллера записывать и считывать значения в каждую ячейку EEPROM.

    Собственно программка не большая, всего на 3 кБ. Пользоваться просто: загружаете скетч в ардуинку и включаете монитор серийного порта в среде разработки IDE. На экране вы увидите построчно и последовательно перебор всех ячеек EEPROM, в которые будут записываться случайно выбранное значение и затем оно же будет из ячейки считываться.

    Если записанное и считанное значения совпадают, то переходим к проверке следующей ячейки памяти, а если не совпадают, то программа будет остановлена и на экране будет выведено соответствующее сообщение.

    С помощью этой программки отловил битые ячейки памяти в одной Ардуинке, и перестроил программу для неё так, чтобы не использовать эти неисправные ячейки.

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

    Скетч для проверки EEPROM

    Ниже привожу скетч и после него уже архив со скетчем для IDE.

    Весь код подробно закомментирован, с его пониманием, надеюсь, проблем не будет.

    Размер EEPROM:

    • ATMega168   – 512 ячеек,
    • ATMega328   – 1024 ячейки,
    • ATMega2560 – 4096 ячейки,
    • LGT8F328P   – 1020 ячеек.

    Соответствующее число передаётся переменной EEPROM_max.

    Библиотека <EEPROM.h> имеет функцию проверки максимального размера EEPROM, поэтому использовал такую функцию для автоматического определения EEPROM_max. Проверял на микроконтроллерах AVR и на микроконтроллере LGT8F328P. Замечу, что этот китайский микроконтроллер требует некоторой настройки библиотеки. Полная библиотека для работы с EEPROM для LGT8F находится в Приложении.


    Приложение

    Примечание

    Небольшое замечание: если у вас в Мониторе порта вместо русских букв выводятся разные крякозябры, то скорее всего ваш скетч имеет кодировку не UTF-8, а WINDOWS-1251 или какую-то другую. Запишите скетч в кодировке UTF-8.

    Ещё такое может быть, если в программе/скетче задана скорость обмена через последовательный (Serial) порт не соответствующая вашей плате или открытому окну последовательного порта. Попробуйте изменить скорость обмена данными, возможно это решит проблему. У меня некоторые платы работали на скорости 2400 бод, тогда как в скетче было установлена скорость 9600 бод.


    . Mr.ALB
    Предыдущая страница Страница 11 Далее