Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Исходники » Помогите с запуском LCD 4x20 по i2c


Помогите с запуском LCD 4x20 по i2c

Сообщений 211 страница 220 из 220

211

Никто не сталкивался с Lcd20X4  с пятью "точками" (микросхемами - каплями компаунда) на плате? Приехало несколько штук недавно... неработаютЪ. Адреса по и2с пробил, софт перекомпилировал...  кракозябры. Чо за на...х

0

212

-NMi- написал(а):

Никто не сталкивался с Lcd20X4  с пятью "точками" (микросхемами - каплями компаунда) на плате? Приехало несколько штук недавно... неработаютЪ. Адреса по и2с пробил, софт перекомпилировал...  кракозябры. Чо за на...х

"Узкоглазый" знакогенератор...
У меня таких два было, правда 16х2, еле применение нашел... ;)

sasha_1973 выкладывал "Русский на китайских дисплеях" (или что-то типа этого).
Помогает на 99%, т.к. часть символов идет из аглицкого з/к.
Даже после "обрезания" код жрет некисло память - в Мега8 даже без вывода на дисплей было занято уже больше четверти...
Этот способ несомненно хорош, но трудоприменим иногда...

0

213

И диод защитный на ардуине от него задымилсо  :crazyfun:
Поди потребляют килоампер эти дисплеи  :rofl:
Пайду нажрусь и забуду нафик все языки программирования  :shine:

0

214

Ниачкуем, усё пучком! Библу переписал, вроде запустилося всё.  :glasses:

0

215

Библа то библой, да вот не всё понятно с дисплеями.
Итак, библу переписал полностью, с ней нет необходимости создавать константы типа Pcf_d4 и так далее.
Поправил подсветку - теперь всё работает чики-пуки и ничего не моргает.
А вот теперь самое ИНТЕРЕСНОЕ:
Для чистоты эксперимента запилил два разных дисплея, и адреса и аппаратная часть. Помоему глючить они начинают при процессе сброса или инициализации. Прочитал несколько мануалов от 44780 и от St7066. Процедуры сброса и инициализации не одинаковые, хотя пробовал и то и то - работает, но не с первого раза.
В протеусе то-же самое. Нажмёшь ресет - могут оба экрана заработать, могут и по одному, а могут и оба кракозябрить...
Итого:::
Как убедиться, что шина работает в железе?
Как программно поймать, дошло ли нужное до адресата?
Имеет ли смысл прибавить к библе процедуру опроса Busy Flag???

0

216

Усё! Понял где косяк! Исправил! Теперь прям как в ардуине работает, суточный прогон и ни одной ошибки на ДВУХ дисплеях одновременно! Эврика блее  :rofl:

0

217

-NMi- написал(а):

Итак, библу переписал полностью, с ней нет необходимости создавать константы типа Pcf_d4 и так далее


Это всё слова, где исходник ?

0

218

Лови...

Comment = Compiled LIB file, no comment included

copyright = Kent & MardaWin
www       = none
email     = kent@mardawin.de
comment   = NMi I2C LCD driver
libversion   = 1.15
date         = 2018
statement    = Stable work up to 400 kHz of i2c bus.
statement    = Soft i2c work >25 delay at 16 mHz CPU.
history      = For any China LCD 20*4 on Pcf8574 & 44780 or 7066.
[_Init_LCD]
_Init_LCD:
*lds r0,{lcd_i2c_bl}
.OBJ 920F
.OBJ 2788
.OBJ 2799
*sts {lcd_i2c_bl}, r25
*BASIC: i2cstart
*BASIC: I2cwbyte lcd_i2c_nmi
*BASIC: I2cwbyte _temp1
*BASIC: i2cstop
rcall _Init_LCD_wait
.OBJ E083
Rcall _Write_lcd_nibble
rcall _Init_LCD_wait
.OBJ E083
Rcall _Write_lcd_nibble
rcall _Init_LCD_wait
.OBJ E083
Rcall _Write_lcd_nibble
rcall _Init_LCD_wait
.OBJ E082
Rcall _Write_lcd_nibble
rcall _Init_LCD_wait
.OBJ E288
Rcall _Lcd_Control
rcall _Init_LCD_wait
.OBJ E086
Rcall _Lcd_Control
rcall _Init_LCD_wait
.OBJ E08C
Rcall _Lcd_Control
rcall _Init_LCD_wait
.OBJ E081
Rcall _Lcd_Control
rcall _Init_LCD_wait
.OBJ E082
.OBJ 900F
*sts {lcd_i2c_bl}, r0
Rjmp _Lcd_Control
_Init_LCD_wait:
*BASIC: waitms 100
.OBJ 9508
[END]
[_Write_lcd]
_Write_lcd:
.OBJ E190
rjmp _write_lcd_byte
_Lcd_Control:
.OBJ 2799
_write_lcd_byte:
.OBJ 938F
.OBJ 9582
Rcall _Write_lcd_Nibble
.OBJ 918F
_Write_lcd_nibble:
.OBJ 708F
.OBJ 2B89
_Send_to_LCD:
.OBJ 939F
.OBJ 2F98
.OBJ FB90
.OBJ F984
.OBJ FB91
.OBJ F985
.OBJ FB92
.OBJ F986
.OBJ FB93
.OBJ F987
.OBJ FB94
.OBJ F980
.OBJ 7F89
*lds r25,{lcd_i2c_bl}
.OBJ FB90
.OBJ F983
.OBJ E094
_i2c_send_to_lcd:
*BASIC: i2cstart
*BASIC: I2cwbyte lcd_i2c_nmi
*BASIC: I2cwbyte r24 
.OBJ 2789
rcall _i2c_send_to_lcd_w
*BASIC: I2cwbyte r24
.OBJ 2789
rcall _i2c_send_to_lcd_w
*BASIC: I2cwbyte r24 
*BASIC: i2cstop   
.OBJ 919F
_i2c_send_to_lcd_w:
@genus(200)
.OBJ 9508
[END]

0

219

-NMi- написал(а):

Лови...

Что лови, русским языком написал ИСХОДНИК, зачем нужен набор скомпилированных команд именуемый библиотекой.

-NMi- написал(а):

Теперь прям как в ардуине работает, суточный прогон и ни одной ошибки на ДВУХ дисплеях одновременно!

Наверное сам не догадаешься, не забудь пример использования (симуляция + исходник), ну и до компании было-бы совсем не плохо, видео опупительной работы в железе.

0

220

чО тут догадываться то??? Помоему всё просто.
С момента публикации (до этого за пару недель) библа работает  и не одного глюка не наблюдалось!!!

Щща задумка сделать АППАРАТНЫМ    IIC прям в баскоме, на INT-ах, время буИт, займусь!

0


Вы здесь » Программирование ATMEL в BASCOM. » Исходники » Помогите с запуском LCD 4x20 по i2c