Страница 1 из 1

Atmega + LCD 40x4

Добавлено: Вс мар 05, 2017 21:42:48
Mon
Прошу совета.
Есть atmega8, на порту B которой висит кварц.
Есть LCD 40x04 (KS0066 двухчиповый), который при имеющейся трассировки висит на ногах:
PD4 - PC0
PD5 - PC1
PD6 - PC2
PD7 - PC3
RW - PC4
RS - PC5
E1 - PD2
E2 - PD3
В СVAVR есть библиотека для подключения дисплея, но привязывается полностью к порту, а не к отдельным выводам МК, типа:
#

Код: Выделить всё

asm
   .equ __lcd_port=0x12 ;PORTB
#endasm
Вопрос есть ли библиотека, которая позволит настроится на подключения к разным выводам МК?
Будет ли работать, если ЛСД и кварц будут висеть на одном порту?
Или всё-таки тулить МК с большим количеством выводов и пользоваться стандартными средствами CVAVR?

Re: Atmega + LCD 40x4

Добавлено: Вс мар 05, 2017 21:56:43
AndTer
Зачем плодить одинаковые сообщения? Там же уже началось обсуждение...
http://radiokot.ru/forum/viewtopic.php? ... 1#p3030671

Re: Atmega + LCD 40x4

Добавлено: Вс мар 05, 2017 21:59:32
Mon
Решил, что мой задать вопрос в теме по CVAVR было некорректно с моей стороны по причине, что даже модератор не может ответить... (это не претензия к модератору, считаю, что не в ту тему написал)

Re: Atmega + LCD 40x4

Добавлено: Пн мар 06, 2017 01:41:38
Аlex
Могли бы попросить - я перенёс бы сообщения.
Ту тему почистил.

Re: Atmega + LCD 40x4

Добавлено: Пн мар 06, 2017 11:38:07
pokk
Wizard в CVAVR вроде как позволяет указывать используемые выводы, правда сам им не когда не пользовался.

Re: Atmega + LCD 40x4

Добавлено: Пн мар 06, 2017 12:15:39
pyzhman
pokk писал(а):...вроде как позволяет...
Не позволяет. Всё жёстко привязано к одному из выбранных портов.

upd.
см. ниже -
http://radiokot.ru/forum/viewtopic.php? ... 1#p3031751

Re: Atmega + LCD 40x4

Добавлено: Пн мар 06, 2017 13:11:54
Alkul
Mon писал(а):Вопрос есть ли библиотека, которая позволит настроится на подключения к разным выводам МК?
Что мешает её написать, если она Вам нужна?
Mon писал(а):Будет ли работать, если ЛСД и кварц будут висеть на одном порту?
Когда МК настроен на работу с внешним кварцем, это уже не выводы PB6, PB7 порта B, это выводы XTAL1, XTAL2. И, вообще говоря, если библиотека написана грамотно, она не затрагивает свободные линии порта, даже если использует часть линий этого порта.
Mon писал(а):Или всё-таки тулить МК с большим количеством выводов и пользоваться стандартными средствами CVAVR?
Можно и так. А можно, чуть подумав, поменять в библиотеке запись

Код: Выделить всё

__lcd_port=0x12 ;PORTB
на записи (если Вам надо подключиться по указанной Вами "имеющейся трассировке"),

Код: Выделить всё

__lcd_portc=0x15 ;PORTC
__lcd_portd=0x12 ;PORTD
после чего найти в библиотеке те места, где происходит изменение состояний линий управления LCD и там, где идет изменение состояния выводов E1 и Е2, подставить имя __lcd_portd, а в остальных местах написать __lcd_portc.

Кстати, в приведенном Вами отрывке кода из библиотеки ошибка. Или она не для ATMega8, так как у ATMega8 адрес 0x12 - это регистр PORTD. А коль скоро нашлась одна нестыковка, то их может быть и несколько. Если библиотека для другого МК, то её надо ВСЮ проверять на предмет соответствия именно с ATMega8.
Нельзя бездумно копировать, надо и мозги подключать. Вы вот в форум пишете, значит, интернет есть. Что мешает даташит на МК скачать и сравнить все?

Re: Atmega + LCD 40x4

Добавлено: Вт мар 07, 2017 03:44:09
pokk
Не позволяет. Всё жёстко привязано к одному из выбранных портов.
А это тогда что такое ? CVAVR версии 2.05
Изображение

Re: Atmega + LCD 40x4

Добавлено: Вт мар 07, 2017 07:43:58
pyzhman
Не знал. Спасибо за инфу.

Re: Atmega + LCD 40x4

Добавлено: Чт мар 09, 2017 07:40:18
Mon
За инфу спасибо.
По поводу ошибки, это пример из библиотеки был выбран. Ещё не писалось ничего.
В wizard пересмотрю, есть ли у него выбор ноги для e2.
За написание или редактирование библиотеки - увы опыт не тот, буду крайне долго отлаживать.

Re: Atmega + LCD 40x4

Добавлено: Чт мар 09, 2017 22:59:57
Mon
Alkul писал(а):после чего найти в библиотеке те места, где происходит изменение состояний линий управления LCD и там, где идет изменение состояния выводов E1 и Е2, подставить имя __lcd_portd, а в остальных местах написать __lcd_portc.
Где-то так и предполагал. Попробую - отпишусь или кину кусок библы для проверки, если косяки вылезут.
Mon писал(а):В wizard пересмотрю, есть ли у него выбор ноги для e2.
Wizard позволяет подключить только один одночиповый дисплей.

Если интересно, пока что вот такой вариант по плате (приложен файл).
Затея - БК для авто с ЭБУ с общением по протоколу iso 14230 kwp2000.

Добавлено after 2 hours 32 minutes 10 seconds:
Пока что, чтобы поиграться, включил как по инструкции к библиотеке =)
может ли кто-нибудь прокомментировать почему так выходит?
Версия протеуса 7.7

Код: Выделить всё

lcd_gotoxy(0,0);
            lcd_puts("0123456789012345678901234567890123456789");
            lcd_gotoxy(0,1);
            lcd_puts("0000011111222223333344444555556666677777");   
            lcd_gotoxy(0,2);
            lcd_puts("9999988888777776666655555444443333322222");
            lcd_gotoxy(0,3);
            lcd_puts("9876543210987654321098765432109876543210");
Чувствую себя бараном, но походу проще будет перетрассировать плату под 16-ю мегу, чем библиотеку допилить под разные выводы дисплея.