|
Расширение памяти у Tiny2313, Возможно ли? Помогите начинающему |
|
|
|
Jan 20 2008, 04:45
|

Местный
  
Группа: Свой
Сообщений: 343
Регистрация: 24-01-07
Из: Новосибирск
Пользователь №: 24 714

|
По поиску нашел, что например, на Мегу можно повесить "сколько угодно внешней" памяти. А можно ли использовать внешнюю память на семействе Tiny, в частности, Tiny2313? Если да - то как. Речь идет именно о памяти SRAM (если ничего не путаю в терминах). Т.е. о той, где хранятся переменные и массивы в момент выполнения программы.
Здесь же хотелось бы попросить помощи - может кто порекомендует ссылку на литературу по оптимизации стеков - какие размеры давать стекам? Как узнать минимально необходимый (для компиляции пользуюсь IAR AVR). По документации то ли перечитал, то ли... каша в голове получилась, что куда "кладется" по умолчанию. На данный момент вся оптимизация заключается в том, что для текстовых данных пользуюсь только одним указателем и весь текст храню в ЕЕПРОМе.
Вопрос оптимизации и расширения памяти встал, когда не смог реализовать простой (как мне кажется) проект - есть табло из двух 7-сегментников, статика через регистры, две ноги - синхроимпульсы регистров. Для вывода информации на сегменты используются функции, в которые передаются указатели на структуры (в структуре хранится массив с упорядоченными данными о порядке следования пинов для корректного отображения информации и собственно адреса порта, к которому подключен регистр). Также задействован USART и 1-wire. Так вот, приходится делать выбор - все вместе работать не желает. И даже не получается сделать некий интерфейс управления (через switch (t) где t - это содержимое регистра UDR) сколько-то полноценным.
Если потребуется, могу приложить схемку и архив с проектом.
|
|
|
|
|
 |
Ответов
|
Jan 20 2008, 18:50
|

Местный
  
Группа: Свой
Сообщений: 222
Регистрация: 9-06-07
Пользователь №: 28 317

|
2 aspIDВы и в самом деле теряете слишком много памяти на переменных, которые никогда не будут изменяться. На одну только seg7 тратится 8 байт... В вашем случае достаточно сделать массив масок, размещенный во флеше и функцию вывода маски на порт. Плюс, придется еще потратить два байта (а можно и одним обойтись), в которых будут храниться текущие символы индикатора. Я делал так Код // Маски сегментов (Специфичны для Вашего устройства) #define seg_a 0x40 #define seg_b 0x02 #define seg_c 0x80 #define seg_d 0x20 #define seg_e 0x01 #define seg_f 0x08 #define seg_g 0x04 #define seg_dot 0x10
// Маски цифр индикатора const uint8_t indct_data[] = { seg_b | seg_c | seg_d | seg_e | seg_f |seg_g, // 0 seg_b | seg_c, // 1 seg_g | seg_b | seg_a | seg_e |seg_d, // 2 seg_g | seg_b | seg_a | seg_c |seg_d, // 3 seg_f | seg_a | seg_b | seg_c, // 4 seg_g | seg_f | seg_a | seg_c | seg_d, // 5 seg_g | seg_f | seg_e | seg_d | seg_c | seg_a, // 6 seg_b | seg_c | seg_g, // 7 seg_a | seg_b | seg_c | seg_d | seg_e | seg_f | seg_g , // 8 seg_a | seg_b | seg_c | seg_d | seg_f | seg_g //9 }; Далее, используя indct_data[], выводите нужную маску на порт.
|
|
|
|
|
Jan 21 2008, 04:00
|

Местный
  
Группа: Свой
Сообщений: 343
Регистрация: 24-01-07
Из: Новосибирск
Пользователь №: 24 714

|
Aesthete AnimusЯ с Вами совершенно согласен. Но что делать, если по шине разводка такова, что seg_a у первого 7-сегментника - это, к примеру, вторая нога, а у второго - четвертая. У третьего - первая, а у четвертого - как и у первого, вторая... Тут по тексту-то путаться начинаешь, а в схеме... Да, согласен, что по правильному было бы развести схемно так, чтобы они совпадали... Но так получилось  P.S. структура 7-сегментника в программе хранилась во флеше. Просто выдергивал дома из старой версии - она оказалась далеко не последней да еще и с багами
|
|
|
|
Сообщений в этой теме
aspID Расширение памяти у Tiny2313 Jan 20 2008, 04:45 jasper Цитата(aspID @ Jan 20 2008, 09:45) По пои... Jan 20 2008, 06:28 SasaVitebsk Например atmega8 (48-168) по площади занимаемой на... Jan 20 2008, 11:25 Aesthete Animus Цитата(aspID @ Jan 20 2008, 07:45) По пои... Jan 20 2008, 14:09 Qwertty Цитата(Aesthete Animus @ Jan 20 2008, 17... Jan 20 2008, 15:52  Different Цитата(Qwertty @ Jan 20 2008, 18:52) Если... Feb 16 2008, 15:46 Aesthete Animus Может стоит попытаться оптимизировать? Мне к приме... Jan 20 2008, 16:42 aspID Цитата(Aesthete Animus @ Jan 20 2008, 22... Jan 20 2008, 17:54  ae_ Цитата(aspID @ Jan 21 2008, 13:00) Aesthe... Jan 21 2008, 07:12 aspID Цитата(Aesthete Animus @ Jan 21 2008, 13... Jan 21 2008, 18:48 Aesthete Animus Цитата(aspID @ Jan 21 2008, 21:48) Мсье, ... Jan 21 2008, 19:33 =VRA= ЦитатаА вот разводка от регистров до 7-сегментнико... Jan 21 2008, 19:01 aspID ЦитатаНу тогда просто делаете два массива во флеше... Jan 21 2008, 21:00 Aesthete Animus Цитата(aspID @ Jan 22 2008, 00:00) Не пон... Jan 21 2008, 21:12  Сергей Борщ Цитата(Aesthete Animus @ Jan 21 2008, 23... Jan 21 2008, 23:30 aspID Цитатанаверное, двумерный массив.
Сергей, у Вас да... Jan 22 2008, 03:13 SasaVitebsk Цитата(aspID @ Jan 22 2008, 07:13) Сергей... Jan 22 2008, 08:48
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|