Страница 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
Во первых настой порт С на вывод, ты же данные передаешь а не получаешь!
а во вторых, я честно говоря не знаком с этой библиотекой, но думаю что ножки контроллера должны быть определены перед использованием этой библиотеки
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 задаются не в тексте программы, а в свойствах компилятора.
Прогнал один и тот-же текст через CAVR версий 2.03.9 и 2.05.0. В последнем ресурсов сожрало на 15% больше. И старый компактностью не отличался, а новый вообще монстр по прожорливости.
Re: АTMega16A+LCM1602K не стартует
Добавлено: Сб июн 25, 2011 15:06:23
docentoff
на счет прожерливости согласен, но даже в 8 КБ что бы не вместиться,
это надо очень постараться)) поэтому и учу АВР а не пик