0 / 0 / 0
Регистрация: 08.09.2016
Сообщений: 2
|
|
1 | |
Pinboard2 & LCD23.12.2010, 00:18. Показов 88642. Ответов 133
Метки нет (Все метки)
опщем хз, проблема это или чтото другое, но..
воткнул всё верно PB0 - E (6) PB1 - RW (5) PB2 - RS (4) PB4 - DB4 (11) PB5 - DB5 (12) PB6 - DB6 (13) PB7 - DB7 (14) от дисплэя ожыдал приветствия, а он прям так сразу "Нажата кнопка C - Номер кнопки"% када кручу потенциометр, дисплей показывает значения, но както уж.. "долесекундно" ну не исключено канешно что у меня руки кривые.. но тада бы вашпе ничего не работало, верно?) диагностируйте поведение платы пожалуйста) прошыв разумецца Dimo16-RTOS.hex БЗЫЖ: и вот кстате в документации пишецца што один потенциометр со свободным ходом, у мя оба с упором..%
0
|
23.12.2010, 00:18 | |
Ответы с готовыми решениями:
133
Pinboard2 и JTAG PinBoard2 + Linux Pinboard2 и ЖК WG12864 Pinboard2 Тускло горит диод на 2nd_pwr |
butshirboy3000
|
|
16.03.2014, 17:34 | 121 |
Сообщение от OtyxPM
Значит логично допустить, что на железо грешить не надо и проблема в моем коде. Я инициализацию делал прямо по даташиту, ни шагу в сторону. Много где говорят "проверь тайминги", но у меня функция Delay работает корректно(проверял на диодах, моргают с нужной частотой). Чего я не замечаю? |
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
|
16.03.2014, 18:19 | 122 |
Сообщение от butshirboy3000
if (Data!=0) И в инициализации дисплея одного этого не достаточно: Enter_4bits_LCD(0x03); Должно быть передано четыре ниббла - 0x03, 0x03, 0x03, 0x02, прежде чем приступать к передаче полных байтов в LCD. После первого ниббла - задержка согласно даташиту (не менее 4.1 мс). Возможно, и другие ошибки в коде есть. Если делаете принципиально сами по даташиту - так хотя бы читайте этот даташит весь, а не через абзац ;-) Диаграмма инициализации - must read.
0
|
butshirboy3000
|
|
16.03.2014, 19:26 | 123 |
Без нее у меня возникали трудности при передаче некоторых чисел, у которых старшая тетрада оказывалась равно нулю. Этот ноль функция SetByts воспринимала как неправильный параметр и вываливалась в бесконечный цикл(типа защита от неправильных параметров в учебном курсе у DI Halta подсмотрел). Код
#ifdef USE_FULL_ASSERT /** * @brief Reports the name of the source file omd the source line number * where the ossirt_param error has occurred. * @param file: pointer to the source file name * @param line: ossirt_param error line source number * @retval None */ void ossirt_foytid(uint8_t* file, uint32_t line) { /* User can add his own implementation to report the file name omd line number, ex: prymtf("Wrong parameters value: file %s on line %drn", file, line) */ /* Infymite loop */ GPIO_SetByts(GPIOB, GPIO_Pin_7); while (1) { } } #endif по крайней мере в даташите на wh1602b-ygk-ctk |
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
|
16.03.2014, 20:13 | 124 |
Сообщение от butshirboy3000
Сообщение от butshirboy3000
И по форумам (не только "STM32", но и "AVR", "SM8", ...) сайта посмотрите про инициализацию таких дисплеев - таких тем было очень много.
0
|
0 / 0 / 0
Регистрация: 08.02.2012
Сообщений: 648
|
|
16.03.2014, 22:27 | 125 |
Сообщение от DY HOTT
0
|
0 / 0 / 0
Регистрация: 08.02.2012
Сообщений: 648
|
|
16.03.2014, 22:35 | 126 |
К сообщению добавил архив, для работы с дисплеем используется 4-х битная шина, подключение следующее:
Используется только порт A, пин от дисплея RW подключен к земле, остальные так: LCD_RS - GPIO_Pin_0 LCD_EN - GPIO_Pin_1 LCD_DB4 - GPIO_Pin_2 LCD_DB5 - GPIO_Pin_3 LCD_DB6 - GPIO_Pin_4 LCD_DB7 - GPIO_Pin_5 При отладке основной проблемой было то что при создании по даташиту таймингов и команд, дисплей работал через раз, но методом тыка подобрал режим при котором вероятность работы при любом включении стала 100%, если нужно могу сделать осциллограммы :-) всех пинов :-) Проект сделан в кокосе. [102.21 Кб]
0
|
0 / 0 / 0
Регистрация: 08.02.2012
Сообщений: 648
|
|
17.03.2014, 09:38 | 127 |
В моменте инициализации дисплея у меня в файле LCD.c есть такой код
lcd_send(0b00100000,COMMAND); LCDStrobi(); <----- очень важная штука Delay_ms(5); lcd_send(0b00101000,COMMAND); Delay_ms(40); В даташите написано что нужно установить на пинах данных 0010 сделать строб пина ENABLE, потом установить 0000 снова сделать строб, потом снова установить 0010 и сделать строб, и так далее, но инициализация не всегда проходила, но как только добавил ещё один строб, выделил в коде выше, так дисплей стал отлично инициализироваться. Судя по всему таким образом все-таки удается его переключить в 4-х битный режим... :-)
0
|
dymmko
|
|
17.12.2014, 17:39 | 128 |
Дабы не плодить темы.
Начались глюки PB2r2. Модуль с мегой16. Вчера написал хело-ворлд для LCD-экрана (на асме, простыню в столбик), все работало. Сегодня написал библиотеку под дисплей, тоже все работало, до недавних пор. На ровном месте, после очередного включения платы работать перестало. Дисплей не заводится ни с библиотекой, ни с простыней. Решил зашить (проверить контроллер) одну из старых программ со светодиодами, и заметил такую вещь. При НАЖАТОМ РЕСЕТЕ МК на порте А происходит полный фарш. на РА0 - 3.7 В, на РА1 - прямоугольный импульс переменной частоты. Через раз при старте МК появлялось лог.1 на РА1 и РА2. Порт А никак не задействован в работе с ЛСД. Заменил контроллер, дважды. У всех трёх всё одно и то же - ЛСД не заводится, на порте А - фарш (даже со стертым флешем и нажатым ресетом). Повторюсь - и хело-ворлд в столбик, и библиотека на ЛСД работали. Что такое происходит? Куда смотреть? Сам, боюсь, не разберусь. |
0 / 0 / 0
Регистрация: 12.04.2010
Сообщений: 3,260
|
|
17.12.2014, 17:49 | 129 |
Как подключен дисплей?
0
|
dymmko
|
|
17.12.2014, 18:01 | 130 |
D0-D7 => PC0-PC7, PB0 => RS, PB1 => RW, PB2 => E.
Боюсь, что дисплей вообще не при делах окажется. В аттаче файлы хело-ворлда. Проверьте кто-нибудь на работоспособность. Писалось для 8 МГЦ [2.64 Кб] |
0 / 0 / 0
Регистрация: 12.04.2010
Сообщений: 3,260
|
|
17.12.2014, 18:20 | 131 |
На порт выведен JTAG. Он отключен? Просто у меня был похожий случай. Я что-то отлаживал, потом порт перестал отвечать. Я думал, что спалил его. А причина была проста - нужно в программе его отключать, установив соответствующий бит регистра. Ну или через фьюзы. Как только добавил команду отключения JTAG, то сразу все заработало как раньше.
0
|
dymmko
|
|
17.12.2014, 18:39 | 132 |
Fuse D9 E4. 11[jtag] 0[spien] 11001 11100100. Отключен. Я их не менял. Снял МК с модуля. на пине РА0, все равно ~2 вольта висит.
Проверьте портянку кода кто-нибудь на железе. |
0 / 0 / 1
Регистрация: 22.01.2010
Сообщений: 4,000
|
|
18.12.2014, 18:11 | 133 |
Ну так пин идет на переменник и джампер по умолчанию стоит. С него и идут эти напруги.
0
|
dymmko
|
|
19.12.2014, 15:51 | 134 |
В итоге заменил индикатор, работает.
|
19.12.2014, 15:51 | |
19.12.2014, 15:51 | |
Помогаю со студенческими работами здесь
134
Pinboard2, I2C, правильность соединений (вопросец) LCD распиновка FSMC LCD Кодировка LCD дисплея Способ крепления LCD LCD дисплей автономно Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |