Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: И еще чуть-чуть места
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
idle1
Реально ли использовать EEPROM для памяти программ (исполняемого кода) в добавок к основным 0x03FF(2Kb)? В tiny2313?
Xenia
Цитата(idle1 @ Oct 13 2009, 02:23) *
Реально ли использовать EEPROM для памяти программ (исполняемого кода) в добавок к основным 0x03FF(2Kb)? В tiny2313?


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

Да и тиня эта не способна модифицировать свой программый код, в отличие от старших моделей AVR (типа ATmega). Поэтому даже оверлей тут невозможно организовать (обменивать код между FALSH и EEPROM по мере надобности).

Самое разумное, что можно посоветовать в том случае, когда не хватает памяти для кода - взять МК с большим объемом памяти. Однако совместимых по ногам с 2312 не существует.

И последнее. Если памяти не хвататает чуток, то еще можно переписать свою программу на ассемблере, если до этого она у вас была написана под С. Startup-блок можно еще удалить, который инициирует регистры, и делать это самим. Ну вот в общем и все, что приходит в голову.
haker_fox
Цитата(idle1 @ Oct 13 2009, 07:23) *
Реально ли использовать EEPROM для памяти программ (исполняемого кода) в добавок к основным 0x03FF(2Kb)? В tiny2313?

Нет. В арихтектуре AVR это абсолютно невозможно и исключено. Самым правильным решением является закладка МК с запасом памяти программ. Например, 20 - 50%.
BORIV
Цитата(Xenia @ Oct 13 2009, 02:43) *
Да и тиня эта не способна модифицировать свой программый код, в отличие от старших моделей AVR (типа ATmega). Поэтому даже оверлей тут невозможно организовать (обменивать код между FALSH и EEPROM по мере надобности).

С чего Вы это взяли? Команды записи EEPROM присутствуют. Обмен сделать можно, только долго будет.
idle1
Цитата(BORIV @ Oct 13 2009, 11:18) *
С чего Вы это взяли? Команды записи EEPROM присутствуют. Обмен сделать можно, только долго будет.

EEPROM писать то не проблема, а вот как с флеш дела обстоят? haker_fox на мой взгляд прав.
Здесь я хотел убедиться в правильности своего мнения.
BORIV
Цитата(idle1 @ Oct 13 2009, 11:56) *
EEPROM писать то не проблема, а вот как с флеш дела обстоят? haker_fox на мой взгляд прав.
Здесь я хотел убедиться в правильности своего мнения.


Извиняюсь, описался: команды записи флеш присутствуют. Ничто не мешает кусок из EEPROM перекинуть во флеш, если время не критично. (Использовал флеш для сохранения данных, редко изменяемых.)
Сергей Борщ
Цитата(BORIV @ Oct 13 2009, 11:42) *
Извиняюсь, описался: команды записи флеш присутствуют. Ничто не мешает кусок из EEPROM перекинуть во флеш, если время не критично.
И сколько займет код для такого перекидывания? И на сколько проходов программы по обмениваемым кускам хватит ресурса флеш?
BORIV
Цитата(Сергей Борщ @ Oct 13 2009, 13:03) *
И сколько займет код для такого перекидывания? И на сколько проходов программы по обмениваемым кускам хватит ресурса флеш?


Я отвечал на неправильное утверждение в посте №2. Целесообразно ли применять такое решение, зависит от конкретной задачи. В 99% случаев - нецелесообразно.
ReAl
Да там и EEPROM-то немного. Но помочь может, всё завиcит от логики программы.
Можно поместить в EEPROM какие-то таблицы, которые были во флеше. А если таких таблиц нет - сделать :-)
Например, какой-то развесистый switch превратить в набор функций, вызываемых по индексу, таблицу сохранить в EEPROM.
До такого у меня не доходило, таблицы во флеше же и сохранял - уже это помогало.
haker_fox
Как бы размер кода по киданию оверлея не оказался тем самым критическим размером, которого не хватает)))
tourist
На сколько я знаю для tiny2313 нельзя сделать bootloader, а Вы пишите:
Цитата(BORIV @ Oct 13 2009, 11:42) *
команды записи флеш присутствуют.

Как так? laughing.gif
Или я чего-то не допонял...
BORIV
Цитата(tourist @ Oct 13 2009, 17:34) *
На сколько я знаю для tiny2313 нельзя сделать bootloader, а Вы пишите:

Как так? laughing.gif
Или я чего-то не допонял...

Обложка даташита: -2K Bytes of in-System Self Programmable Flash.
haker_fox
Цитата(BORIV @ Oct 14 2009, 00:22) *
Обложка даташита: -2K Bytes of in-System Self Programmable Flash.

Читайте что такое ISP.
Кратко: это технология, которая позволяет программировать микросхему, не вынимая ее из устройства, т.е. не демонтируя с печатной платы, т.е. в системе.
rezident
Вообще-то нужно различать ISP (In-System-Programming) и IAP (In-Application-Programmig).
Первый термин означает, что программу в память МК можно загрузить извне, без выпаивания его из устройства. Практически все современные МК имеют подобную возможность. Для этого могут использоваться совершенно разные интерфейсы JTAG, UART, SPI, USB и т.п. Но в любом случае при программировании МК используется загружаемая извне или уже встроенная в виде ROM или запрограммированной части Flash, специальная программа (исполняемый код), называемая Bootloader. Эта программа "знает как" и "умеет" программировать Flash-память данного конкретного МК.
IAP же означает, что МК может модифицировать свою собственную Flash-память, выполняя в самом МК пользовательскую программу, загруженную в память программ. Причем IAP может работать исключительно с использованием встроенной программы Bootloader, а может и не использовать ее, если имеется такая аппаратно-программная возможность и алгоритмы программирования описаны в документации. МК, фигурирующий у топикстартера (ATtiny2313), совершенно точно поддерживает ISP. А вот насчет IAP я что-то не уверен. Но поскольку я не являюсь большим знатоком семейства AVR, то не буду утверждать этого однозначно.
BORIV
Цитата(haker_fox @ Oct 14 2009, 03:37) *
Читайте что такое ISP.
Кратко: это технология, которая позволяет программировать микросхему, не вынимая ее из устройства, т.е. не демонтируя с печатной платы, т.е. в системе.


А слово SELF Вам ничего не говорит?
Прочитайте хотя бы даташит, перед тем, как других учить.
haker_fox
Цитата(BORIV @ Oct 14 2009, 20:07) *
Прочитайте хотя бы даташит, перед тем, как других учить.

Прошу прощения! Я действительно допустил ошибку.

Однако, топикстартеру по-прежнему следует обратить внимание на кристаллы с большим ресурсом памяти FLASH.
BORIV
Контроллер 2313 прекрасно сбалансирован и очень дёшев. А если всё время не хватает памяти, следует в первую очередь обратить внимание на стиль программирования. Адептам языков высокого уровня это не объяснишь.
haker_fox
Цитата(BORIV @ Oct 15 2009, 15:23) *
Контроллер 2313 прекрасно сбалансирован и очень дёшев.

Сбалансирован для определенного ряда задач.
Цитата(BORIV @ Oct 15 2009, 15:23) *
А если всё время не хватает памяти, следует в первую очередь обратить внимание на стиль программирования.

И на задачу, которую пытаемся реализовать на данном кристалле - тоже.
Цитата(BORIV @ Oct 15 2009, 15:23) *
Адептам языков высокого уровня это не объяснишь.

ЯВУ тут непричем.
BORIV
Цитата(haker_fox @ Oct 15 2009, 11:04) *
Сбалансирован для определенного ряда задач.

И на задачу, которую пытаемся реализовать на данном кристалле - тоже.

ЯВУ тут непричем.


Поясню что я хотел сказать.
Если других ресурсов кристалла, кроме памяти программ, для решаемой задачи достаточно, то и памяти должно хватить.
Естественно, подразумеваются задачи для микроконтроллера, задачи по управлению чем-то на основании чего-то.

Языки "низкого уровня", как Вы их хотите, повидимому, назвать, позволяют "успешно программировать" не особенно вникая во внутренности кристалла и его особенности, что Вы с коллегами наглядно и продемонстрировали, не зная возможностей базового кристалла семейсва Tiny.

Я нисколько не против применения языков высокого уровня. Только и задача должна быть соответствующая. Для ATtiny2313, я бы их не советовал.
Harbinger
Цитата(Xenia @ Oct 13 2009, 01:43) *
Однако совместимых по ногам с 2312 не существует.
Существуют, но не AVR.
AT89LP4052. Только RESET инвертировать. 4 кБ.
В DIP-20, но с другой цоколёвкой, "51" есть даже с 8 кБ флэши - P89LPC9221.
(Прошу не рассматривать вышесказанное как пиар 51 wink.gif )
haker_fox
Цитата(BORIV @ Oct 15 2009, 16:57) *
Если других ресурсов кристалла, кроме памяти программ, для решаемой задачи достаточно, то и памяти должно хватить.
Естественно, подразумеваются задачи для микроконтроллера, задачи по управлению чем-то на основании чего-то.

Несогласен. Пусть ресурсы, кроме памяти, тини нас устраивают. Хватает портов, таймеров и проч. Но необходимо разместить множество константных данных: таблицы, строки и т.п. Что делать? Ставить внешнюю память для этого? Ну или просто алгоритм задачи объемный? И даже периферии тини12 (раритет) хватит. А памяти - нет.
Цитата(BORIV @ Oct 15 2009, 16:57) *
Языки "низкого уровня", как Вы их хотите, повидимому, назвать

Что-то я не припоминаю, чтобы говорил о языках низкого уровня, т.е об ассемблере.
Цитата(BORIV @ Oct 15 2009, 16:57) *
позволяют "успешно программировать" не особенно вникая во внутренности кристалла и его особенности

Это не так! ЯВУ (Вы, видимо, его назвали "языком низкого уровня") нисколько не позволяет замаскировать внутринности кристалла. Никто не освобождает от необходимости записывать данные в регистры ввода-вывода, обрабатывать прерывывания и т.д.
Цитата(BORIV @ Oct 15 2009, 16:57) *
что Вы с коллегами наглядно и продемонстрировали, не зная возможностей базового кристалла семейсва Tiny.

Еще раз повторяю: это была ошибка. Просто ошибка. Это случается со всеми. И это не повод говорить о не знании.
Цитата(BORIV @ Oct 15 2009, 16:57) *
Я нисколько не против применения языков высокого уровня. Только и задача должна быть соответствующая. Для ATtiny2313, я бы их не советовал.

Да не в задаче дело. ЯВУ может быть использован как для реализации мигалки светодиодом, так и для DES алгоритма. И ЯВУ можно применть для тини. Умеренно естественно! Но если программа на ЯВУ не помещается в память тини, это тоже не повод говорить, что ЯВУ плох.
BORIV
Цитата(haker_fox @ Oct 15 2009, 15:46) *
Да не в задаче дело. ЯВУ может быть использован как для реализации мигалки светодиодом, так и для DES алгоритма. И ЯВУ можно применть для тини. Умеренно естественно! Но если программа на ЯВУ не помещается в память тини, это тоже не повод говорить, что ЯВУ плох.

Тогда согласитесь, что не стоит говорить о том, что не хватает памяти, если "мигалка светодиодом" на ЯВУ не помещается.

Все упоминают задачи, которые гораздо сложнее "мигалки светодиодами", хоть бы пару примеров привели.
SasaVitebsk
В данном случае, как мне кажется, это вы не знаете о чём говорите. Выигрыш программирования на ASM по сравнению с тем же Си от IAR, к примеру не превышает 10% при хорошем знании того и другого. И то это при условии, что значительно лучше используются регистры. При объёмных данных думаю компилятор вас уделает.

В данном случае обсуждение бессмысленно на мой взгляд. Есть МК ATMega8(88), которая стоит те же деньги, занимает на плате меньше места, располагает большими ресурсами и имеет 8К памяти. При желании меняется как на м48 так и на м168, со всеми вытекающими.
haker_fox
Цитата(BORIV @ Oct 16 2009, 03:52) *
Тогда согласитесь, что не стоит говорить о том, что не хватает памяти, если "мигалка светодиодом" на ЯВУ не помещается.

Так про это никто, кроме Вас пока и не говорит в этом топике.
Цитата(BORIV @ Oct 16 2009, 03:52) *
Все упоминают задачи, которые гораздо сложнее "мигалки светодиодами", хоть бы пару примеров привели.

Контроллер коллекторного двигателя постоянного тока, система управления трехзвенным манипулятором... подходит? rolleyes.gif



Цитата(SasaVitebsk @ Oct 16 2009, 06:55) *
При объёмных данных думаю компилятор вас уделает.

+1.
Цитата(SasaVitebsk @ Oct 16 2009, 06:55) *
В данном случае обсуждение бессмысленно на мой взгляд.

+1.
BORIV
Ну, если Мега8 занимает меньше места на плате, чем тини2313 и контроллер коллекторного двигателя постоянного тока- это не контроллер светодиода опторазвязки, дискутировать действительно ... .
SasaVitebsk
Цитата(BORIV @ Oct 16 2009, 11:16) *
Ну, если Мега8 занимает меньше места на плате, чем тини2313 и контроллер коллекторного двигателя постоянного тока- это не контроллер светодиода опторазвязки, дискутировать действительно ... .

Откройте pdf и посмотрите:
Atmega8(TQFP) 9.23*9.23 (мм)
Attiny2312(SOIC) 10*12.7 (мм)

Дип корпус уже умер, а до mlf мы ещё не дошли. В своё время отказ от 2313 произошёл только из-за её размеров и сопоставимых возможностей. В настоящий момент t2313 мы не применяем. Только м48/м8/м88. Цена на м8 опустилась ниже 1$. При последнем применении цена на t2313 была выше чем на m8. Причина думаю в популярности m8.

Каждая задача по своему сложная. Бывают достаточно сложные "контроллеры светодиодов". Никто и не возражает. Но вот вам на вскидку недавно делал HART модем. Там у меня два фильтра 5-го порядка и перемножение сигналов. Никто не спорит, я это запросто напишу и на ASM. Но при экспериментах я экспериментировал с этими фильтрами. Я их за день перебирал 10-15 штук. Моделировал на PC и вставлял. Смотрел качество восстановления. Экспериментировал с АРУ и прочим. И не надо мне рассказывать сколько за день я бы проверил фильтров на ASM. Сколько я бы ошибок сделал при переносе на ASM. Я просто знаю.

Для примера - у меня есть бутлоадер с Wake протоколом, шифрованием и полной идентификацией. Всё это влазит в 1к на Си. В открытых исходниках я видел бутлоадер с шифрацией без протокола и идентификации ~700 байт. Учитывая что сам Wake занимает байт 200 с идентификацией - стоит задуматься. Правда?
haker_fox
Цитата(SasaVitebsk @ Oct 16 2009, 18:26) *
И не надо мне рассказывать сколько за день я бы проверил фильтров на ASM. Сколько я бы ошибок сделал при переносе на ASM. Я просто знаю.

Просто возникает ощущение, что уважаемый BORIV, особенно после этого
Цитата(BORIV @ Oct 16 2009, 03:52) *
Все упоминают задачи, которые гораздо сложнее "мигалки светодиодами", хоть бы пару примеров привели.

не часто сталкивается с задачами "сложнее мигалки светодиодами". Чтож, это вполне нормально!
YAM
Мне, при нехватке места в памяти программ в attiny2313 очень помогло переопределение переменных на неиспользуемые регистры, особенно те, которые имеют битовый доступ, например типа GPIOR0, GPIOR1, GPIOR2. После такого перераспределения память программ освободиласть почти на 25% от ее первоначального размера.. Кроме этого была нехватка ОЗУ, register utilization в этом очень помогла...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.