ILLISSI

Внешние модули => LCD индикаторы => Графические => : zaman 06 September 2012, 19:48:31

: Библиотека UC1601s
: zaman 06 September 2012, 19:48:31
Запустил вашу библиотеку на PIC16f887 но на программном i2c(аппаратный не пошел).
Но наблюдается баг, особенно виден на "звездном небе", демке с прямоугольниками и логотипе MAGETEX.
Точки не отрисовываются, вместо них пустые вертикальные полоски.

Подскажите решение проблемы
: Re: Библиотека UC1601s
: Catcatcat 07 September 2012, 09:39:16
При использовании программного эмулятора И2С, есть несколько вариантов, почему драйвер индикатора пропускает байты данных.

Если драйвер не определил состояние стоп, то естественно об не поймет прием следующего байта. Только после нормального состояния стоп, прием данных начнется правильно.

Если не совсем правильно формируются импульсы синхронизации, т.е. "не много" не в то время. Поэтому драйвер начинает пропускать байты данных.

Сама библиотека обращается на индикатор как на запись данных, так и на чтение с индикатора, если при чтении данных драйвер индикатора не получить ноуаск об окончании чтения, он будет "тупить" при следующей операции записи или чтении данных.

Решение -
Все сводиться к тому, чтобы "поиграться" с длительностью сигналов которые формируют обмен между индикатором и контроллером и проверить как формируются ответы между устройствами. Но это предполагает наличия как минимум "хорошего" осциллографа.
Еще раз проверить по ходу программы правильно, ли формируется чтение данных с индикатора (на проблему ноуаск). Программный И2С это такая же библиотека написанная человеком и не стоит от нее требовать идеальной работы. Что бы "поиграться" тебе будет необходимо открыть файлы И2С библиотеки и разобраться в их работе.

Я бы порекомендовал попробовать запустить аппаратный И2С, это снимет целый ряд проблем. Я правда на 88х не тестил эту библиотеку, но на стареньких 87хА, и на "новеньких" 1936, 1938, 18хх, (то что качается 16 серии) работает без проблем. Я с 88х начал работать, но потом их оставил, т.к. новых в контроллерах расширили систему команд и это дало, что на ассемблере, что на Си как минимум 30 % уменьшить объем программного кода, и аппаратно они более привлекательны (и цена их ниже).

 p.s. На прямую, в лоб, я так ничего не могу посоветовать :(

: Re: Библиотека UC1601s
: zaman 07 September 2012, 14:58:47
Есть логический анализатор, и место ошибки я похоже нашел.
Сбило меня с толку то, что надписи отрисовываются нормально, хотя каждый символ также, считывает то что в дисплее, а потом заменяет на свои данные
: Re: Библиотека UC1601s
: Catcatcat 07 September 2012, 16:07:23
Когда, что то рисуется, то новое изображение накладывается на фон, а фон считывается с дисплея. Так проще для обработки.
: Re: Библиотека UC1601s
: zaman 08 September 2012, 12:18:22
При рисовании точек в месте
:
i2c_start(0x70,1,1); // 0x70 адрес индикатора, данные, чтениеиндикатор не дает ACK
На код который следует далее
:
i2c_read_ack();
fon=i2c_read_noack();
i2c_stop();
Индикатор дает ACK а потом как и положено прием завершается по NACK от ведущего
При этом считываются 0xff два раза

(http://i.piccy.info/i7/137b0a094d93d7db36b2bd4124dad47a/4-44-906/23278235/1_800.jpg) (http://piccy.info/view3/3448855/fcb9fa2cd5d2915a7f855f606e320534/1200/)(http://i.piccy.info/a3/2012-09-08-09-10/i7-3448855/800x102-r/i.gif) (http://i.piccy.info/a3c/2012-09-08-09-10/i7-3448855/800x102-r)


Еще нет ACK при записи в месте i2c_write(0b10110000 | Y); но почему я не понимаю
: Re: Библиотека UC1601s
: Catcatcat 08 September 2012, 13:40:05
Проблема, я так думаю, может быть в одном, не выдерживаются условие шины.
Для работы с интерфейсом I2C  я написал функции для работы с модулем MSSP. Попробуй использовать от другой библиотеки. Только нужно будет переделать функции i2c_start и i2c_restart. Для формирования команд.
: Re: Библиотека UC1601s
: Vavilon19 17 October 2012, 20:50:24
Здравствуйте! Может есть пример работы UC1601S на асме для 18 пика, хотя бы инициализации.Си пока мне не понятен, свой RDX0120 мучаю третий день, использую модуль MSSP, тактовая 32 мГц,скорость шины I2C 100кГц. Инициализацию проходит, но LCD молчит, с командами инициализации совсем запутался. 
: Re: Библиотека UC1601s
: Catcatcat 17 October 2012, 22:51:34
Я ушел с ассемблера, потому что обленился, это кажется, что программирование в Си сложнее, наоборот. Если перейдешь на Си, потом вернуться на ассемблер сложно. Я выдрал из своих старых программ, написанные на ассемблере, функции для работы с I2C интерфейсом. Посмотри может у тебя, что-то не так используется, сравни или вообще возьми мои программы за основу, они полностью рабочие.

Последовательность инициализации одинакова, что в си, что в ассемблере.

:
RSETLCD=1; // индикатор вывести из сброса
_delay(160000);       // 16 000 = 1мС - 10мС
i2c_start(0x70,0,0);                      // 0x70 адрес индикатора, 0-команда, 0-запись
i2c_write(0b11100010);                //
i2c_stop();
_delay(160000); // 16 000 = 1мС - 10мС
i2c_start(0x70,0,0);                      // 0x70 адрес индикатора, 0-команда, 0-запись
i2c_write(0b11101011);            // BIAS 6
i2c_write(0b10000001);               // настройка Vbias
i2c_write(120);         // 124
i2c_write(0b11000110);            // настройка типа разветки свеху в низ, и слево на право
i2c_write(0b10101111);           // Включить дисплей
i2c_stop();

Если возникнут вопросы не стесняйся задавай.
: Re: Библиотека UC1601s
: Vavilon19 17 October 2012, 23:07:04
Спасибо, не ожидал, что так быстро ответите.Спасибо за код,завтра сравню.Вы не можете дать комментарий по этой строке:

i2c_write(120);                 // 124
 
 не пойму что за цифра в скобках.
: Re: Библиотека UC1601s
: Catcatcat 18 October 2012, 06:57:48
это Set LCD Bias Ratio

три строки

:
        i2c_write(0b11101011);           // BIAS 6
i2c_write(0b10000001);           // настройка Vbias
i2c_write(120);         // 124

влияют на контрастность и яркость индикации, их я подбирал значения по лучшей индикации.
: Re: Библиотека UC1601s
: Vavilon19 19 October 2012, 11:41:54
Спасибо уважаемый гуру, действительно проблема была в неправильной настройке модуля MSSP, LCD ожил, разбираюсь дальше, жаль что ваша библиотека только на Си, сейчас вывел  первую надпись используя ваши таблицы, но ту красоту,которую вы продемонстрировали в своей программе ,боюсь без ваших подсказок мне не достичь, многое еще не понятно. Ничего, глаза боятся- руки делают, спасибо за ваш труд. С уважением  Владимир.