Процессор ATmega128A. Подключена внешняя SRAM 64КБ. Платформа MegaCore - установлена. Компилятор ругается что прога требует для буфера данных больше 4КБ (внутреннее ОЗУ). Как компилятору сказать что в наличии есть намного больше. Прошу ответить - конкретную строчку текста и куда ее вставить ? Именно в среде Ардуино ИДЕ. С Уважением. ПС. Возможно кому пригодится, если захочет свою Ардуину на АТмеге128. - "...Что касается схемотехники - В роли регистра адреса лучше использовать 74HCT574(четыре !). Надо ввести в схему цепи задержки сигналов ALE, #WR и #RD относительно сигналов адреса/данных. В роли задержки - пара инверторов. Два инвертора - повторитель. Шесть инверторов из микры (напр. 74HCT04) как раз то что требуется. Без них Протеус показывает лажу. В данном случае он не врет, логически все верно. Полагаться на супер-пупер быстродействие регистра адреса и микры памяти - опрометчивое дело. Выставил в настройках проца задержки по максимуму - оказалось недостаточно. Даташит предупреждает об этом же..."
Что-то как-то на тон приказа смахивает. А если я скажу строка №27 - устроит? Конкретно ведь Открываете файл <где там стоит IDE>\hardware\arduino\avr\boards.txt Ищете там описание своей платы (можно и новую создать, скопируйте с какой-то похожей и поменяйте имя). Описание, например, для UNO выглядит вот так Код (C++): uno.name=Arduino Uno uno.vid.0=0x2341 uno.pid.0=0x0043 uno.vid.1=0x2341 uno.pid.1=0x0001 uno.vid.2=0x2A03 uno.pid.2=0x0043 uno.vid.3=0x2341 uno.pid.3=0x0243 uno.upload.tool=avrdude uno.upload.protocol=arduino uno.upload.maximum_size=32256 uno.upload.maximum_data_size=2048 uno.upload.speed=115200 uno.bootloader.tool=avrdude uno.bootloader.low_fuses=0xFF uno.bootloader.high_fuses=0xDE uno.bootloader.extended_fuses=0xFD uno.bootloader.unlock_bits=0x3F uno.bootloader.lock_bits=0x0F uno.bootloader.file=optiboot/optiboot_atmega328.hex uno.build.mcu=atmega328p uno.build.f_cpu=16000000L uno.build.board=AVR_UNO uno.build.core=arduino uno.build.variant=standard Про память строки maximum_size и maximum_data. Заодно и остальное посмотрите. Если будете создавать новую, меняйте ВСЕ префиксы "uno." и название в строке name= - будет у Вас совсем новая плата
1. Неа. Наоборот - просьба ответить так, чтоб даже детсадовец понял какой текст, куда вписать и какую кнопку нажать. Иначе - неминуемое и ненужное разбухание диалога. 2. Платформу MegaCore устанавливал недавно "штатным способом". В папке, где вы указали, есть два файла - старый boards.txt и новый - boards.txt0. . В новом - есть блок для 128го. Строчки upload.maximum_data_size нет совсем. Не рискую пока ничего менять, чтоб не запороть ИДЕ (уже было такое). Предлагаете вписать строчку и/или переименовать файл в boards.txt ? 3. В текущем состоянии компилятор ругается про 4КБ памяти SRAM. Код (C++): ############################################################### atmega128A.name=Custom ATmega 128 Breakout Board using AVRISP atmega128A.upload.tool=usbasp atmega128A.upload.maximum_size=126976 atmega128A.bootloader.low_fuses=0xFF atmega128A.bootloader.high_fuses=0xCA atmega128A.bootloader.extended_fuses=0xFF atmega128A.bootloader.path=atmega atmega128A.bootloader.file=boot_mega128.hex atmega128A.bootloader.unlock_bits=0x3F atmega128A.bootloader.lock_bits=0x0F atmega128A.build.mcu=atmega128 atmega128A.build.f_cpu=16000000L atmega128A.build.core=arduino atmega128A.build.variant=mega128 5. Прежний файл boards.txt - раздела для 128го не содержит. 6.. Как прятать здесь на сайте код под "Кат" ?
Не - вы не виноваты и я не жалуюсь - это лишь для "профессионального роста в Ардуинщине". Ладно - рискнул пошурудить в ИДЕ. Имеем следующее - 1. Если в файл boards.txt0 вписать строку - atmega128A.upload.maximum_data_size=65536 и перезапустить ИДЕ - компилятор продолжает ругаться на превышение размера над 4096 байт. 2. Если boards.txt переименовать в boards_back.old, а boards.txt0 - в boards.txt - и перезапустить ИДЕ - тоже ничего не меняется. Компилятор продолжает ту же песню. 3. Обращение к "дальним" адресам внешней памяти изнутри программы - все ОК. Пишутся и читаются. ПС. Возможно это просто информационный файл и влияния на внутреннюю работу ИДЕ он не оказывает. -
Попробовал, установил MegaCore из https://mcudude.github.io/MegaCore/package_MCUdude_MegaCore_index.json Кусок файла C:\Users\<user_name>\Local Settings\Arduino15\packages\MegaCore\hardware\avr\2.1.3\boards.txt Изменил строку maximum_data_size=4096: ##################### #### ATmega128/A #### ##################### # General 128.name=ATmega128 128.upload.tool=avrdude #128.upload.maximum_data_size=4096 128.upload.maximum_data_size=65535 Результат: Sketch uses 1268 bytes (0%) of program storage space. Maximum is 130048 bytes. Global variables use 9 bytes (0%) of dynamic memory, leaving 65526 bytes for local variables. Maximum is 65535 bytes.
Оёёё. Оказывается Ардуино ИДЕ еще куда-то сует свои куски, кроме собственной папки. Я и не знал. Пошел по вашему следу - Путь оказался немного другой - C:\Users\<user_name>\App Data\Local\Arduino15\packages\MegaCore\hardware\avr\2.1.3\boards.txt Изменил на 128.upload.maximum_data_size=65536. Компильнул - получил то же что и у вас. Global variables use 9 bytes (0%) of dynamic memory, leaving 65526 bytes for local variables. Maximum is 65536 bytes. Тему можно закрывать. Как говорил доктор Сарториус - "человеку нужен человек". А уж какой проц изучать - дело вкуса, баловство одним словом.
C:\Users\<user_name>\Local Settings это просто ярлык/shortcut на C:\Users\<user_name>\AppData\Local. Так что в итоге попадаем в одно и то же место.
Когда Каспарова спросили - почему он проиграл суперкомпьютеру - он ничего не ответил - но ИМХО - если бы у него было больше времени на принятие решения то он бы его обыграл...