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

 
 
> Расширение памяти у 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
Ответов
aspID
сообщение Jan 20 2008, 17:54
Сообщение #2


Местный
***

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



Цитата(Aesthete Animus @ Jan 20 2008, 22:42) *
Может стоит попытаться оптимизировать?

Стоит, хотя бы для того, чтобы научится smile.gif Но ест сомнения, что все уместится на самом деле sad.gif
Цитата(Aesthete Animus @ Jan 20 2008, 22:42) *
Мне к примеру не ясно, зачем вот это:
Не поясните, какие структуры и зачем они нужны?

Удобный пережиток, если можно так сказать smile.gif Пользовался 7-сегментниками, которые были распинованы по-разному, но вешал их на одну шину. Пришлось писать структуру, в которую просто в нужном порядке передавались ноги. Тогда с помощью функции можно было в любой разряд записать любой символ.

Выглядело это примерно так:

Код
#define SEG_7_UP        0 //Верхний сегмент
#define SEG_7_MID       1 //Серединка
#define SEG_7_BOT       2 //Нижний сегмент
#define SEG_7_UPLEFT    3 //Верхний левый
#define SEG_7_UPRIGHT   4 //Верхний правый
#define SEG_7_BOTLEFT   5 //Нижний левый
#define SEG_7_BOTRIGHT  6 //Нижний правый
#define SEG_7_DOT       7 //Точка (минус)
//#define SEG_7_SYNCBIT  

typedef struct
{
  unsigned char volatile * p_ucPort;     //Адрес порта
  unsigned char volatile * p_ucPulsePin; //Куда выдавать импульс синхронизации
//  char cPulseBit;                        //маска
  unsigned char volatile Data[8];
} seg7;


Также существовали
void Seg7_Init( seg7 & Segment,
unsigned char volatile * p_ucPort,
char * p_cSegArr, //Массив, где по порядку сложены биты сегментов
);
и
void Seg7_Echo(char cSymbol, bool dot, seg7 & Segment);

Далее можно было использоват
Seg7_Echo ( 'A', 0, &seg[0]);

Болшим код становится из-за доволно громоздкого Seg7_Echo(), в котором внутри просто стоит switch. Иначе не смог придумать вывода на 7-сегментники sad.gif а далше просто ползовался тем, что уже было smile.gif
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
- - Aesthete Animus   2aspID Вы и в самом деле теряете слишком много пам...   Jan 20 2008, 18:50
|- - aspID   Aesthete Animus Я с Вами совершенно согласен. Но ч...   Jan 21 2008, 04:00
|- - ae_   Цитата(aspID @ Jan 21 2008, 13:00) Aesthe...   Jan 21 2008, 07:12
|- - Aesthete Animus   Цитата(aspID @ Jan 21 2008, 07:00) Aesthe...   Jan 21 2008, 07:21
- - 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 Текстовая версия Сейчас: 22nd July 2025 - 11:30
Рейтинг@Mail.ru


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