atmega8 + бибилиотека SD.h
- Войдите на сайт для отправки комментариев
Ср, 29/07/2020 - 18:38
не получается привязать библиотеку SD в среде IDE к атмеге8 (
пишет как я понял не хватает памяти. Даже не компилируется.
Может есть ЛЕГКИЕ библиотеки специально под этот контроллер или может как то можно удалить лишнее с библиотеки SD. В скетче основное это чтение с карты. но и запись на карту было бы тоже хорошо.
можно ли что то придумать?
так пишет:
c:/users/appdata/local/arduino15/packages/arduino/tools/avr-gcc/5.4.0-atmel3.6.1-arduino2/bin/../lib/gcc/avr/5.4.0/../../../../avr/bin/ld.exe: C:\Temp\arduino_build_18698/ReadWrite.ino.elf section `.text' will not fit in region `text'
c:/users/appdata/local/arduino15/packages/arduino/tools/avr-gcc/5.4.0-atmel3.6.1-arduino2/bin/../lib/gcc/avr/5.4.0/../../../../avr/bin/ld.exe: region `text' overflowed by 2198 bytes
collect2.exe: error: ld returned 1 exit status
exit status 1
Ошибка компиляции для платы Arduino NG or older.
Слишком много для sd. Что ещё жрёт память
я пробовал даже просто загружать стандартный скетч ReadWrite.ino ошибка как выше была.
Такая ошибка только с библиотекой SD. Где то писали тоже что вроде как в атмеге8 не хватает памяти для загрузки скетча.
Такая ошибка только с библиотекой SD. Где то писали тоже что вроде как в атмеге8 не хватает памяти для загрузки скетча.
Просто диву даёшься - "где-то писали, вроде как"! То есть где посмотреть характеристики используемого процессора - это для Вас загадка? А что тиньку тринадцатую для работы с sd картой не взяли? А вдруг бы упихнулось!
Такая ошибка только с библиотекой SD. Где то писали тоже что вроде как в атмеге8 не хватает памяти для загрузки скетча.
А что тиньку тринадцатую для работы с sd картой не взяли? А вдруг бы упихнулось!
если помощь нечем можно было и не писать ЭТО
если помощь нечем можно было и не писать ЭТО
да совершенно правильно он пишет, кто за вас должен искать эту информацию? библиотека SD сразу при запуске отводит под буфер чтения карточки 512 байт. А теперь откройте даташит на атмегу8 и посмотрите, скорлько у нее ОЗУ... что там остается под программу то?
если помощь нечем можно было и не писать ЭТО
да совершенно правильно он пишет, кто за вас должен искать эту информацию? библиотека SD сразу при запуске отводит под буфер чтения карточки 512 байт. А теперь откройте даташит на атмегу8 и посмотрите, скорлько у нее ОЗУ... что там остается под программу то?
я это все понимаю SD не подходит. на загрузку она берез больше 8 кб. даже на чип не влезет.
Поэтому ищу чт ото очень простое и легкое. В интернете есть 1 библиотека но она примеров и для очень опытных сделана. я не смогу ее использовать.
Есть другой вариант. Но при записи 75 % показывает что занято памяти. буду тестить может что то и получится.
Но все же под атмегу8 сделать реально. на uno у меня и так есть готовая рабочая программа. хочу именно под 8 ее переделать. под более дешевый чип
Но все же под атмегу8 сделать реально. на uno у меня и так есть готовая рабочая программа. хочу именно под 8 ее переделать. под более дешевый чип
под атмегу168 переделайте - они даже дешевле атмеги8 на Али, а памяти больше и программируется даже проще, так как по пинам и регистрам полный аналог атмеги 328, что на уно
Но все же под атмегу8 сделать реально. на uno у меня и так есть готовая рабочая программа. хочу именно под 8 ее переделать. под более дешевый чип
под атмегу168 переделайте - они даже дешевле атмеги8 на Али, а памяти больше и программируется даже проще, так как по пинам и регистрам полный аналог атмеги 328, что на уно
это будет второй вариант. просто у меня завалялась 8. хочется ее все таки добить )
а что скажете насчет библиотеки fat16?
75% занято памяти. вроде есть шанс. но конечно на пределе ?
genia1991, Вы бы ещё уточнили, а какую функцию у Вас SDкарта выполняет? Проекты с карточками, которые возможно Вы на атмеге8 видели, скорее всего совсем без файловой системы работают. Если Вам нужно какой-нибудь лог сохранять, а потом его через микроконтроллер же и читать, то это одно дело. А если карточку нужно ещё и в компьютер совать и работать именно с файлами, то лучше всё-таки сразу другой контроллер выбрать.
genia1991, Вы бы ещё уточнили, а какую функцию у Вас SDкарта выполняет? Проекты с карточками, которые возможно Вы на атмеге8 видели, скорее всего совсем без файловой системы работают. Если Вам нужно какой-нибудь лог сохранять, а потом его через микроконтроллер же и читать, то это одно дело. А если карточку нужно ещё и в компьютер совать и работать именно с файлами, то лучше всё-таки сразу другой контроллер выбрать.
основное это чтение строк и желательно дозапись что бы работала через UART.
при нажатии на кнопку вперед или назад контроллер должен выводить 1 строку на экране. экран OLED библиотеку сейчас не вспомню. надо в проэкте смотреть что там стоит. но чтояло там что то упрощенное текстовое . что то легкое.
Буду пробовать с FAT16 библиотекой делать если не получится то оставлю uno
а, так там еще и OLED? :) - чего ж вы хотите-то на своей атмеге8 ?
на самом деле не вижу ни малейшего смысла покупать младшие контроллеры для штучных изделий. Разница 50-100 рублей, а потом сидите неделями и не знаете как код запихнуть...
Схема работы такая - прототип делаете на контроллере с запасом, полностью отлаживаете, тщательно оптимизируете код - и тогда смотрите, какой контроллер брать для серии (если серия планируется) и имеет ли смысл вообще экономить
а, так там еще и OLED? :)
да стандартные библиотеки для OLED прожорливые очень.
Но сейчас не могу глянуть. Но стоит у меня не стандартная. очень легкая текстовая версия. Возможно даже хватит места но это не точно. Проверю но думаю там все к нулю идет.
Или хотя бы гляну будет ли fat16 работать.
Но карточка у меня на 4 гиг. а желательно на 2 наверное и наверное форматировать надо в fat16 флешку?
Времени вообще сейчас нет что бы заняться этим (
Если бы кто то протестил и отписался что результаты дают
я протестил получается где то 106 % )
немного многовато. если конечно знать бы как уменьшить библиотеку для sd то очень даже реально все вместить.
мне только надо чтение файла и запись было бы хорошо.
Может кто нибудь помощь мне урезать fat16 библиотеку?
Скетч использует 7454 байт (103%) памяти устройства. Всего доступно 7168 байт.
Глобальные переменные используют 841 байт (82%) динамической памяти, оставляя 183 байт для локальных переменных. Максимум: 1024 байт.
Скетч слишком большой
Ошибка компиляции для платы Arduino NG or older.
не трогайте библиотеку, оптимизируйте свой код. 3% всегда можно найти, на чем сэкономить
мне только надо чтение файла и запись было бы хорошо.
Может кто нибудь помощь мне урезать fat16 библиотеку?
Неиспользуемые функции в прошивку и так не попадут. Это у Вас уже без них размер прошивки такой.
Но 3%, как выше написали, уже есть шансы найти.
урезал все вообще в 94% и даже serial остался работать. Но это не считая что еще 2 кнопки я не подключал. Сейчас флешки рядом нет. Позже проверю все. Если флешка не подойдет то дальше развивать скетч не буду. Хотя на SD библиотеки работает хорошо. Может вечером проверю если получится по быстрому .только нечем ее форматировать в fat16. картридер не знаю рабочий или нет в компе
эм. не могу достать картридер нигде рабочий. мой уже что то не тю тю совсем.
Надо же как то форматнуть sd в fat16 файловую систему. вообще печалька
подключил sd карту но в терминале вот такая ошибка:
error: card.begin
SD error: 2
что это может быть?
карточка на 4 гиг. форматировал в fat16
подключил через sd адаптер для ардуино
такой скетч загружаю
открывайте исходники SD библиотеки и ищите сообщения об ошибках
открывайте исходники SD библиотеки и ищите сообщения об ошибках
вот такой кусок кода нашел. но не совсем понял что это за ошибка (
Мне кажется это ошибка: что карточка не готова:
/** Card did not go ready */
uint8_t const SD_ERROR_ACMD41 = 0X2;
У меня карточка на 4 гиг. может надо на 2 гиг. ?
на 2 у меня просто нет такой (
причем тут 2 или 4 гига? :) - Это просто ошибка номер 2: Card did not go ready
Английский несколько странный , наверно индиец писал :) - примерный перевод "карточка не переходит в режим готовности"
ХЗ что это значит на самом деле
причем тут 2 или 4 гига? :) - Это просто ошибка номер 2: Card did not go ready
Английский несколько странный , наверно индиец писал :) - примерный перевод "карточка не переходит в режим готовности"
ХЗ что это значит на самом деле
я думал может 4 гиг будет много. создал раздел на 1300мб.
Очень хочется что бы заработало :( но пока полная печалька и не знаю что делать. купил картридер только что бы форматнуть эту карту но ничего не выходит (
очень хочется на атмеге 8 запустить.
у меня карта подключена через SS пин на D10. Адаптер обычный ардуиновский для SD карт синий. подключено по spi. размер карты сделал 1300мб
загружал скетч тот что выше. Пишет что мало памяти но грузит. 83% занято. Может и работает нестабильно из за этого (
очень нужна помощь :(
кстати ссылка библиотеку:
https://github.com/greiman/Fat16
нашел такую запись (
у меня по идеи такая SDHC
The class Fat16 is a minimal implementation of FAT16 on standard SD cards. High Capacity SD cards, SDHC, are not supported. It should work on all standard cards from 8MB to 2GB formatted with a FAT16 file system.
все уже работает )
очень довольный что не в пустую потратил столько времени и сил. Все таки реально запустить sd на атмеге8 :)
Но видимо функционал придется резать. все таки память на пределе
для тех кому интересно будет
Скетч использует 5698 байт (79%) памяти устройства. Всего доступно 7168 байт.
Глобальные переменные используют 778 байт (75%) динамической памяти, оставляя 246 байт для локальных переменных. Максимум: 1024 байт.
Всего доступно 7168 байт.
а что так мало доступно? Должно быть больше 8к. Или у вас там бутлоадер?
Эээ батенька, с этого надо было начинать! Зачем там бут, если у вас наверняка на устройстве нет USB?
Всего доступно 7168 байт.
атмега8 + bootloader ардуино стоит.
а как тогда скетч грузить если прошивки не будет?
на атмеге8 же и есть 8 кб
а как тогда скетч грузить если прошивки не будет?
А как Вы бутлоадер туда грузили? Вот так и скетч загружайте - через ISP. И не нужно бутлоадером место занимать, которого в Atmega8 и так мало.
открывайте исходники SD библиотеки и ищите сообщения об ошибках
какая FAT16 на флэхе 4 Гиг, вы о чём? )))
но решение проблемы есть, разбейте флэшку на два раздела по 2 гига и первый форматите в фат16
открывайте исходники SD библиотеки и ищите сообщения об ошибках
какая FAT16 на флэхе 4 Гиг, вы о чём? )))
но решение проблемы есть, разбейте флэшку на два раздела по 2 гига и первый форматите в фат16
спасибо уже все работает ))
просто времени мало и не дочитал что нельзя использовать флешку больше чем 2 гиг. высокороскорсние использовать тоже нельзя.
а как тогда скетч грузить если прошивки не будет?
А как Вы бутлоадер туда грузили? Вот так и скетч загружайте - через ISP. И не нужно бутлоадером место занимать, которого в Atmega8 и так мало.
А этот прием очень нужен. можно пожалуйста поподробнее как грузить на атмегу обычный скетч с IDE без бутлоадера?
А этот прием очень нужен. можно пожалуйста поподробнее как грузить на атмегу обычный скетч с IDE без бутлоадера?
Подключаете к Atmega8 ISP-программатор (например USBasp) или ардуину с загруженным скетчем Arduino ISP. В Arduino IDE в меню "Инструменты" - "Программатор" выбираете программатор (USBasp или Arduino ISP соответственно). Скетч загружать через меню "Скетч" - "Загрузить через программатор".
А этот прием очень нужен. можно пожалуйста поподробнее как грузить на атмегу обычный скетч с IDE без бутлоадера?
Подключаете к Atmega8 ISP-программатор (например USBasp) или ардуину с загруженным скетчем Arduino ISP. В Arduino IDE в меню "Инструменты" - "Программатор" выбираете программатор (USBasp или Arduino ISP соответственно). Скетч загружать через меню "Скетч" - "Загрузить через программатор".
спасибо надо будет проверить обязательно. Хотел только переспросить . Программатор выбирать ArduinoISP или Arduino as ISP ?
а фюзы записывать не надо отдельно?
Хотел только переспросить . Программатор выбирать ArduinoISP или Arduino as ISP ?
Хм, раньше вроде только один был - Arduino as ISP. Не уверен, чем они отличаются, попробуйте оба.
а фюзы записывать не надо отдельно?
Если ранее в этот МК прошивали загрузчик, то вместе с ним прошиваются и нужные фьюзы. Повторно не надо.
Если же будете прошивать новую Atmega8 без загрузчика, то фьюзы надо прошивать отдельно (по умолчанию МК настроен на внутренний осциллятор 1МГц). К сожалению, в Arduino IDE для этого нет удобного способа.
Хотел только переспросить . Программатор выбирать ArduinoISP или Arduino as ISP ?
Хм, раньше вроде только один был - Arduino as ISP. Не уверен, чем они отличаются, попробуйте оба.
а фюзы записывать не надо отдельно?
Если ранее в этот МК прошивали загрузчик, то вместе с ним прошиваются и нужные фьюзы. Повторно не надо.
Если же будете прошивать новую Atmega8 без загрузчика, то фьюзы надо прошивать отдельно (по умолчанию МК настроен на внутренний осциллятор 1МГц). К сожалению, в Arduino IDE для этого нет удобного способа.
скорее всего пункт: Arduino as ISP
Загрузчик тоже прошивал через ардуино (был в качестве программатора)
1. загрузил на uno скетч ArduinoISP
2. подсоединил к uno атмегу8 по spi
3. выбрал программатор Arduino as ISP
4. нажал записать загрузчик
Как я понял грузится загрузчик и уже настроенные фьюзы.
Вроде удобный способ.
А потом как я понимаю надо написать любой скетч и через меню скетч - загрузить через программатор (грузится в атмегу8 hex файл скетча любого нашего + удаляется bootloader но фьюзы остаются настроены)
Тем самым мы прошиваем восьмерку и памяти теперь у нас немного больше. потому что bootloader-а у нас в чипе больше нет?
Скажите правильно ли я понимаю все пункты?
скорее всего пункт: Arduino as ISP
Загрузчик тоже прошивал через ардуино (был в качестве программатора)
1. загрузил на uno скетч ArduinoISP
2. подсоединил к uno атмегу8 по spi
3. выбрал программатор Arduino as ISP
4. нажал записать загрузчик
Как я понял грузится загрузчик и уже настроенные фьюзы.
Вроде удобный способ.
А потом как я понимаю надо написать любой скетч и через меню скетч - загрузить через программатор (грузится в атмегу8 hex файл скетча любого нашего + удаляется bootloader но фьюзы остаются настроены)
Тем самым мы прошиваем восьмерку и памяти теперь у нас немного больше. потому что bootloader-а у нас в чипе больше нет?
Скажите правильно ли я понимаю все пункты?
вроде все верно, маленькое уточнение... при прошивке бутлоудера (пункт 4) загрузка начинается с прошивки фьюзов, а потом бут заливается. если далее заливать код по ISP ЗАГРУЗЧИК ЗАТРЕТСЯ - ЕГО НЕ БУДЕТ. но программа этого не видит и согласно настройкам ограничивает размер кода для загрузки согласно выбраной плате. поставьте набор по ссылке из этого топика, там достаточно удобно.
еще раз, при программировании по ISP загрузчик на борту не нужен, более того он затирается, если был.
скорее всего пункт: Arduino as ISP
Загрузчик тоже прошивал через ардуино (был в качестве программатора)
1. загрузил на uno скетч ArduinoISP
2. подсоединил к uno атмегу8 по spi
3. выбрал программатор Arduino as ISP
4. нажал записать загрузчик
Как я понял грузится загрузчик и уже настроенные фьюзы.
Вроде удобный способ.
А потом как я понимаю надо написать любой скетч и через меню скетч - загрузить через программатор (грузится в атмегу8 hex файл скетча любого нашего + удаляется bootloader но фьюзы остаются настроены)
Тем самым мы прошиваем восьмерку и памяти теперь у нас немного больше. потому что bootloader-а у нас в чипе больше нет?
Скажите правильно ли я понимаю все пункты?
вроде все верно, маленькое уточнение... при прошивке бутлоудера (пункт 4) загрузка начинается с прошивки фьюзов, а потом бут заливается. если далее заливать код по ISP ЗАГРУЗЧИК ЗАТРЕТСЯ - ЕГО НЕ БУДЕТ. но программа этого не видит и согласно настройкам ограничивает размер кода для загрузки согласно выбраной плате. поставьте набор по ссылке из этого топика, там достаточно удобно.
еще раз, при программировании по ISP загрузчик на борту не нужен, более того он затирается, если был.
нажимаю загрузить через программатор но пишет что недостаточно места. бутлоадер почему то не удаляется. он как будто бы там все равно остается (
Наверное я не понял как указать в файле boards.txt на освобождение места от загрузчика :(
мне надо просто загрузить эту инфу в файл boards (который находится в папке hardware/ avr)?
скопируйте секцию для атмеги8, назовите ее как-нить типа "атмега8 без бута" и исправьте парметр в строчке
atmegang.menu.cpu.atmega8.upload.maximum_size=7168
на 8192
скопируйте секцию для атмеги8, назовите ее как-нить типа "атмега8 без бута" и исправьте парметр в строчке
atmegang.menu.cpu.atmega8.upload.maximum_size=7168
на 8192
спасибо вроде понял. немного позже проверю этот способ
создал файл boards.txt (оригинал потом верну на место) с такими настройками.
Сам файл менял тот что в главной папке ардуино: Program Files (x86)\Arduino\hardware\arduino\avr\boards.txt
изминил только строчку: atmegang.menu.cpu.atmega8.upload.maximum_size=8192
вроде все заработало :)
буду еще тестировать но вроде все работает идеально )
а еще интересно если использовать atmega328 то все шаги такие же делать надо как выше?
только везде надо будет выставлять и делать все под atmega328?
Для всех МК AVR.
Для всех МК AVR.
спасибо
а еще интересно если использовать atmega328 то все шаги такие же делать надо как выше?
только везде надо будет выставлять и делать все под atmega328?
Для всех МК AVR.
а чего ответ не полный :) фьюзы и загрузчик, на пример на НАНО проблема с вочдогом, нанку прошивают настройками УНО - камень один, а незначительные различия есть.
т.е. вопрос какой-то непонятный, шаги то такие, а вот результаты могут быть разные.
а еще интересно если использовать atmega328 то все шаги такие же делать надо как выше?
только везде надо будет выставлять и делать все под atmega328?
Для всех МК AVR.
а чего ответ не полный :) фьюзы и загрузчик, на пример на НАНО проблема с вочдогом, нанку прошивают настройками УНО - камень один, а незначительные различия есть.
т.е. вопрос какой-то непонятный, шаги то такие, а вот результаты могут быть разные.
Буду пробовать и атмегу328 прошить. сейчас ее просто нет и цены какие то большие очень. таргаши продают их по цене собранных ардуино. наглые очень они. а атмега8 вообще нереальных денег стоит (
может лучше у китайцев сразу пачку покупать. а не выручать наших
Буду пробовать и атмегу328 прошить. сейчас ее просто нет и цены какие то большие очень. таргаши продают их по цене собранных ардуино. наглые очень они. а атмега8 вообще нереальных денег стоит (
может лучше у китайцев сразу пачку покупать. а не выручать наших
1) atmega328 теперь разная ... и это очень печально, но не критично почитайте,.. часто непонятки возникают в посте почти ничего, кроме факта проблемы и ими весь инет завален...
2) ардуино разные, неужели нет подходящей под задачу готовой? arduino pro mini...
3) сам думаю... может поддержать кортекс... куча плюсов и жирный минус - очень много нужно рыть инета для поиска библиотек, последнее время с этим значительно проще... есть еще у кортекса здоровущий минус ИМХО 3,3В ядро и малые токи - для систем с шикарными помехами они просто беситься начинают... жесткие требования к разводке питания, шунтирование и блокировки... но ядро классное и быстрое и куча ног на которые можно 5В подавать без заморочек... жаль только, нет столько времени на изучение... с памятью моей проблемы, плохо информация держится...
Буду пробовать и атмегу328 прошить. сейчас ее просто нет и цены какие то большие очень. таргаши продают их по цене собранных ардуино. наглые очень они. а атмега8 вообще нереальных денег стоит (
может лучше у китайцев сразу пачку покупать. а не выручать наших
1) atmega328 теперь разная ... и это очень печально, но не критично почитайте,.. часто непонятки возникают в посте почти ничего, кроме факта проблемы и ими весь инет завален...
2) ардуино разные, неужели нет подходящей под задачу готовой? arduino pro mini...
3) сам думаю... может поддержать кортекс... куча плюсов и жирный минус - очень много нужно рыть инета для поиска библиотек, последнее время с этим значительно проще... есть еще у кортекса здоровущий минус ИМХО 3,3В ядро и малые токи - для систем с шикарными помехами они просто беситься начинают... жесткие требования к разводке питания, шунтирование и блокировки... но ядро классное и быстрое и куча ног на которые можно 5В подавать без заморочек... жаль только, нет столько времени на изучение... с памятью моей проблемы, плохо информация держится...
я тоже не все могу запомнить и во времени проблема. программирование сам пытаюсь учить. все это как хобби. деньги на этом не зарабатываю :)
программирую сейчас переводчик . анг- русс. будет полезная штука )
но все же остановился на 328. все таки памяти там больше.
не могу понять почему нельзя сделать такой же контроллер но хотя бы на 500kb памяти. весь интернет забит тем что не хватает места для скетча. ничего ведь не стоит это проделать им
не могу понять почему нельзя сделать такой же контроллер но хотя бы на 500kb памяти. весь интернет забит тем что не хватает места для скетча. ничего ведь не стоит это проделать им
патамучто ТАКИЕ объемы скорее исключение, чем правило. Проще ставит внешнюю память и туда скидывать. И МК никто не планирует массово использовать с криворуким кодом - для производства массовых изделий его оптимизируют. т.е. нытье десятка криворуких ползателей не причина для массового производства. Ну и цена вопроса...
программирую сейчас переводчик . анг- русс. будет полезная штука )
но все же остановился на 328. все таки памяти там больше.
не могу понять почему нельзя сделать такой же контроллер но хотя бы на 500kb памяти. весь интернет забит тем что не хватает места для скетча. ничего ведь не стоит это проделать им
да кто вам сказал, что таких нет? - навалом просто. Далеко ходить не надо - в той же Меге 256 килобайт
Но юзерам сколько не дай - они всегда будут ныть. Потому что контроллер надо выбирать под задачу, а новички вечно сначала плату разведут, напаяют туда тини13, а потом жалуются, что система управления ядерным реактором не помещается в память :)
Взять хотя бы вас - ну ведь никому в здравом уме не придет в голову делать переводчик на атмеге328. Возьмите для этого Расбери - самое то. Хотя в принципе не ясно, кому это нужно, если в любой мобильник можно поставить словарик на десяток языков...