Отговори на тема  [ 7 мнения ] 
Препоръчайте бърз :) AVR GCC (ATMega) LCD драйвер, моля 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение Препоръчайте бърз :) AVR GCC (ATMega) LCD драйвер, моля
Препоръчайте бърз :) AVR GCC (ATMega) LCD драйвер, моля

Позлвам тоя
http://winavr.scienceprog.com/example-a ... brary.html
но ми се струва бавен.
Не, че съм правил сметки от къде се ограничава скоростта, но така ми се струва.
(Около 4-5 gotoXY и цикли за буквички отнемат около 25мс на 16МХц АТМега128)

(ПП глупостта на демото с progress bar-а не е важна :))


Съб Мар 26, 2011 9:55 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение 
Ами просто оправи този драйвер.
Навсякъде говори за 74HC164, а не се ползва.
LCD_RW е сложен само за урашение.
Времената в инициализацията не са верни.

Виж дейташита за твоя диспей и навсякде където е сложил _delay_ms го замени с нопове или луп от нопове.

_________________
Warriors of the Night, ASSEMBLER!!!


Нед Мар 27, 2011 9:47 am
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение 
Благодаря!
Явно познаваш тоя драйвер, та да питам (моите познания по C все още са доста слаби) - дали драйверът е организиран по добър начин:
- предаването на параметри;
- заделянето на локални променливи;
...
Някъде бях видял драйвер направен на asm - като .s файл, но не мога да го намеря - дали не е по-добре целият драйвер на е на asm?
(Такива индикации ползвам от времето, когато 8051 бяха най-популярните микроконтролери :) и не съм се замислял за бързодействие. Но винаги до сега съм писал изцяло на Asm)

Вероятно мога да организирам и по-голяма част от програмата да е по прекъсвания, за да намалят приоритета на LCD обръщенията (в главната програма).
И/или да разпределя писането по LCD в времето, между останалите задачи.
Нали е ясно, че не самата скорост на извеждане ми е проблем, а това, че останалите случки в главна програма се обслужват по-рядко?


Нед Мар 27, 2011 11:46 am
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение 
1. Не познавам драйвера, днес за първи път го видях.
2. Не знам дали е добре огранизиран. Нека другите колеги си изкажат мнението.
3. Не искам да започвам спора С vs ASM, за това ползвай това което ти е по-удобно.

_________________
Warriors of the Night, ASSEMBLER!!!


Нед Мар 27, 2011 12:25 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение 
При намаляване на delay (за сега - на око; оказа се, че входният му параметър е с плаваща запетая) работата значително се подобри - благодаря ти за ефективната идея.
(Естествено, много далеч съм от каквото и да е сравняване на Asm и C, а за спор въобще и не помислям :), - просто отчитам, че много късно се възползвам от предимствата на C :))


Нед Мар 27, 2011 12:40 pm
Профил ICQ WWW
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Чет Окт 02, 2008 10:24 pm
Мнения: 105
Мнение 
няма нужда закъснението между Е-високо и Е-ниско да е 1ms
LCP|=1<<LCD_E;
_delay_ms(1);
LCP&=~(1<<LCD_E);

, при мен ги карам с 5us, а сигурно може и няколко нопа закъснение
зависи от дисплея.

След пращането на всяка команда или символ в края има
едно закъснение _delay_ms(1);
То може да се избегне с полиране на BUSY бита на дисплея.
Това още може да намали времето.


Нед Мар 27, 2011 12:58 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 25, 2004 10:32 pm
Мнения: 710
Мнение 
Cino написа:
няма нужда....


Намалих времената до х2 на необходимите граници.
Навсякъде, където е необходимо, се ползват delay (т.е. не е загубено адаптирането спрямо честотата на процесора).
Обработва се BF (Busy flag).

Значително се подобри скоростта.
Разликата във времето между 4 и 8 битовия интерфейс също намаля значително.

Благодаря на всички!


Прикачени файлове:
Коментар на файл: втора версия :)
Все пак се наложи да му сложа NOP (не се отрази забележимо на времената)

L329nb.rar [5.16 KiB]
130 пъти
Коментар на файл: (първа версия)
LCD_Lib.rar [4.78 KiB]
159 пъти
Нед Мар 27, 2011 6:57 pm
Профил ICQ WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 7 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни