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

Чижик

Участник
  • Постов

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

  • Посещение

Репутация

0 Обычный

Информация о Чижик

  • Звание
    Участник
    Участник

Посетители профиля

685 просмотров профиля
  1. Забавно. Но об этом нигде нет упоминаний и примеров. Здорово. Спасибо.
  2. Битовые инструкции, например BSF PORTA,3 BCF PORTB,5 выполняются в режиме Read-Modify-Write над регистром с абсолютной адресацией PORTA, PORTB. Есть ли возможность (или хак) исполнить аналогичное в режиме косвенной (inderect) адресации? char adr = 0x0C; //адрес PORT A в нулевом банке; //аналог BSF PORTA,3 di(); FSR0L = addr; FSR0H = 0; INDF0 = INDIF0 | 0x04; //аналог BSF PORTA,3 ei(); //аналог BCF PORTA,5 di(); FSR0L = addr; FSR0H = 0; INDF0 = INDIF0 & (~0x10); //аналог BCF PORTA,5 ei(); Для регистров общего назначения (памяти) такое годится, а специальный регистр может в момент modify поменять свое значение. Это может потребоваться когда часть битов регистра используются USART или/и I2C и не должны быть затронуты операцией записи (как мне кажется). Прав ли я? Спасибо.
  3. Все очевидное - просто. Действительно, зашел ум за разум. Спасибо.
  4. Момент в том, что предполагается, что EEPROM может быть перезаписан отдельно от программы этими массивами структур с другим количеством элементов с соответственно, вычисленными и записанными новыми смещениями в начальные ячейки с известными адресами. Поэтому первый вопрос интересен в принципе. Второй удобен для момента отладки. Это к тому, что решение типа cnt = LEN_CTL_MAX; while (cnt) { regCtl.ctlByte[cnt] = _ctl_table[numReg].ctlByte[cnt] cnt--; } не годится, в общем случае. Только while (adr_l < adr_h) { regCtl.ctlByte[cnt] = DATAEE_ReadByte(adr_l); adr_l++; } где alr_l и adr_h абсолютные значения. P.S. Кстати, что-то похожее обсуждали на форуме лет 5 назад. Но с удобоваримым решение как мне помнится не сложилось.
  5. Тут у Microsoft-а прочитал, что от начала обновления до полного завершения установки обновлений у WIN10 может пройти (потребоваться) до 8 часов. Стабильность win в этот период не гарантируется. Может и это наложилось. Сейчас третий месяц работаю, нет проблем.
  6. typedef union { uint8_t ctlByte[8]; struct { uint8_t address; uint8_t actBit; uint8_t invBit; uint8_t outBit; uint8_t upSend; uint8_t dnSend; uint8_t dummy0; uint8_t dummy1; }; } reg_ctl_table_t; typedef struct { uint8_t devMask; uint8_t chipMask; uint8_t actMask; } filter_t; #define ADR_FILTER 8 //адрес начала таблицы фильтров в EEPROM #define NUM_FILTER 8 //кол-во таблиц #define ADR_CTL_MAX 20 //адрес начала таблицы управления в EEPROM #define LEN_CTL_MAX 8 __eeprom uint8_t _num_pic = PIC_MAX; //кол-во используемых регистров GPIO __eeprom uint8_t _num_i2c = I2C_MAX; //кол-во внешних регистров I2C __eeprom uint8_t _num_reg = REG_MAX; //количество таблиц __eeprom uint8_t _adr_control = ADR_CTL_MAX; //адрес массива таблиц управления __eeprom uint8_t _len_control = LEN_CTL_MAX; //размер таблицы управления __eeprom uint8_t _num_filter = NUM_FILTER; //кол-во таблиц __eeprom uint8_t _adr_filter = ADR_FILTER; // адрес таблицы в EEPROM фильтров __eeprom uint8_t _dummyx = 0; //выравнивание до 8 __eeprom filter_t _filter[NUM_FILTER] = { //кол-во кратно 8 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8 }; __eeprom reg_ctl_table_t _ctl_table[REG_MAX] = { //кол-во кратно 8 0x0C, 1, 2, 3, 4, 5, 6, 7, 0x0E, 1, 2, 3, 4, 5, 6, 7, 0x20, 1, 2, 3, 4, 5, 6, 7 }; Добрый день. Есть фрагмент определения размещения данных двух структур в EPPROM. Тут все вроде бы понятно. Но... Вопрос первый. Как заставить компилятор располагать все данные в том порядке как они описаны? {Компилятор наровит расположить их по убыванию размеров структур.} Вопрос второй. Можно ли как то автоматически сформировать в ячейке _adr_control значение смещения начала таблицы _ctl_table, и соответственно для _filter в _adr_filterб не используя ручной подсчет и определение через define. Спасибо.
  7. Прошло три дня. Включил комп чистить реестр. При включении зашли очередные обновления win. Захожу в MPLABX. И все работает как часы. Как будто ничего и не было... Кто виноват и что это было... не понятно. Тема закрыта. Все опять счастливы. Надолго ли...
  8. На новом компе с WIN 10 был установлен неделю назад MPLABx 6.0 и MCC к нему. Работал с проектом на PIC18F25K80 на XC8. Вопросов не было. Не уловил момент, не то после установки XC16, не то просто вдруг при обращение для PIC18F25K80 написал The selected device is not supported by any of the content type. При этом для созданного проекта на PIC24 вызывается и нормально все строит. Для любой восьмерки не запускается. Удалил. Поставил заново, но уже MPLAB 5.5, как на старом компе. Тоже самое. Снес. Руками почистил ../.mcc ../.mcp_pack ..\AppData\Roaming\mplab_ide Переустановил JAVA VM. Ставил MCC и библиоnеку в ручном режиме. Ничего не помогает. Единственное в Notifications в сообщении Pack updates available for instslled packs висит ошибка java.lang.NullPointerExcaption at com.microchip.mplab.nbide.packmanageruiw.PackManagerUIComponent.lambda$filterPackUpdates$8(PackManagerUIComponent.java:318) ...и еще много букв. Надо как-то снести MPLBx, так чтоб не было следов предыдущей установки. Комп переустанавливать нельзя, а IDE на нем была бы очень полезна. Кто может что-нибудь подсказать - Помогите. Спасибо.
  9. Зачетно, но минималистичный софт от MicroChip-a.
  10. Да, такой вариант рассматривается. По деньгам почти тоже, а с учетом разборок с софтом путь достаточно тернист и сам требует последующей кропотливой интерпретации через WIRESHARK. Удобно иметь коробочку, например, с Али и интерфейсный софт от Saleae (типа "набора Saleae от Али"). Не дорого, но сердито. И тут была бы интересна коробочка от Али и софт от ZLG https://www.zlg.com/can/can/product/id/42.html или Vector https://www.vector.com/int/en/download/?tx_vectorproducts_productdownloaddetail[download]=2164&tx_vectorproducts_productdownloaddetail[action]=show&tx_vectorproducts_productdownloaddetail[controller]=Productdownload&cHash=19d24b831b7bfc82fe0189b41cab4fb9 Многие осудят такой подход. Авторские права и прочее. Но есть взгляд о доступности интеллектуальных достижений человечества. Извините за оффтоп. Спасибо, всем.
  11. 1. Не принципиально. 2. 4-5 тыр. Но непонятно, что я буду иметь в итоге. Что за софт с ним совместим. Где его брать и сколько еще платить. 3. Что есть профессиональная работа? Я сам профессионал со стажем и могу смело утверждать (в своей области), что цена профессионального инструмента никак не коррелирует с профессионализмом выполнения работы. А цена многих инструментов брендирована и ее бесценность только в том, что они могут быть востребованы в единичных экземплярах. Инструменты используемые массами им и доступны. Это не касается инструментов "ручной работы из экологически чистых материалов". Но это другая история. P.S. Тем не менее с удовольствием ознакомлюсь с Вашим предложением. Я здесь не завсегдатай, поэтому не знаю о каком продукте идет речь. Можно в личку.
  12. Да, это есть. На физическом уровне смотреть могу. Спасибо. Вопрос, конкретен. Если далее перейти от CAN как такового к стеку CANopen, то нужен инструмент для анализа стекового трафика и конфигурирования сервисов нод. С вариантом Х1 все более менее понятно, надо разбираться и что-то допиливать. Про X3 есть обзор http://microsin.net/programming/arm/usb-can-canalyst-ii.html. Но стоит 4-5 тыр, а Х2 можно взять за 2 тыр. Держал ли кто в руках и то и/или другое. Вариант X2 и X3 совместимы с ZLG CANPro Analyser. Вопрос - кто-то использовал X2 с этим ПО.
  13. Добрый день. Изучаю CAN в домашних условиях, за свой счет. Хотелось бы приобрести на алике анализатор протокола CAN. Не дорого. Есть пара вариантов. Народ покупает X1 и жалуется, что не подходит никакой софт. А какой есть на китайском. Но продолжает упорно покупать -купили >200шт. Есть вариант X2, пишут - CAN Bus анализатор CANOpenJ1939 USBCAN-2A USB к CAN двойной путь совместимый ZLG. Зашел на сайт ZLG, качнул [Application Software] CAN_ Pro protocol analysis platform..... . Установил. Без анализатора не запускается, но есть выбор языка, и что-то там про английский. Есть вариант X3, но дороговат. Анализатор CAN CANOpen J1939 USBCAN-2II конвертер совместим с ZLG USB to CAN. Народ покупает, не жалуется на отсутствие софта. Короче что посоветуете.
  14. Да, это надо иметь ввиду. Чтоб была ясность - PCF8574 ... не имеют внутренних адресуемых регистров, поэтому не понимают "повторного старта", используемого для указания внутреннего адреса регистра уст-ва на шине I2c. И если их физ. адрес совпадает с внутренним адресом устройства на шине I2c, они "отзовутся" на этот адрес в адресной последовательности "повторного старта". Для них каждый "старт" - первый. PS Если PCF 8574 нормально "встал" на шину i2c, то в /sys/class/i2c-adapter/i2c-x/x-0020/ появится /gpio/gpiochip248 <-- первый номер GPIO, т.е. echo 248 > export .... echo 255 > export
  15. Классическая линуксовая засада. Модуль называется gpio-pcf857x.ko HO! загружаем командой echo pcf8574 0x20 > /sys/class/i2c-adapter/i2c-6/new_device и все срабатывает. Сейчас (после двух суток разглядывания листинга модуля) кажется логичным в стиле ЛИНУХ-ВЭЙ. Но требует раздвоения сознания. РЕШЕНО. PS Далее зреет вопрос по модулю PCA9685 и его связи с PWM-PCA9685 и PWM. Но это уже завтра.
×
×
  • Создать...