| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Препоръчайте бърз :) AVR GCC (ATMega) LCD драйвер, моля http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=8744 |
Страница 1 от 1 |
| Автор: | NikB [ Съб Мар 26, 2011 9:55 pm ] |
| Заглавие: | Препоръчайте бърз :) AVR GCC (ATMega) LCD драйвер, моля |
Препоръчайте бърз Позлвам тоя http://winavr.scienceprog.com/example-a ... brary.html но ми се струва бавен. Не, че съм правил сметки от къде се ограничава скоростта, но така ми се струва. (Около 4-5 gotoXY и цикли за буквички отнемат около 25мс на 16МХц АТМега128) (ПП глупостта на демото с progress bar-а не е важна |
|
| Автор: | ike [ Нед Мар 27, 2011 9:47 am ] |
| Заглавие: | |
Ами просто оправи този драйвер. Навсякъде говори за 74HC164, а не се ползва. LCD_RW е сложен само за урашение. Времената в инициализацията не са верни. Виж дейташита за твоя диспей и навсякде където е сложил _delay_ms го замени с нопове или луп от нопове. |
|
| Автор: | NikB [ Нед Мар 27, 2011 11:46 am ] |
| Заглавие: | |
Благодаря! Явно познаваш тоя драйвер, та да питам (моите познания по C все още са доста слаби) - дали драйверът е организиран по добър начин: - предаването на параметри; - заделянето на локални променливи; ... Някъде бях видял драйвер направен на asm - като .s файл, но не мога да го намеря - дали не е по-добре целият драйвер на е на asm? (Такива индикации ползвам от времето, когато 8051 бяха най-популярните микроконтролери Вероятно мога да организирам и по-голяма част от програмата да е по прекъсвания, за да намалят приоритета на LCD обръщенията (в главната програма). И/или да разпределя писането по LCD в времето, между останалите задачи. Нали е ясно, че не самата скорост на извеждане ми е проблем, а това, че останалите случки в главна програма се обслужват по-рядко? |
|
| Автор: | ike [ Нед Мар 27, 2011 12:25 pm ] |
| Заглавие: | |
1. Не познавам драйвера, днес за първи път го видях. 2. Не знам дали е добре огранизиран. Нека другите колеги си изкажат мнението. 3. Не искам да започвам спора С vs ASM, за това ползвай това което ти е по-удобно. |
|
| Автор: | NikB [ Нед Мар 27, 2011 12:40 pm ] |
| Заглавие: | |
При намаляване на delay (за сега - на око; оказа се, че входният му параметър е с плаваща запетая) работата значително се подобри - благодаря ти за ефективната идея. (Естествено, много далеч съм от каквото и да е сравняване на Asm и C, а за спор въобще и не помислям |
|
| Автор: | Cino [ Нед Мар 27, 2011 12:58 pm ] |
| Заглавие: | |
няма нужда закъснението между Е-високо и Е-ниско да е 1ms LCP|=1<<LCD_E; _delay_ms(1); LCP&=~(1<<LCD_E); , при мен ги карам с 5us, а сигурно може и няколко нопа закъснение зависи от дисплея. След пращането на всяка команда или символ в края има едно закъснение _delay_ms(1); То може да се избегне с полиране на BUSY бита на дисплея. Това още може да намали времето. |
|
| Автор: | NikB [ Нед Мар 27, 2011 6:57 pm ] | ||||||||||||
| Заглавие: | |||||||||||||
Намалих времената до х2 на необходимите граници. Навсякъде, където е необходимо, се ползват delay (т.е. не е загубено адаптирането спрямо честотата на процесора). Обработва се BF (Busy flag). Значително се подобри скоростта. Разликата във времето между 4 и 8 битовия интерфейс също намаля значително. Благодаря на всички!
|
|||||||||||||
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|