-
- непонятно к чему это городить. Проще - uint8_t DSP_BUF[ROWS][COLS], заполнение - memset - zeleny(10.09.2013 20:27)
- Интерфейс с дисплеем HD44780 из реального проекта см. ниже. Вся суть в интерфейсах. fk0(2946 знак., 10.09.2013 15:14)
- зачем это все? Nikolay801_(229 знак., 10.09.2013 15:31)
- Есть несколько экранов, между которыми можно переключаться. Каждый живёт своей жизнью. Физический экран может быть меньше логического и первый может плавать в последнем (используется для показа уплывшего наверх текста в основном). Разные символы fk0(853 знак., 10.09.2013 15:44)
- А еще фреймбуфер можно по связи передавать с Южного полюса в теплый московский офис и видеть на экране ПК то же самое, что наладчик, находящийся на Южном полюсе, сейчас на экране прибора видит :) - rezident(10.09.2013 17:41)
- PS: принцип работы такой, что для каждого знакоместа в фреймбуфере есть признак обновления и 500 раз в секунду, условно, проверяется фреймбуффер для видимой части фреймбуфера и отрисовываются несколько символов, требующих обновления, в дисплее (не fk0(143 знак., 10.09.2013 15:57)
- Килобайты набирать ;) - Гyдвин(10.09.2013 15:34)
- Есть несколько экранов, между которыми можно переключаться. Каждый живёт своей жизнью. Физический экран может быть меньше логического и первый может плавать в последнем (используется для показа уплывшего наверх текста в основном). Разные символы fk0(853 знак., 10.09.2013 15:44)
- Симпатичненько. Только надо бы uint_least8_t заменить на int, а контроллер профессионального уровня - на 32-разрядный, ессно :-) - SciFi(10.09.2013 15:20)
- Контроллер был любительского уровня (AT91SAM7X512). Я тогда профессиональные ещё не освоил. Но профессиональное программирование оплачивается сильно лучше, вот так-то. - fk0(10.09.2013 15:46)
- ARM и uint_least8_t? Ну это же классический случай преждевременной оптимизации :-) - SciFi(10.09.2013 15:55)
- Я был молод и неумён. Теперь я знаю, что нужно PIC и uint_fast8_t. - fk0(10.09.2013 15:58)
- ARM и uint_least8_t? Ну это же классический случай преждевременной оптимизации :-) - SciFi(10.09.2013 15:55)
- Контроллер был любительского уровня (AT91SAM7X512). Я тогда профессиональные ещё не освоил. Но профессиональное программирование оплачивается сильно лучше, вот так-то. - fk0(10.09.2013 15:46)
- зачем это все? Nikolay801_(229 знак., 10.09.2013 15:31)
- Пока очистку буфера сделал так (работает): Mazur(664 знак., 10.09.2013 08:18 - 08:43)
- --> fk0(357 знак., 10.09.2013 10:39)
- Про memset: а букварь на что? Неужели только как подставка под кружку? - SciFi(10.09.2013 08:34)
- Букварь - K&R? - Mazur(10.09.2013 08:42)
- Зачем вам здесь структура? Сделайте себе двухмерный массив u08 symbol[MAX_LINES][MAX_CHARS] и живите припеваючи. А обращаться к нему будете, как к матрице: litera=symbol[номер_строки][номер_столбца]; - Ксения(10.09.2013 00:39)
- "Сделав" тип стринг, он будет на основе его готовить строки(в том числе и в программной памяти) для вывода на экран. Наглядно будет писать const flash string Hello = {"Hello"};. Заодно и typedef освоит. - Юра(10.09.2013 00:51,
)
- Заполнять такой (двухмерный) масив пробелами можно, как единый блок памяти. Про это вам SciFi уже сказал. - Ксения(10.09.2013 00:44)
- "Сделав" тип стринг, он будет на основе его готовить строки(в том числе и в программной памяти) для вывода на экран. Наглядно будет писать const flash string Hello = {"Hello"};. Заодно и typedef освоит. - Юра(10.09.2013 00:51,
- Выкиньте свой компилер - это первое. Чтоб не пропускал такие вещи как ';' в декларации размера массива. (Даю наводку: уберите точку с запятой из дифайнов). Во-вторых - зачем одели массивы в структуры? Вы их копировать что ли хотите? Можно же Юра(122 знак., 10.09.2013 00:21,
)
- обращаться пора уже с помощью printf и SetLcdPos, иначе никаких преимуществ по сравнению с ассемблером он не получит. И тогда проще иметь одномерный массив, с переносом в putchar. И вообще массив не нужен. Только для обновления экрана в случае Vladimir Ljaschko(1592 знак., 10.09.2013 03:55 - 04:18)
- Не работает. Притом как дошел до указателей и массивов, так и не работает. Компилятор делает пустышку ret. Mazur(122 знак., 10.09.2013 16:34)
- а MaxX*MaxY за размер char не переваливает? и все таки Nikolay801_(28 знак., 10.09.2013 17:00)
- Ну, это просто проверить: задать константу явно меньше 255. Или нет? - Bill(11.09.2013 09:24)
- Пустышка может указывать на оптимизацию. Новички часто забывают, что компилятор, вообще-то, не всегда обязан выдавать машинный код :-) - SciFi(10.09.2013 17:47)
- Да, оказалось, оптимизация виновата. - Mazur(10.09.2013 20:23)
- Неверный вывод. Скорее всего код кривой. Вот оптимизатор его и выкинул и был прав. - Apтём(10.09.2013 20:33)
- Чем кривой? 1 в 1 взят из примера Vladimir Ljaschko. Где косяк? - Mazur(10.09.2013 20:40)
- Проект давай, будем смотреть. - Vladimir Ljaschko(11.09.2013 09:42)
- Косяк - в ожидании того, что компилятор выдаст машинный код, строго привязанный к каждой строчке исходника. Современные компиляторы (не профессионального уровня, конечно) давно уже от этого отошли. Что ещё раз доказывает, что лазить то и дело в SciFi(57 знак., 10.09.2013 21:26)
- Где пример (а лучше проект полностью)? Apтём(196 знак., 10.09.2013 20:56)
- Чем кривой? 1 в 1 взят из примера Vladimir Ljaschko. Где косяк? - Mazur(10.09.2013 20:40)
- Неверный вывод. Скорее всего код кривой. Вот оптимизатор его и выкинул и был прав. - Apтём(10.09.2013 20:33)
- Да, оказалось, оптимизация виновата. - Mazur(10.09.2013 20:23)
- а MaxX*MaxY за размер char не переваливает? и все таки Nikolay801_(28 знак., 10.09.2013 17:00)
- Позиции на экране x, y уже считаем не от 0, а от 1. Скажем 1, 1 - 1 строка 1 символ. Так? - Mazur(10.09.2013 14:33)
- Да, так исторически сложилось, как в команде gotoxy на старом добром Паскале. - Vladimir Ljaschko(10.09.2013 15:30)
- Двумерный массив-образ экрана в SRAM конечно редко нужен. Это надо крутым быть или наоборот, эмбрионом. А вот такие массивы во флеши - это менюшки, заставки. - Юра(10.09.2013 08:43,
)
- Не работает. Притом как дошел до указателей и массивов, так и не работает. Компилятор делает пустышку ret. Mazur(122 знак., 10.09.2013 16:34)
- обращаться пора уже с помощью printf и SetLcdPos, иначе никаких преимуществ по сравнению с ассемблером он не получит. И тогда проще иметь одномерный массив, с переносом в putchar. И вообще массив не нужен. Только для обновления экрана в случае Vladimir Ljaschko(1592 знак., 10.09.2013 03:55 - 04:18)
- Функция очистки буфера - это memset (см. букварь): "memset(buffer, ' ', sizeof(buffer));". Про массив тоже см. букварь: "char disp_buf[LINES][COLUMNS];". - SciFi(10.09.2013 00:12)
- Ну, если функция очистки памяти используется неоднократно, то можно и свою написать. Например: Bill(104 знак., 10.09.2013 06:02)