Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Отладочные платы » SK-MAT91SAM9XXXXX
9260 + LCD TIC149 + Leds + DS1820 + RTC DS1340
Jury093
Добавлено 10.01.2010 14:57 Редактировалось 10.01.2010 15:01
0
Сообщение: 1
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Перед новогодними за пару часов сплодил вот такую макетку :)
title
title
1. ds1340 - тут все без проблем, поддержана в новом ядре
2. Leds - светодиоды "нагло" через 300 Ом резисторы подвешены на пины АРМа. Забавно, что есть поддержка в ядре. Светодиод можно настроить в режим "heartbeat" "timer" и самое вкусное - "Nand" "MMS". Т.е. когда есть обращение к соответствующему накопителю - светодиод классно подмаргивает :)
3. ds1820 - тут все понятно..
4. tic149 (pcf8535), самая мистическая железяка

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
rw9uao
Добавлено 10.01.2010 15:42 Редактировалось 11.01.2010 11:11 Сообщение: 2
rw9uao
Ранг
5

Группа: Клиенты
Пункты: 6973
Регистрация: 26.03.2009
... ащще.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 10.01.2010 17:28 Редактировалось 11.01.2010 11:11 Сообщение: 3
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
... ащще.

да ну.. железо почти все окучено..
в процессе разборка с датчиком температуры (софт) и индикатором..
мистичность истории в том, что в сорцах ядра я обнаружил драйвер с именем tic149fb. Как он там появился или откуда я его взял - напрочь не помню..
Традиционно перезаточил его под софтовый И2Ц, попробовал пристроить мой любимый размер шрифта 6х8, но бл$дское разрешение 132х64 экрана конфликтует с драйвером. Опять же надо по-людски оформить обращение к шине И2Ц :)
А шрифт 4х8 это нечто.. я, когда-то давно, сам рисовал такой. Особенно клёво получались буквы Ж Ы и Щ

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 10.01.2010 20:38 Редактировалось 10.01.2010 20:41 Сообщение: 4
Pavel Ivanchenko
Admin
4.39

Пункты: 92805
Регистрация: 24.03.2009
Пол: Мужчина
О-о-о ...
Я тут пару дней уперся рогом - подключил TIC48 (правда на нем стоит PCF8531) к 9260, а он зараза дальше инита не работает ...
Т.е. инит проходит, LCD включается, показывает мусор, но после попытки выставления координат для заполнения "отключается", ну а если без предварительной установки координат (они по идее по 0-ям должны быть) заливать, то никаких изменений в картинке не наблюдаю ...
Все общение веду через свою апликуху, на I2C шине еще пару девайсов сидит (часики и вспомогательный контроллер, чувствуют себя хорошо).
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 10.01.2010 22:03 Сообщение: 5
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Если инит проходит и мусор появляется, то уже хорошо. Полагаю, что ошибка где-то в переключение выбора страницы..
Прилагаю кусок инициализации от PCF8535 (это программно-пиновая реализация). По даташиту они достаточно схожи..
Код
pi2c_start();
pi2c_write(0x78);
pi2c_write(0x00); /* control byte */
pi2c_write(0x01); /* main page */

pi2c_write(0x0e); /* page 110 */
pi2c_write(0x12); /* bias */
pi2c_write(0x84); /* mux */
pi2c_write(0x04); /* d=0 e=0 */
pi2c_write(0x24); /* ib=1 */
pi2c_write(0x20); /* ib=0 */
pi2c_write(0x0e); /* mx=my=1 */

pi2c_write(0x01); /* main page */
pi2c_write(0x10); /* pd=0 hor addr */

pi2c_write(0x0b); /* page 011 */
pi2c_write(0x58); /* trs=1 brs=1 */
pi2c_write(0x05); /* dm=1 */
mdelay(2);
pi2c_write(0x01); /* main page */
pi2c_write(0x0d); /* page 101 */

pi2c_write(0x08); /* s[1;0]=00 */
pi2c_write(0x04); /* PRS */

pi2c_write(61 | 0x80); /* voltage */
pi2c_write(0x05); /*generator on*/
mdelay(2);
pi2c_write(0x09); /* s */
mdelay(2);
pi2c_write(0x0a); /* s */
mdelay(2);
pi2c_write(0x0b); /* s */

pi2c_write(0x01); /* main page*/
pi2c_write(0x0b); /* page 011*/
pi2c_write(0x04); /* dm=0 */

pi2c_write(0x01); /* main page*/
pi2c_write(0x0e); /* page 110*/
pi2c_write(0x06); /* d=1 e=0 */
pi2c_stop();
printk(KERN_INFO "Setup tic149 hardware ok\n");
/* fill lcd */
pi2c_start();
pi2c_write(0x78);
pi2c_write(0x00);
pi2c_write(0x01);
pi2c_write(0x20);
pi2c_write(0x40); /* coord y=0 */
pi2c_write(0x80); /* x coord x=0 */
pi2c_stop();

pi2c_start();
pi2c_write(0x78);
pi2c_write(0x40);
for(cbyt=0;cbyt<128;cbyt++)
pi2c_write(0xff);
pi2c_write(0x00);
pi2c_stop();

pi2c_start();
pi2c_write(0x78);
pi2c_write(0x00);
pi2c_write(0x01);
pi2c_write(0x20);
pi2c_write(0x40);
pi2c_write(0x80);
pi2c_stop();

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 11.01.2010 10:59 Сообщение: 6
Pavel Ivanchenko
Admin
4.39

Пункты: 92805
Регистрация: 24.03.2009
Пол: Мужчина
Интересно, а чем Вы к шине обращаетесь?
Я через I2C-GPIO (/dev/i2c-gpio-1), соответственно, как с обычным устройством - открываю файл, конфигурирую, пишу-читаю, ну и соответственно стартами и стопами уже не заведую (мне кажется, что в моем случае, где то в этом направлении причина).
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 11.01.2010 11:25 Сообщение: 7
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
будете смеятся - чисто пиновый интерфейс, шевелю ножками "ручками". Как оно работает, сам удивляюсь. :)
Пришлось написать программную реализацию, разумеется упрощенную и под конкретный случай. Все собираюсь переписать, чтоб было "как положено", регистрация устройства, все атрибуты и тыпы.. да руки не доходят.

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 11.01.2010 11:48 Сообщение: 8
Pavel Ivanchenko
Admin
4.39

Пункты: 92805
Регистрация: 24.03.2009
Пол: Мужчина
А что тут смеяться, атмелцы сами так до сих пор нормальный драйвер I2C не сделали, тот что есть - имеет статус BROKEN, в итоге так же приходится использовать I2C-GPIO (ту что в ядре уже есть) ...
А чем имеющаяся реализация I2C не устроила?
Своей реализацией не поделитесь?
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 11.01.2010 12:05 Сообщение: 9
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Да меня бы вполне устроила, знать бы как пользоваться. Как когда то про меня написали "мальчик знаками объяснил что его зовут Хуан" (С) sasami :)
Я не профессиональный программист и с той поры ушел не далеко..
Реализация - это громко сказано, скорее работа в одну сторону. Написано тривиально просто, но для диагностики вполне работает :)
Эти строчки прописаны перед инитом индикатора:
Код
at91_set_gpio_output(AT91_PIN_PA23, 1); /* set data out */
at91_set_gpio_output(AT91_PIN_PA24, 1); /* set clk out */
at91_set_gpio_value(AT91_PIN_PA23, 1); /* data set 1 */
at91_set_gpio_value(AT91_PIN_PA24, 1); /* scl set 1 */

Эти п/п вставлены в начало драйвера:
Код
#define mydel 1

void pi2c_start(void)
{
at91_set_gpio_value(AT91_PIN_PA23, 0); /* sda set 0 */
ndelay(mydel);
at91_set_gpio_value(AT91_PIN_PA24, 0); /* scl set 0 */
ndelay(mydel);
}

void pi2c_stop(void)
{
at91_set_gpio_value(AT91_PIN_PA24, 1); /* scl set 1 */
ndelay(mydel);
at91_set_gpio_value(AT91_PIN_PA23, 1); /* sda set 1 */
ndelay(mydel);
}
void pi2c_write(u8 data)
{
u8 cnt;
u8 tmp = data;
for(cnt=0;cnt<8;cnt++)
{
if(tmp & 0x80)
at91_set_gpio_value(AT91_PIN_PA23, 1); /* sda set 1 */
else
at91_set_gpio_value(AT91_PIN_PA23, 0); /* sda set 0 */
ndelay(mydel);
at91_set_gpio_value(AT91_PIN_PA24, 1); /* scl set 1 */
ndelay(mydel);
at91_set_gpio_value(AT91_PIN_PA24, 0); /* scl set 0 */
ndelay(mydel);
tmp = tmp << 1;
}
at91_set_gpio_input(AT91_PIN_PA23,0); /* set data in */
gpio_direction_input(AT91_PIN_PA23);
at91_set_gpio_value(AT91_PIN_PA24, 1); /* scl set 1 */
ndelay(mydel);
at91_set_gpio_value(AT91_PIN_PA24, 0); /* scl set 0 */
at91_set_gpio_output(AT91_PIN_PA23, 1); /* set data out */
at91_set_gpio_value(AT91_PIN_PA23, 0); /* data set 0 */
ndelay(mydel);
}


ЗЫ Драйвер (если нужен) по почте пришлю.

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 11.01.2010 12:14 Сообщение: 10
Pavel Ivanchenko
Admin
4.39

Пункты: 92805
Регистрация: 24.03.2009
Пол: Мужчина
Спасибо, сейчас испытаю ...
В at91sam9260_devices.c есть структура i2c_gpio... в которой указываются пины и частота работы, в менюконфиг, в I2C hardware bus support включите GPIO-based, получите поддержку шины в ядре.
Потом можете собрать i2ctools (buildroot) для тестов ...
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-MAT91SAM9XXXXX