Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: demanik, ivan_fd  
Проблема с "Print"
retas Дата: Пн, 28.02.2011, 17:01  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 445
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

Интересность повстречалась на жизненном пути - если у меня в прогре где то будет указано
portB.3=1, то после, оператор "Print" не работает, т.е на индикатор ничего не выводится.

Поглядите да мыслю подкинте, если не трудно.

Main:
...........Cls : DelayMS 20
...........Print At 1 , 1 ,"A"
...........Print At 2 , 1 ,"BB"
...........DelayMS 1000
...........Cls : DelayMS 20

...........PORTB.3 = 1 'Вот проклятая команда !!! (portB.3 подключен к ноге Е индикатора ЛЦД).

pokaz1: Cls : DelayMS 30
..............Print At 1 , 1 ,"CCC"
..............Print At 2 , 1 ,"DDDD"
..............DelayMS 500
..............Cls : DelayMS 20

pokaz2: Cls : DelayMS 20
...............Output PORTB
...............Print At 1 , 1 ,"EEEEE"
...............Print At 2 , 1 ,"FFFFFF"
...............DelayMS 500
...............Cls : DelayMS 20
...............Toggle PORTA.1 'Это чтоб в реале видеть что МК жив
...............GoTo Main ' Опять по кругу

.Програ в таком виде после прохода PORTB.3 = 1, ничего не показывает.
.Если указать PORTB.3 = 0, всё показывается нормально.
.Если указать PORTB.3 = 1 и убрать то что принадлежит метке pokaz1, то показывается ещё "EEEEE".
.Прикрепил схему в Протеусе да файл бас.
.В реале у меня ЛЦД перестал работать (при записи в МК, зажигается квадратики в первой строке),
можно ли его как то проверить?
Спасибо.

Прикрепления: PIC_Basikui.zip (12.9 Kb)
ЯНДЕКС Дата: 28.02.2011
demanik Дата: Пн, 28.02.2011, 21:06  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 448
Репутация: 10   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

Я понял так:
У вас PORTB.3 подключен к входу "Е" "1"на этом входе активирует дисплей и он читает непонятно-что с шины и заходит в коматоз.
cool


Попробуй всё и вся... может быть пол...

retas Дата: Вт, 01.03.2011, 20:36  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 445
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

..Получается так, что оператор "Print" работает не коректно. Для него должно быть
безразлично что до него творилось с портомВ к которому подключен ЛЦД индикатор. Иначе
говоря, оператор "Print" позволяет забрать под индикацию портВ и ему должно быть до лампочки
что до него происходило с портомВ (в реале и в Протеусе, к портуВ.3 подключен сопрот в 510к ).
..Кусок показанного кода, это остаток до которого я дошёл чтоб найты причину неработы "Print".
В реале в прогре, указание портВ.3=1 находилось далековато от оператора "Print", но от этого
ничего не меняется - если где либо в прогре попалась команда портВ.3=1, после неё оператор "Print"
перестаёт работать !!!
..Проверял как с PIC16F876 так и с PIC16F877 - то же самое.
..Приходится делать вывод: порты предназначенные для работы с оператором "Print", для каких
либо других целей не использовать, либо отдельно убедиться в нормальной работе.
..Попробовал контакт Е индикатора привязать к В.2 (как у terrarus'a) - тогда непозволительно
появление команды портВ.2=1 .

ОСТОРОЖНО !!!

PS.Как проверить ЛЦД индикатор???

demanik Дата: Ср, 02.03.2011, 00:03  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 448
Репутация: 10   ±
Замечания:   ±
На сайте с 11.12.2007

Статус: Offline

Quote (retas)
Получается так, что оператор "Print" работает не коректно

Он работает коректно это инликатор заходит в коматоз. посмотрите в протеусе сообщения, что появляются при обращении к индикатору после 1 на ноге Е.
Я например иногда при нехватке пинов использую 4-ноги данных индикатора для опроса кнопок в паузах между операторами принт. Единственный нюанс эти ножки перед проверкой кнопок нужно переключать на вход, назад на выход следующий оператор принт сам переключает.
Все работает отлично. Единсвенное нивкаком случае не трогать "Е" индикатора.
cool
Прикрепления: 4713258.jpg (43.2 Kb)


Попробуй всё и вся... может быть пол...

retas Дата: Ср, 02.03.2011, 18:30  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 445
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

.Я так и понял, что Е контакт табу, но написано ли где о такой чертовщине,
если нет, то terrarus'у следует в своём учебнике об этом заикнуться.

.Мне так на плате было удобнее взять несколько лап из под индикатора, но в Е нужды не было.
Однако, если в порту мне нужно поменять хоть один бит, я стараюсь указывать что должно
получиться на всём порту, чтоб известное правило "чтение-модификация-запись" ненаделало
бы лишьнего.

.demanik, быть может вам известны подобные выпендрёжи и с какими либо другими портами?

.А по самому ЛЦД индикатару что опытных нет? Если при загрузке прогры в МК ( с PICKIT2)
первая строка индикатора засвечивается черными квадратиками, говорит ли это о чем то?

Спасибо.

ADMIN Дата: Чт, 03.03.2011, 02:25  |                                                                                                                Сообщение # 6
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1086
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Quote (retas)
.А по самому ЛЦД индикатару что опытных нет? Если при загрузке прогры в МК ( с PICKIT2) первая строка индикатора засвечивается черными квадратиками, говорит ли это о чем то?

Мне, почему-то всегда(из практики), это говорило о том, что контрастность завышена. Стоило подрегулировать и работало все на ура. Насчет выпендрежей, то ни с какими портами обычно не возникало казусов. Также порты использовались одновременно и на вход кнопок, и на выход ЖКИ.

retas Дата: Чт, 03.03.2011, 20:48  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 445
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

.У меня индикатор без регулировки контрастности, повторюсь, при загрузке первая строка зажигается квадратами.
.Попробуйте мой пример и убедитесь что порт на Е контакт брать нельзя, точнее перед Print он должен быть скинут.
.Интересно как дела у terrarus'а или ему такие проблемы не интересны?

Спасибо.

ADMIN Дата: Пт, 04.03.2011, 03:17  |                                                                                                                Сообщение # 8
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1086
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Что за индикатор?
retas Дата: Сб, 05.03.2011, 00:16  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 445
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

Индикатор HD44780.
vladh Дата: Вс, 06.03.2011, 08:54  |                                                                                                                Сообщение # 10
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 258
Репутация: 11   ±
Замечания:   ±
На сайте с 15.10.2007

Статус: Offline

Уважаемый retas. Во-первых, почему то после скачивания и распаковки указанной ссылки, файл Протеуса открывается но схема в нем отсутствует?

Добавлено (06.03.2011, 08.14.28)
---------------------------------------------
Ваша история с командой PORTB.3 = 1, действительно интересна. Вообще говоря вывод ЖКИ - Е, указывает индикатору на то, что сейчас находится на шине данных, команда или данные. Попробую сегодня, в течении дня разобраться с этим случаем.

Добавлено (06.03.2011, 08.44.26)
---------------------------------------------
Из моих первых наблюдений следует, что когда Вы используете более правильный интерфейс - восьмипроводный, то все происходит правильно.

Добавлено (06.03.2011, 08.54.41)
---------------------------------------------
Ваши наблюдения по поводу разного функционирования компилятора в случае использования команд: PORTB.3 = 1 и PORTB.3 = 0 - верные. По всей видимости это недоработка разработчиков компилятора для случая четырехпроводного интерфейса. Попробую сегодня выяснить у них на форуме.

Сообщение отредактировал vladh - Вс, 06.03.2011, 08:15
retas Дата: Вс, 06.03.2011, 11:21  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 445
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

. Спасибо, vladh, за деловой подход!

.Вообще то трагедии в этом не будет если все мы об этом будем помнить и перед оператором
Print просто не будем забывать вставлять portB.Х под Е =0 . Главное подобные проблемы не должны
затеряться и очень бы хотелось чтоб они отразились в книге terrarus'а (у меня было ещё одно
замечание, кажысь про оператор RCIN о котором terrarus знает, но, пм, в книге оно не отражено).

.В моём файле Протеуса был только МК да индикатор чтоб каждый оперативно мог на своём компе
глянуть да проверить (быть может версии у нас разные).

ЯНДЕКС Дата: 06.03.2011
vladh Дата: Вс, 06.03.2011, 12:24  |                                                                                                                Сообщение # 12
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 258
Репутация: 11   ±
Замечания:   ±
На сайте с 15.10.2007

Статус: Offline

Вот как раз если перед оператором Print мы ничего вставлять не будем, а будем делать так, как в Help'е прописано, то все работает как надо. Но вот если мы бы захотели в промежутках между выводом текста выполнить некоторую функцию с помощью вывода, который используется также для взаимодействия с ЖКИ, то надо быть осторожным. Это не всегда допустимо!
В приложении добавлены мои исследования Вашего варианта. Один с 8-разрядным интерфейсом, а другой с уцененным - 4.
Прикрепления: Retas.zip (108.3 Kb)
retas Дата: Вс, 06.03.2011, 16:56  |                                                                                                                Сообщение # 13
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 445
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

А я так понял что указав portB.Х под Е =0 дело не подпортишь, но к этому можно
прибегнуть только если ПРИНТ не запускается и не ясны причины.
vladh Дата: Вс, 06.03.2011, 20:35  |                                                                                                                Сообщение # 14
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 258
Репутация: 11   ±
Замечания:   ±
На сайте с 15.10.2007

Статус: Offline

Но Вы же сами видели, что эта Ваша команда не помогает если Вы используя четырехпроводный режим применили команду PORTX.Y=1 (где Х - порт, который используется для подключения цепи Е, а Y- используемый вывод этого порта)
  • Страница 1 из 1
  • 1
Поиск: