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

АTMega16A+LCM1602K не стартует

Добавлено: Пт июн 24, 2011 20:46:36
docentoff
Здарвствуйте только начал заниматься АВР контроллерами, с миганием светодиодами и роботом машинкой закончил решил перейти на LCD дисплейчики

были приобретены LCM1602K-NSW-BBW х3
на макетке через кусок шлейфа от FDD, он был само собой прикручен к порту С по 4х битной шине, подсветка работает(не с контроллера) контрастность регулируется, данные с проца по осцилографу идут.

100 раз проверил правильность подключения по даташиту контроллера и дисплея, проверил фузы и указанную частоту проца в мастере проверил порты контроллера (на случай вдруг чего то таки не так подпаял),

дисплей запускается, загораются 2 строчки 1а поярче 2я по тусклее, дальше тишина.

Использую CVAVR+STK200\300, даташит на дисплей, и исходник программы для CV вроде прикрепил.

Занимаюсь камасутрой уже дня 3, результатов так и не добился, подскажите, в чем мой косяк?

Re: АTMega16A+LCM1602K не стартует

Добавлено: Пт июн 24, 2011 23:11:16
jordan
Во первых настой порт С на вывод, ты же данные передаешь а не получаешь!

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

DDRC=0xff;  

а во вторых, я честно говоря не знаком с этой библиотекой, но думаю что ножки контроллера должны быть определены перед использованием этой библиотеки

Re: АTMega16A+LCM1602K не стартует

Добавлено: Пт июн 24, 2011 23:42:50
docentoff
выставил порт на вывод, та же песня,и ладно бы не работал 1 дисплей щас перепаял все 3 с указанием портов, заменил контроллер,перепрошил та же муть, попробывал подключать #include <lcd.h>

выдает ошибку

Error: C:\cvavreval\LCD\List\lcd.asm(1423): Undefined symbol: __lcd_port

с набором из 30 строк

из асма скомпиленного

__lcd_delay_G100:
ldi r31,15
__lcd_delay0:
dec r31
brne __lcd_delay0
RET
__lcd_ready:
in r26,__lcd_direction
andi r26,0xf ;set as input
out __lcd_direction,r26
sbi __lcd_port,__lcd_rd ;RD=1
cbi __lcd_port,__lcd_rs ;RS=0
__lcd_busy:
RCALL __lcd_delay_G100
sbi __lcd_port,__lcd_enable ;EN=1
RCALL __lcd_delay_G100
in r26,__lcd_pin
cbi __lcd_port,__lcd_enable ;EN=0
RCALL __lcd_delay_G100
sbi __lcd_port,__lcd_enable ;EN=1
RCALL __lcd_delay_G100
cbi __lcd_port,__lcd_enable ;EN=0
sbrc r26,__lcd_busy_flag
rjmp __lcd_busy
RET
__lcd_write_nibble_G100:
andi r26,0xf0
or r26,r27
out __lcd_port,r26 ;write
sbi __lcd_port,__lcd_enable ;EN=1
CALL __lcd_delay_G100
cbi __lcd_port,__lcd_enable ;EN=0
CALL __lcd_delay_G100
RET
__lcd_write_data:
cbi __lcd_port,__lcd_rd ;RD=0
in r26,__lcd_direction
ori r26,0xf0 | (1<<__lcd_rs) | (1<<__lcd_rd) | (1<<__lcd_enable) ;set as output
out __lcd_direction,r26
in r27,__lcd_port
andi r27,0xf
ld r26,y
RCALL __lcd_write_nibble_G100
ld r26,y
swap r26
RCALL __lcd_write_nibble_G100
sbi __lcd_port,__lcd_rd ;RD=1
JMP _0x2020001
__lcd_read_nibble_G100:
sbi __lcd_port,__lcd_enable ;EN=1
CALL __lcd_delay_G100
in r30,__lcd_pin ;read
cbi __lcd_port,__lcd_enable ;EN=0
CALL __lcd_delay_G100
andi r30,0xf0
RET
_lcd_read_byte0_G100:
CALL __lcd_delay_G100
RCALL __lcd_read_nibble_G100
mov r26,r30
RCALL __lcd_read_nibble_G100
cbi __lcd_port,__lcd_rd ;RD=0
swap r30
or r30,r26
RET


вот что наваял CV, цитата кода с ошибкой

на сколько я понял не определена что то типо переменной обозванной __lcd_port, методом научного поиска с начала программы объявления __lcd_port не нашел

с библиотекой alcd.h таких глюков нету по умолчанию cv подцепляет именно ее

Re: АTMega16A+LCM1602K не стартует

Добавлено: Сб июн 25, 2011 00:15:49
eufs
Подключи процедуру на 50мкс, объяви порты и проверь. Модуль на асме.

Re: АTMega16A+LCM1602K не стартует

Добавлено: Сб июн 25, 2011 00:23:40
docentoff
объявил порт С как вывод

выставил задержки delay_ms(5000) реакции 0

пытаюсь заинклудить твой код через

#asm

#endasm

матерится на переменные

цеплял вместо инициализации

Re: АTMega16A+LCM1602K не стартует

Добавлено: Сб июн 25, 2011 10:05:55
jordan
изучи нормально библиотеку для работы с дисплеем, там точно должен быть определен порт, и ножки к которым ты подключил дисплей!!! От куда компилятор знает куда ты повесил дисплей!!! А если не получится работать с библиотекой, посмотри в инете точно можно обойтись и без библиотеки, найди набор команд для инициализации и работай без библиотеки

Re: АTMega16A+LCM1602K не стартует

Добавлено: Сб июн 25, 2011 11:23:36
zhu4er
для docentoff

А вот эту книжку ты читал: http://depositfiles.com/files/jg2dbcptj

Re: АTMega16A+LCM1602K не стартует

Добавлено: Сб июн 25, 2011 13:13:50
docentoff
само собой читал

кстати разобрался в чем дикий, тупой косяк был

в следств моей невнимательности, и забывчивости, а так же особенности изображенной Лутом печатки и кривой разводки платы пришлось повесить дисплейчик на порт С по 4х битной шине, все нормально, контроллерЫ прошивались дисплеИ не запускались, найден косяк:

В настройках фузов был включен JTAG, и эта ЗаРаЗа не давала работать LCDхе, после перепрошивки фуз битов, с отключением JTAGa все заработало

Спасибо всем откликнувшимся!!

Re: АTMega16A+LCM1602K не стартует

Добавлено: Сб июн 25, 2011 14:20:47
Volly
jordan писал(а):там точно должен быть определен порт, и ножки к которым ты подключил дисплей!!!

В этом странннном компиляторе порт и ножки LCD задаются не в тексте программы, а в свойствах компилятора. :shock:
Прогнал один и тот-же текст через CAVR версий 2.03.9 и 2.05.0. В последнем ресурсов сожрало на 15% больше. И старый компактностью не отличался, а новый вообще монстр по прожорливости. :hunger:

Re: АTMega16A+LCM1602K не стартует

Добавлено: Сб июн 25, 2011 15:06:23
docentoff
на счет прожерливости согласен, но даже в 8 КБ что бы не вместиться,
это надо очень постараться)) поэтому и учу АВР а не пик