Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
25.10.2011, 17:20
|
|
Временная регистрация
Регистрация: 04.07.2010
Адрес: город Омск
Сообщений: 72
Сказал спасибо: 6
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
Проблема подключения ЖКИ 16х4 к ATtmega8515
Доброго времени суток, господа. В процессе осваивания мира МК и исполнения по мере появления знаний моего проекта (перевод домашнего автоклава на полностью автоматизированное выполнение автоклавирования) столкнулся со следующей проблемой: необходимостью управления ЖКИ. В моём распоряжении появился ЖКИ без опознавательных знаков (фирма, марка и т.д.), т.к. был выпаян из некого технологического пульта. По экрану видно, что это 16 символьный, на 4 строчки (в самый раз). 16 выводов в ряд 2 отдельно с пометками "A" и "К". Далее я обратил внимание на бумажку приклеенную на один из 3-х чипов позади платы ЖКИ. C надписью:
AC164A
GA71H
04.63
D08779.
Обнаружилось, что это и есть тип ЖКИ и даже даташит на него есть:
http://catalog.gaw.ru/index.php?page=document&id=4049 (в формате PDF).
Программирую в CVAVR. Стандартные программные решения (примеры из самого CVAVR и те что нашёл в инете) не запустили это ЖКИ. Внешне он был как абсолютно мёртвый... хотя настройка контрастности позволяла увидеть знакоместа. Однако подключив его непосредственно к порту LPT мне удалось получить с помощью специальной программки все символы какие я хотел (но только на 2 верхние строчки, программка заточена под 16х2). Следовательно ЖКИ очень даже жив.
Судя по тому что я смог понять, проблема в неких таймингах... Это даже в даташите озвучено, но к сожалению английский и тем более технический для моего понимания сложен. Прошу помощи у вас. Возможно кто-то уже сталкивался с управлением ЖКИ, а возможно для кого-то прочитать даташит и разобраться в нём "как два пальца...". Если ресурсов встроенных библиотек CVAVR недостаточно, то возможно спасут вставки на ассемблере... В общем буду благодарен за любые предложение по решению этой проблемы... Сам я видимо с ней не совладаю в одиночку...
Спасибо.
Последний раз редактировалось orionSSV; 25.10.2011 в 17:26.
|
|
|
|
25.10.2011, 17:24
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: проблема подключения ЖКИ 16х4 к ATtmega8515
Да нет там никаких примудростей. Предельная частота клока по сигналу Enable 250 кГц. Пока вы код не запостили, трудно вам чем-то помочь.
При инитиализации надо кое-какие паузы соблидать. Но без кода это вилами по воде.
|
|
|
Сказали "Спасибо" Easyrider83
|
|
|
25.10.2011, 17:35
|
|
Временная регистрация
Регистрация: 04.07.2010
Адрес: город Омск
Сообщений: 72
Сказал спасибо: 6
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
Re: проблема подключения ЖКИ 16х4 к ATtmega8515
Да вот хоть этот (просто вывод информации на ЖКИ). Работает в протеусе на ура
#include ‹mega8515.h›
// Alphanumeric LCD Module functions
#include ‹alcd.h›
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Port E initialization
// Func2=In Func1=In Func0=In
// State2=T State1=T State0=T
PORTE=0x00;
DDRE=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
EMCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// USART disabled
UCSRB=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
// SPI initialization
// SPI disabled
SPCR=0x00;
// Alphanumeric LCD initialization
// Connections specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTA Bit 0
// RD - PORTA Bit 1
// EN - PORTA Bit 2
// D4 - PORTA Bit 4
// D5 - PORTA Bit 5
// D6 - PORTA Bit 6
// D7 - PORTA Bit 7
// Characters/line: 16
lcd_init(16);/* инициализация 2 строки, 16 символов */
lcd_clear(); /* Очистка дисплея */
lcd_gotoxy(0,0);
lcd_putsf("123");
lcd_gotoxy(0,1);
lcd_putsf("****************");
while(1){}
};
Как видно CVAVR использует свою библиотеку/заголовочный файл #include ‹alcd.h›.
Я даже делал, как советовали кому-то при решении подобной проблемы, а именно вставлял задержки пере инициализацией и выводом на экран и даже после него:
...
cd_init(16);/* инициализация 2 строки, 16 символов */
delay_ms(300);
lcd_clear(); /* Очистка дисплея */
delay_ms(300);
lcd_gotoxy(0,0);
delay_ms(300);
lcd_putsf("123");
delay_ms(300);
lcd_gotoxy(0,1);
delay_ms(300);
lcd_putsf("****************");
Последний раз редактировалось orionSSV; 25.10.2011 в 17:40.
|
|
|
|
25.10.2011, 17:45
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: проблема подключения ЖКИ 16х4 к ATtmega8515
Чем вам помочь? Выпаянный откуда-то дисплей не работает. Код верный. Хотя бы потому, что не ваш. Варианта три - либо диплей мертв, либо подключен не верно, либо частота процессора не верная. Эта библиотека использует 4х битную шину и флаг занятости. Возможно, она должна либо зависать, либо выстреливать с ошибкой в случае не получения флага. Не знаю, кто и как ее писал.
|
|
|
|
25.10.2011, 17:50
|
|
Почётный гражданин KAZUS.RU
Регистрация: 01.04.2009
Адрес: Рязань
Сообщений: 1,140
Сказал спасибо: 21
Сказали Спасибо 635 раз(а) в 344 сообщении(ях)
|
Re: проблема подключения ЖКИ 16х4 к ATtmega8515
У 4 строчников могет быть 2 отдельных строба (сигнал Е) - один на 2 верхних строчки и второй на 2 нижних. Доводилось в своё время по сиим граблям пройтись.
|
|
|
|
25.10.2011, 17:57
|
|
Временная регистрация
Регистрация: 04.07.2010
Адрес: город Омск
Сообщений: 72
Сказал спасибо: 6
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
Re: проблема подключения ЖКИ 16х4 к ATtmega8515
Сообщение от Easyrider83
|
Выпаянный откуда-то дисплей не работает.
|
ЖКИ работает 100%. Подключениe к LPT это подтвердило.
Сообщение от Easyrider83
|
Код верный. Хотя бы потому, что не ваш.
|
Код верный ещё и потому, что он работает в протеусе.
Подключён верно. Про частоту процессора - дафолтовская частота, без изменений.
Библиотеку писали те кто писал и сами КодВижн(по крайней мере она идёт в комплекте с ним). Возможно есть альтернативы? Кстати в ней написано
/*CodeVisionAVR C Compiler V2.04.9+
(C) 1998-2010 Pavel Haiduc, HP InfoTech S.R.L.
Universal alphanumeric LCD driver library
for the HD44780 LCD controller
Supports both ATxmega and non-ATxmega devices*/
Возможно, там тайминги другие, не подходящие к моиму ЖКИ...
|
|
|
|
25.10.2011, 17:58
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: проблема подключения ЖКИ 16х4 к ATtmega8515
Сообщение от _guardianangel
|
У 4 строчников могет быть 2 отдельных строба
|
Да не пугайте человека... В даташите один строб...
|
|
|
|
25.10.2011, 18:02
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: проблема подключения ЖКИ 16х4 к ATtmega8515
Сообщение от orionSSV
|
Возможно, там тайминги другие, не подходящие к моиму ЖКИ...
|
Возможно...
Писать своё или править чей-то исходник всё равно придётся... чтобы получить все 4-е строки...
|
|
|
|
25.10.2011, 18:04
|
|
Временная регистрация
Регистрация: 04.07.2010
Адрес: город Омск
Сообщений: 72
Сказал спасибо: 6
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
Re: проблема подключения ЖКИ 16х4 к ATtmega8515
Сообщение от st_1
|
Писать своё или править чей-то исходник всё равно придётся... чтобы получить все 4-е строки...
|
ВОТ В ЭТОМ ТО И ПРОБЛЕМА. Боюсь, это будет сложновато для меня...
|
|
|
|
25.10.2011, 18:39
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: проблема подключения ЖКИ 16х4 к ATtmega8515
Сообщение от orionSSV
|
ВОТ В ЭТОМ ТО И ПРОБЛЕМА. Боюсь, это будет сложновато для меня...
|
Упрощу вам задачу. Код работает без флага занятости. Подключать только D4-D7, RS и E. Переделайте под свои нужды.
В качестве бонуса процедура вывода на экран 32х битного числа.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 20:38.
|
|