реклама на сайте
подробности

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


Местный
***

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



По поиску нашел, что например, на Мегу можно повесить "сколько угодно внешней" памяти. А можно ли использовать внешнюю память на семействе Tiny, в частности, Tiny2313? Если да - то как. Речь идет именно о памяти SRAM (если ничего не путаю в терминах). Т.е. о той, где хранятся переменные и массивы в момент выполнения программы.

Здесь же хотелось бы попросить помощи - может кто порекомендует ссылку на литературу по оптимизации стеков - какие размеры давать стекам? Как узнать минимально необходимый (для компиляции пользуюсь IAR AVR). По документации то ли перечитал, то ли... каша в голове получилась, что куда "кладется" по умолчанию. На данный момент вся оптимизация заключается в том, что для текстовых данных пользуюсь только одним указателем и весь текст храню в ЕЕПРОМе.

Вопрос оптимизации и расширения памяти встал, когда не смог реализовать простой (как мне кажется) проект - есть табло из двух 7-сегментников, статика через регистры, две ноги - синхроимпульсы регистров. Для вывода информации на сегменты используются функции, в которые передаются указатели на структуры (в структуре хранится массив с упорядоченными данными о порядке следования пинов для корректного отображения информации и собственно адреса порта, к которому подключен регистр). Также задействован USART и 1-wire. Так вот, приходится делать выбор - все вместе работать не желает. И даже не получается сделать некий интерфейс управления (через switch (t) где t - это содержимое регистра UDR) сколько-то полноценным.

Если потребуется, могу приложить схемку и архив с проектом.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Aesthete Animus
сообщение Jan 20 2008, 18:50
Сообщение #2


Местный
***

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



2aspID
Вы и в самом деле теряете слишком много памяти на переменных, которые никогда не будут изменяться. На одну только 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[], выводите нужную маску на порт.
Go to the top of the page
 
+Quote Post
aspID
сообщение Jan 21 2008, 04:00
Сообщение #3


Местный
***

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



Aesthete Animus
Я с Вами совершенно согласен. Но что делать, если по шине разводка такова, что seg_a у первого 7-сегментника - это, к примеру, вторая нога, а у второго - четвертая. У третьего - первая, а у четвертого - как и у первого, вторая... Тут по тексту-то путаться начинаешь, а в схеме... Да, согласен, что по правильному было бы развести схемно так, чтобы они совпадали... Но так получилось sad.gif

P.S. структура 7-сегментника в программе хранилась во флеше. Просто выдергивал дома из старой версии - она оказалась далеко не последней да еще и с багами smile.gif
Go to the top of the page
 
+Quote Post
Aesthete Animus
сообщение Jan 21 2008, 07:21
Сообщение #4


Местный
***

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



Цитата(aspID @ Jan 21 2008, 07:00) *
Aesthete Animus
Я с Вами совершенно согласен. Но что делать, если по шине разводка такова, что seg_a у первого 7-сегментника - это, к примеру, вторая нога, а у второго - четвертая. У третьего - первая, а у четвертого - как и у первого, вторая...

Для этого надо подсоединить оба индикатора к одному порту и коммутировать общий катод по таймеру. Тем самым решите проблемы неправильной развоодки и сэкономите ножки для других нужд.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 15:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.01401 секунд с 7
ELECTRONIX ©2004-2016