Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Медленно выводится информация на LCD
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
BeginnerAVR
Здравствуйте!
Прошу проконсультировать и помочь в следующем вопросе.

Доброго времени суток!
Подключил LCD NOKIA 1100 к attinу2313.
Все работает. Только очень медленно выводится текст и очищается экран.
Если сравнивать скорость вывода информации с тем, что на телефоне - просто зловеще медленно.
чтобы устранить делалось следующее:
Менял частоту тактирования - от 10 Мгц до 50 кГц
Занижал delay_ms или полностью убирал строку в следующей процедуре

CODE
void Lcd_Write(char cd,unsigned char c){
char i;
cs = 0;
sclk = 0;
sda = cd;
sclk = 1;

for(i=0;i<8;i++){
sclk = 0;
if(c & 0x80)
sda = 1;
else
sda = 0;
sclk = 1;
c <<= 1;
delay_ms(20);
}
cs = 1;
}



Бесполезно.
Кто сможет посоветовать, буду благодарен
SortoVaritu
Цитата(BeginnerAVR @ Oct 27 2011, 11:58) *
Здравствуйте!
Прошу проконсультировать и помочь в следующем вопросе.

Доброго времени суток!
Подключил LCD NOKIA 1100 к attinу2313.
Все работает. Только очень медленно выводится текст и очищается экран.
Если сравнивать скорость вывода информации с тем, что на телефоне - просто зловеще медленно.
чтобы устранить делалось следующее:
Менял частоту тактирования - от 10 Мгц до 50 кГц
Занижал delay_ms или полностью убирал строку в следующей процедуре

CODE
void Lcd_Write(char cd,unsigned char c){
char i;
cs = 0;
sclk = 0;
sda = cd;
sclk = 1;

for(i=0;i<8;i++){
sclk = 0;
if(c & 0x80)
sda = 1;
else
sda = 0;
sclk = 1;
c <<= 1;
delay_ms(20);
}
cs = 1;
}



Бесполезно.
Кто сможет посоветовать, буду благодарен


Я пока вижу проблему в delay_ms(20). задержка в 20 мс это очень много
Что происходит если ее убираете? что меняется?
BeginnerAVR
Цитата(SortoVaritu @ Oct 27 2011, 13:49) *
Я пока вижу проблему в delay_ms(20). задержка в 20 мс это очень много
Что происходит если ее убираете? что меняется?


Доброго дня!
Менял на 1 мс. (побыстрее чуточку)
Экран очищается от "мусора" за 40(!!!) секунд. Только что измерил время.

Пробовал ставить вместо задержки вычисление произведения.

Ничего, что давало бы положительный результат.
SortoVaritu
Хммм... нужно глядет код где вызывается процедура.

А вот это что такое?

if(c & 0x80)
sda = 1;

с & 0x80 может быть либо 0 либо 0х80


......... не заметил c <<= 1; теперь понятно
BeginnerAVR
Цитата(SortoVaritu @ Oct 27 2011, 14:20) *
Хммм... нужно глядет код где вызывается процедура.

А вот это что такое?

if(c & 0x80)
sda = 1;

с & 0x80 может быть либо 0 либо 0х80



Исходник был взят здесь
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=84534&start=0&postdays=0&postorder=asc&highlight=&sid=751fd3a996d49589b5c1871c68fadc57

Я "вожусь" с микроконтроллерами первую неделю и много чего не знаю, что получается гуглю, где гугл молчит - спрашиваю.
XVR
Уберите задержку вообще. Еще лучше перейти на аппаратный SPI (если он есть в вашей attinу2313). Программный SPI - вещь дюже медленная wink.gif
SortoVaritu
Насколько я понял из донорского кода там задержка Delay10TCYx(20) = 200 тактам; Если убрать delay_ms(20) - самый быстрый вариант.
Их схема работает на 1MHz

SPI вроде есть в 2313
BeginnerAVR
Цитата(SortoVaritu @ Oct 27 2011, 15:53) *
Насколько я понял из донорского кода там задержка Delay10TCYx(20) = 200 тактам; Если убрать delay_ms(20) - самый быстрый вариант.
Их схема работает на 1MHz

SPI вроде есть в 2313



Если полностью убрать delay - тишина. Не происходит ничего вообще (вне зависимости от такт. частоты)

И именно поэтому я появился на форуме, так как перепробовал практически все из того, что знал
SortoVaritu
в том и проблема, что вы делаете слишком большую задержку - милисекунды. Вам же нужно делать микросекунды

Если
Delay10KTCYx(100); // 1 Sec delay

то сколько будет ?
Delay10TCYx(20);

Надо посчитать.

Непонятно вот это:
Код
Delay10KTCYx(100);                // 1/2 Sec delay
Lcd_Write(CMD,0xa6); // normal display (non inverted)
Delay10KTCYx(100);                // 1 Sec delay


Как в первом случае задержка на 0.5 секунды а во втором задержка на 1 секунду.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.