Самый эффективный способ понять, что не так - посмотреть ассемблерный листинг. И пошаговое исполнение в симуляторе студии - то же очень помогает. Ещё можно чуть поменять код. Вместо
Какая, блин, динамическая память? Это статический массив, хоть и расположен в ОЗУ. Компилятор просто обязан следить за тем, уместится ли он в память(точнее это задача линкера, но с WinAVR не работал, может там отдельного линкера нет).
Сорри, действительно не заметил, что он статический. Линкер там есть конечно, GCC в этом плане наоборот реализован образцово.
К сожалению, сейчас нет времени разбираться, но по-видимому всё же можно заставить его отслеживать память, путём принудительного задания размеров секций. Надо смотреть дефолтные линкер-скрипты, и разбираться, как он вообще отслеживает объем оперативной памяти. А с помощью avr-size your_firmware.elf можно посмотреть размер секции bss - это статическая оперативная память.
И получил результат еще хуже. На месте тех каракуль которые у меня рисовались щас вообще рисуется хаотический шум. Такое ощущение что я записал массив но читаю не с него а вообще с произвольного участка памяти МК Если нужно могу сфоткать
Цитата:
Если да, то проверьте значения CHAR_H и CHAR_W
Значения там точно правильные, еслибы нет то было бы не смещение а обрезание букв
_________________ Шуруп забитый молотком держится намного лучше чем гвоздь закрученный отверткой!
Я так понимаю Ваш шрифт тоже с пропуском первых 32 символов? Размер символов указал правильно но символы не те выводятся что нужно... Кодировка таже? Английский текст печатает нормально а русский - иероглифы
_________________ Шуруп забитый молотком держится намного лучше чем гвоздь закрученный отверткой!
Последний раз редактировалось Зукс Сб июл 07, 2012 18:33:42, всего редактировалось 1 раз.
Та же или не та же - от Вас зависит. Файл исходника должен быть в правильной кодировке, используемой автором (скорее всего win-1251). А английские символы во всех однобайтовых кодировках одинаковы, потому там Вы разницы не увидите.
я из файла использовал только массив. Английский текст пишет нормально а русский - нет. Я вижу что в массиве используется uchar а не char. У меня пишет ошибку на uchar
_________________ Шуруп забитый молотком держится намного лучше чем гвоздь закрученный отверткой!
Последний раз редактировалось Зукс Сб июл 07, 2012 18:40:14, всего редактировалось 1 раз.
Правильно - компилятор воспринимает Ваши строки в файле .c в той кодировке, в которой сам файл. Массив делался под определенную кодировку, и Ваши строки должны быть именно ею написаны. Компилятор буквы не понимает, какие байты в исходнике идут - такие он и линкует.
Add: uchar здесь не причем! Вы можете написать в файле
const unsigned char str[] = "Привет, кагдила";
В какой кодировке файл исходника сохраните, в такой кодировке строка и будет. Массив символов для дисплея сделан под конкретную кодировку, потому что в других кодировках порядок символов другой (и соответственно их коды). Исходник надо сохранить в другой кодировке.
_________________ Giggity giggity goo!
Последний раз редактировалось Foks Сб июл 07, 2012 20:56:32, всего редактировалось 1 раз.
Как сохранить исходник в правильной кодировке? Я попробовал в блокноте файл пересохранить с кодировкой ansi, не помогло. У автора файл с кодировкой ansi
_________________ Шуруп забитый молотком держится намного лучше чем гвоздь закрученный отверткой!
Я так понимаю Ваш шрифт тоже с пропуском первых 32 символов?
Не существует первых 32-х символов. Там управляющие коды (табуляция, перевод строки, возврат каретки и т.д.). Символ 32 - пробел.
Цитата:
Как сохранить исходник в правильной кодировке? Я попробовал в блокноте файл пересохранить с кодировкой ansi, не помогло. У автора файл с кодировкой ansi
Попробуйте akelpad, например. По-моему, он это умеет.
Я ставил ANSI кириллица но ничего не изменилось. Может я неправильную кодировку выбираю?
А вы задайте символ кодом. Для явно заданных строк нужно настройки компилятора менять, скорее всего.
А у вас там при вычислении индекса в массиве случайно нигде нет смещения с использованием типа char? Русские буквы имеют коды больше 127, а в типе char, а не unsigned char это отрицательные значения.
Кодом это долго... Массив у меня unsigned char, я думаю там незачем ставить char
Кодом для проверки номеров символов. Вместо строки написать коды символов (не забудьте ноль в конце строки ). Речь не о массиве, а о вычислении смещения по коду символа. Там не должно быть char. Только unsigned char. И следите за тем, чтобы при умножении кода символа на размер символа не получилось округления до 0-255.
Заголовок сообщения: Re: Дисплеи от мобильных телефонов- осцилограммы работы
Добавлено: Сб июл 07, 2012 21:26:38
Друг Кота
Карма: 46
Рейтинг сообщений: 590
Зарегистрирован: Вт май 19, 2009 09:27:30 Сообщений: 3258 Откуда: Украина
Рейтинг сообщения:0
Здравствуйте! Нашёл дисплейчик от Нокии 6100 с надписью на обороте MD201109123456 (фото прилигаю). Кто-нибудь запускал дисплейчик такой ревизии? Есть под него набор команд, примерчик, библиотека? Заранее благодарю.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения