Перейти к содержанию
    

3.14

СуперМодератор
  • Постов

    1 986
  • Зарегистрирован

Весь контент 3.14


  1. Вобщем, и ранее замечал, что ExpPCB при запуске ругается на то что у меня в DW проекте запрещена обратная аннотация, хотя галка в опциях проекта включена. Тут, блин, на ровном месте выдает следующее, аннотация из DW/DC не проходит потому как есть данные обратной аннотации из ExpPCB (хотя откуда они там берутся сказать сложно), а в ExpPCB не дает провести обратную аннотацию якобы из-за того что она выключена в свойствах проекта, но она там включена!!! Может что посоветуете?
  2. ADG не удовлетворяют ценой, хотя, покопавшись, нашел только пару мультиплексоров от TI и то неподходящего для меня формата (1х16), в итоге решил остановиться на ADG1334. ЭМ-реле кушать будет пару десятков миллиампер, да и заказчик, думаю, на меня косо посмотрит ... Еще вроде нормально-замкнутые оптореле бывают, сейчас посмотрю ...
  3. Имею 2 RS232 порта идущие к ARM системе, нужно, чтобы при отключенной системе (есть еще резервный источник питания) эти порты были "замкнуты" между собой. Ассортимент AD в моем случае избыточен, полосы пропускания, низкого сопротивления канала ... всего этого не нужно, еще, мультиплексоры коммутируют в диапазоне своего питания, т.е. мультиплексор должен терпеть питание +-15В ... Сижу и ничего припомнить из стандартной КМОП логики к этим требованиям не могу.
  4. Действитель, под самым носом не разглядел, только я не понял, что это за DC/DC без стабилизации выходного напряжения
  5. Нужен сабжевый DC/DC (готовый модуль) лучше если с регулируемым напряжением (или фиксированным 3,3В) с выходным током сотню-две миллиампер. Входное напряжение 12В.
  6. Можно конечно, но 20К-30К EUR считаю "перебор" за подобного рода механизмы.
  7. Нужна штука которая бы позволяла совмещать посадочное место с чипом, запекать в печке буду.
  8. ADS7843 драйвер

    Далее, прикрутил таймер: #define REFR_TIME (HZ / 2) struct timer_list timer; static struct input_dev *hp680_ts_dev; static DECLARE_DELAYED_WORK(work, do_softint); static void my_timer(unsigned long param) { struct my_param *par = (struct my_param *)param; int absx = 0, absy = 0; static unsigned int mtimer=0; static int touched = 0; touched=(touched+1)&1; if(touched) { input_report_key(hp680_ts_dev, BTN_TOUCH,1); input_report_abs(hp680_ts_dev, ABS_X, 0x10); input_report_abs(hp680_ts_dev, ABS_Y, 0x20); } else { input_report_key(hp680_ts_dev, BTN_TOUCH,0); } input_sync(hp680_ts_dev); mod_timer(&timer, jiffies + REFR_TIME); } static int __init hp680_ts_init(void) { int err; init_timer(&timer); // timer.data=(unsigned long)param; timer.function= my_timer; timer.expires = jiffies + REFR_TIME; add_timer(&timer); hp680_ts_dev = input_allocate_device(); if (!hp680_ts_dev) return -ENOMEM; hp680_ts_dev->name = "HP Jornada touchscreen"; hp680_ts_dev->phys = "hp680_ts/input0"; hp680_ts_dev->evbit[0] = BIT_MASK(EV_ABS) | BIT_MASK(EV_KEY); hp680_ts_dev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH); input_set_abs_params(hp680_ts_dev, ABS_X, HP680_TS_ABS_X_MIN, HP680_TS_ABS_X_MAX, 0, 0); input_set_abs_params(hp680_ts_dev, ABS_Y, HP680_TS_ABS_Y_MIN, HP680_TS_ABS_Y_MAX, 0, 0); err = input_register_device(hp680_ts_dev); if (err) goto fail2; return 0; fail2: free_irq(HP680_TS_IRQ, NULL); cancel_delayed_work(&work); flush_scheduled_work(); fail1: input_free_device(hp680_ts_dev); return err; } static void __exit hp680_ts_exit(void) { free_irq(HP680_TS_IRQ, NULL); cancel_delayed_work(&work); flush_scheduled_work(); input_unregister_device(hp680_ts_dev); } При запуске ядра вижу input: HP Jornada touchscreen as /class/input/input0 mdev создает в /dev устройство mouse0 Если пытаться читать устройство - получаю данные с периодичностью таймера, но сами данные явно не от туда, в вечном цикле получаю 08 00 00 09 00 00 ... Собираю TSLIB, конфигурирую ее вход как input, запускаю ts_print - тишина (сам тест успешно запустился, но никаких данных не регистрирует). Конфигурирую вход TSLIB как любое из других устройств из ей поддерживаемых, ts_print начинает регистрировать поступление данных, но опять явно не от туда, например: TS_READ----> x = -22893336, y = -30062890, pressure = 94162884 3749682.875638252: -22893336 -30062890 94162884 TS_READ----> x = -22893336, y = 73416365, pressure = 49743714 3749682.875638252: -22893336 73416365 49743714 TS_READ----> x = -22893336, y = 63991277, pressure = 40343394 Перепробовал разные устройства, картина одинаковая, Х - постоянное значение (причем, при перезапуске теста меняется), остальные болтаются. На лицо несоответствие каких то структур или указатель на них неверно передается, но в самом драйвере (причем и в некоторых других так же) ни слова об объявлении структуры данных, все через input_report_abs
  9. Задача: получить доступ над машиной, подключаемой к сети через 3G модем (MTC). Регистрируюсь в DynDNS, ставлю клиент, уст анавливаю Radmin сервер, но коннекта не получаю. Начинаю разбираться - выясняется что клиент dyndns неправильно определяет текущий IP, подозреваю, что упираюсь в NAT MTC-а. Посоветуйте плиз как разрулить.
  10. ADS7843 драйвер

    Спасибо, буду разбираться ...
  11. ADS7843 драйвер

    Попробовал подойти по другому - решил сначала обработчик интервального таймера запустить, взял пример отсюда, а он зараза на моем ядре (2,6,24) в принципе не работает (ядро в панике вылетает при попытке первого планирования) :( ...
  12. ADS7843 драйвер

    Озадачился прикручиванием сабжевого контроллера тачскрина в linux ... Вообще, в ядре уже есть драйвер ADS784X, но он расчитан на SPI соединение и уж очень громоздкий (черт ногу сломит), мой чип подключен не к SPI и соответственно буду эмулировать через GPIO. Решил взять за основу "hp680_ts_input", он просто периодически опрашивает состояние и если определяет нажатие обновляет данные. Итак, вырезал его специфическую часть, убрал анализ нажатия, сделав постоянное обновление координат. Собираю, запускаю - драйвер встал нормально, но /proc/interrupts для моего драйвера не показывает постоянно увеличивающегося количества прерываний, оно вообще только один раз произошло, хотя должно 20 раз в секунду шпарить ... #include <linux/input.h> #include <linux/module.h> #include <linux/init.h> #include <linux/interrupt.h> #include <asm/io.h> #include <asm/delay.h> #define MODNAME "hp680_ts_input" #define HP680_TS_ABS_X_MIN 40 #define HP680_TS_ABS_X_MAX 950 #define HP680_TS_ABS_Y_MIN 80 #define HP680_TS_ABS_Y_MAX 910 #define PHDR 0xa400012e #define SCPDR 0xa4000136 #define HP680_TS_IRQ 35 static void do_softint(struct work_struct *work); static struct input_dev *hp680_ts_dev; static DECLARE_DELAYED_WORK(work, do_softint); static void do_softint(struct work_struct *work) { int absx = 0, absy = 0; u8 scpdr; int touched = 0; absx=100; absy=100; input_report_key(hp680_ts_dev, BTN_TOUCH, 1); input_report_abs(hp680_ts_dev, ABS_X, absx); input_report_abs(hp680_ts_dev, ABS_Y, absy); input_sync(hp680_ts_dev); enable_irq(HP680_TS_IRQ); } static irqreturn_t hp680_ts_interrupt(int irq, void *dev) { disable_irq_nosync(irq); schedule_delayed_work(&work, HZ / 20); return IRQ_HANDLED; } static int __init hp680_ts_init(void) { int err; hp680_ts_dev = input_allocate_device(); if (!hp680_ts_dev) return -ENOMEM; hp680_ts_dev->evbit[0] = BIT_MASK(EV_ABS) | BIT_MASK(EV_KEY); hp680_ts_dev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH); input_set_abs_params(hp680_ts_dev, ABS_X, HP680_TS_ABS_X_MIN, HP680_TS_ABS_X_MAX, 0, 0); input_set_abs_params(hp680_ts_dev, ABS_Y, HP680_TS_ABS_Y_MIN, HP680_TS_ABS_Y_MAX, 0, 0); hp680_ts_dev->name = "HP Jornada touchscreen"; hp680_ts_dev->phys = "input0"; if (request_irq(HP680_TS_IRQ, hp680_ts_interrupt, IRQF_DISABLED, MODNAME, 0) < 0) { printk(KERN_ERR "hp680_touchscreen.c: Can't allocate irq %d\n", HP680_TS_IRQ); err = -EBUSY; goto fail1; } err = input_register_device(hp680_ts_dev); if (err) goto fail2; return 0; fail2: free_irq(HP680_TS_IRQ, NULL); cancel_delayed_work(&work); flush_scheduled_work(); fail1: input_free_device(hp680_ts_dev); return err; } static void __exit hp680_ts_exit(void) { free_irq(HP680_TS_IRQ, NULL); cancel_delayed_work(&work); flush_scheduled_work(); input_unregister_device(hp680_ts_dev); } module_init(hp680_ts_init); module_exit(hp680_ts_exit); MODULE_AUTHOR("Andriy Skulysh, [email protected]"); MODULE_DESCRIPTION("HP Jornada 680 touchscreen driver"); MODULE_LICENSE("GPL"); Еще вопрос, как это хозяйство опрашивать, собрал либу tslib (сконфигурировав ее вход на input), при попытке запуска ts_print получаю ругань на отсутствующее устройство, которого действительно нет, созданием устройств у меня ведает mdev и оно почему то не создало устройство, хотя драй вер выдает при запуске:
  13. Блин, я в ярости от сервиса dessy.ru Вобщем, задумал прикупить у них обжимку для IDC кабелей, размещаю заказ, прошу оплату принять электронными деньгами, в ответ на сообщение робота прошу выставить мне счет на мой WMID (чтоб исключить ошибку), в ответ тупой повтор почтового ящика для оплаты. Надоело переписываться, отправляю вебмани на указанный почтовый ящик, жду три недели, спрашиваю - где? В ответ, "деньги не поступали", я им скриншон перевода и выясняется: Формально - виноват сам, морально - халтура магазина, видят что человек не уловил момент и молчат (интересно сколько таких уже), откровенно говоря, первый раз слышу Maney mail ... Вобщем, кривой магазин, а сервис еще кривее.
  14. Кстати, где чипы берете? Я так до сих пор в Digikey заказываю, в Элтех-е боязно ...
  15. Дык я же говорю, что отучил его от неогоциации и принудительно выставил линк 100M FD
  16. Я просто отучил u-boot проводить автонеогоциацию, теперь он считает что линк 100M FD есть всегда, что в принципе так и есть ...
  17. 9260 с помошью своего RTC может это же, правда его часики говорят на 20сек в сутки могут разбегаться ...
  18. Блин, уже напрягает ... Вот я и ищу "подхоящий", чтоб сам DC/DC для АВР-ки потреблял до десятка микроампер (хотя сильно сомневаюсь что такие бывают) ...
  19. Что то не вяжется у на с вами разговор ;) Я и так пока планирую питать АВР-ку от микропотребляющего линейника, спрашиваю народ, кто знает микропотребляющие DC/DC ...
  20. Сори, неверно выразился, основная система не в идле каком-нибудь, а полностью отключена.
  21. нет, обыкновенный ... Вся система на ARM9 спит 99% времени, будит ее по определенным событиям AVR-ка (которая так же спит большую часть времени), которую и нужно питать от 12В аккумулятора/батареи. Пока все-таки склоняюсь к варианту микропотребляющего линейного стабилизатора ...
×
×
  • Создать...