АTMega16A+LCM1602K не стартует
АTMega16A+LCM1602K не стартует
Здарвствуйте только начал заниматься АВР контроллерами, с миганием светодиодами и роботом машинкой закончил решил перейти на LCD дисплейчики
были приобретены LCM1602K-NSW-BBW х3
на макетке через кусок шлейфа от FDD, он был само собой прикручен к порту С по 4х битной шине, подсветка работает(не с контроллера) контрастность регулируется, данные с проца по осцилографу идут.
100 раз проверил правильность подключения по даташиту контроллера и дисплея, проверил фузы и указанную частоту проца в мастере проверил порты контроллера (на случай вдруг чего то таки не так подпаял),
дисплей запускается, загораются 2 строчки 1а поярче 2я по тусклее, дальше тишина.
Использую CVAVR+STK200\300, даташит на дисплей, и исходник программы для CV вроде прикрепил.
Занимаюсь камасутрой уже дня 3, результатов так и не добился, подскажите, в чем мой косяк?
были приобретены LCM1602K-NSW-BBW х3
на макетке через кусок шлейфа от FDD, он был само собой прикручен к порту С по 4х битной шине, подсветка работает(не с контроллера) контрастность регулируется, данные с проца по осцилографу идут.
100 раз проверил правильность подключения по даташиту контроллера и дисплея, проверил фузы и указанную частоту проца в мастере проверил порты контроллера (на случай вдруг чего то таки не так подпаял),
дисплей запускается, загораются 2 строчки 1а поярче 2я по тусклее, дальше тишина.
Использую CVAVR+STK200\300, даташит на дисплей, и исходник программы для CV вроде прикрепил.
Занимаюсь камасутрой уже дня 3, результатов так и не добился, подскажите, в чем мой косяк?
- Вложения
-
- ADM1602K-NSW-FBS-3.3v (1).rar
- даташит на дисплей
- (865.66 КБ) 291 скачивание
-
- lcd.rar
- прошивка
- (1.35 КБ) 188 скачиваний
Re: АTMega16A+LCM1602K не стартует
Во первых настой порт С на вывод, ты же данные передаешь а не получаешь!
а во вторых, я честно говоря не знаком с этой библиотекой, но думаю что ножки контроллера должны быть определены перед использованием этой библиотеки
Код: Выделить всё
DDRC=0xff; а во вторых, я честно говоря не знаком с этой библиотекой, но думаю что ножки контроллера должны быть определены перед использованием этой библиотеки
Re: АTMega16A+LCM1602K не стартует
выставил порт на вывод, та же песня,и ладно бы не работал 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 подцепляет именно ее
выдает ошибку
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 не стартует
Подключи процедуру на 50мкс, объяви порты и проверь. Модуль на асме.
- Вложения
-
- 0802.asm
- (1.1 КБ) 152 скачивания
C0FFEE=12648430
Re: АTMega16A+LCM1602K не стартует
объявил порт С как вывод
выставил задержки delay_ms(5000) реакции 0
пытаюсь заинклудить твой код через
#asm
#endasm
матерится на переменные
цеплял вместо инициализации
выставил задержки delay_ms(5000) реакции 0
пытаюсь заинклудить твой код через
#asm
#endasm
матерится на переменные
цеплял вместо инициализации
- Вложения
-
- lcd.rar
- исходник на С
- (1.4 КБ) 157 скачиваний
Re: АTMega16A+LCM1602K не стартует
изучи нормально библиотеку для работы с дисплеем, там точно должен быть определен порт, и ножки к которым ты подключил дисплей!!! От куда компилятор знает куда ты повесил дисплей!!! А если не получится работать с библиотекой, посмотри в инете точно можно обойтись и без библиотеки, найди набор команд для инициализации и работай без библиотеки
- zhu4er
- Вымогатель припоя
- Сообщения: 544
- Зарегистрирован: Пт июн 04, 2010 17:40:13
- Откуда: Непокорный город-герой Севастополь
Re: АTMega16A+LCM1602K не стартует
Даже у стен есть уши...
Re: АTMega16A+LCM1602K не стартует
само собой читал
кстати разобрался в чем дикий, тупой косяк был
в следств моей невнимательности, и забывчивости, а так же особенности изображенной Лутом печатки и кривой разводки платы пришлось повесить дисплейчик на порт С по 4х битной шине, все нормально, контроллерЫ прошивались дисплеИ не запускались, найден косяк:
В настройках фузов был включен JTAG, и эта ЗаРаЗа не давала работать LCDхе, после перепрошивки фуз битов, с отключением JTAGa все заработало
Спасибо всем откликнувшимся!!
кстати разобрался в чем дикий, тупой косяк был
в следств моей невнимательности, и забывчивости, а так же особенности изображенной Лутом печатки и кривой разводки платы пришлось повесить дисплейчик на порт С по 4х битной шине, все нормально, контроллерЫ прошивались дисплеИ не запускались, найден косяк:
В настройках фузов был включен JTAG, и эта ЗаРаЗа не давала работать LCDхе, после перепрошивки фуз битов, с отключением JTAGa все заработало
Спасибо всем откликнувшимся!!
Re: АTMega16A+LCM1602K не стартует
jordan писал(а):там точно должен быть определен порт, и ножки к которым ты подключил дисплей!!!
В этом странннном компиляторе порт и ножки LCD задаются не в тексте программы, а в свойствах компилятора.
Прогнал один и тот-же текст через CAVR версий 2.03.9 и 2.05.0. В последнем ресурсов сожрало на 15% больше. И старый компактностью не отличался, а новый вообще монстр по прожорливости.
Re: АTMega16A+LCM1602K не стартует
на счет прожерливости согласен, но даже в 8 КБ что бы не вместиться,
это надо очень постараться)) поэтому и учу АВР а не пик
это надо очень постараться)) поэтому и учу АВР а не пик