Snowmen10 0 April 24 Posted April 24 · Report post Добрый день. Имеется устройство на pic18. один из выводов на котором висит светодиод(их там 4 всего) был сожжен. Именно этот светодиод важен. Возможно ли в считанном дампе найти байт отвечающий за адрес вывода и заменить его на другой пин? Глянул hex, естественно не нашел в нем имена выводов согласно даташиту(было бы странно если бы было так легко). спасибо. Quote Share this post Link to post Share on other sites More sharing options...
Driver_GV 2 April 24 Posted April 24 · Report post Если дамп не состоит из нулей. Заменить не достаточно. Надо еще настроить . и если он не занят альтернативной функцией. Като так для начала . Quote Share this post Link to post Share on other sites More sharing options...
x893 76 April 25 Posted April 25 · Report post 18 hours ago, Snowmen10 said: Добрый день. Имеется устройство на pic18. один из выводов на котором висит светодиод(их там 4 всего) был сожжен. Именно этот светодиод важен. Возможно ли в считанном дампе найти байт отвечающий за адрес вывода и заменить его на другой пин? Глянул hex, естественно не нашел в нем имена выводов согласно даташиту(было бы странно если бы было так легко). спасибо. Возможно конечно. Quote Share this post Link to post Share on other sites More sharing options...
siargy 10 April 26 Posted April 26 · Report post On 4/24/2025 at 8:37 PM, Snowmen10 said: Глянул hex, естественно не нашел в нем имена выводов согласно даташиту открыть в мплаб, там всё будет Quote Share this post Link to post Share on other sites More sharing options...
Snowmen10 0 June 13 Posted June 13 · Report post Добрый день. Пытаюсь освоить CAN адаптер на pic18f25k80. битрейт нужен 33.3kbps в шине. начал с малого - слушаем шину ловим пакет с нужным заголовком и мигаем светодиодом. кварц внешний 16мгц mplab битрейт 33.3 предлагает но сообщает, что рассчитать параметры под него не может. и вручную в mcc выбрать для проверки разных комбинаций не дает. окей. соглашаюсь с тем что есть пишу минипрошивку. Из урока с сайта микрочип беру программу под данный контроллер. вырезаю из нее все кроме единственного фильтра по одному заголовку пакета. и в случае получения данного пакета, мигает светодиод. if (CAN_receive(&rxMessage)) { if (rxMessage.frame.id == 0x260) { LED_Toggle(); __delay_ms(100); LED_Toggle(); __delay_ms(100); } т.е. сам адаптер в шину ничего не шлет. компиллирую заливаю проверяю. при подключении в авто- вешается шина авто. точно знаю что под данный контроллер с данным кварцем есть прошивка, успешно работающая на той же машине. т.е. автор иной прошивки добился работы на 33.3kbps с заданным конфигом железа. у меня же шина вешается просто от прослушивания. меняю битрейт на 20kbps - шина не вешается но и не читается ничего естественно. меняю на 50kbps - шина вешается. вопрос такой. если стандартно mplab не дает настроить корректно нужную скорость, не дает вручную ввести отличные от предложенных параметров фазы кванты и т.д., чем добиваться работоспособности? сторонними библиотеками? Quote Share this post Link to post Share on other sites More sharing options...
Arlleex 282 June 13 Posted June 13 · Report post 10 минут назад, Snowmen10 сказал: чем добиваться работоспособности? сторонними библиотеками? Калькулятором и даташитом. Quote Share this post Link to post Share on other sites More sharing options...
A.V.Avtomat 48 June 13 Posted June 13 · Report post Ну да, это древнее семейство, там скорее всего тактовая частота кварца не делится как угодно, скорее всего кварцевый резонатор придётся менять. Quote Share this post Link to post Share on other sites More sharing options...
Snowmen10 0 June 13 Posted June 13 (edited) · Report post 10 минут назад, A.V.Avtomat сказал: Ну да, это древнее семейство, там скорее всего тактовая частота кварца не делится как угодно, скорее всего кварцевый резонатор придётся менять. в том-то и прикол, что именно на данном железе именно с этим кварцем прошивка чужая шуршит стабильно в машине. шлет и получает пакеты на шине с 33.3kpbs. я собираю прошивку и не работает и вешает шину. заливаю обратно дамп чужой - работает всё. хотя mcc сам предлагает вариант 33.3 но предупреждает, что не может на нем рассчитать прочие параметры шины. есть еще одна шина в машине - 95kpbs. под нее вообще нет предложения от mcc. в коде вижу как меняются данные строки при изменении битрейта и пдругих параметров шины: BRGCON1 = 0x03; BRGCON2 = 0xA8; BRGCON3 = 0x01; однако расшифровку и зависимость не вычислил, чтоб вручную вбить. пошел далее. на stm32 с кантрансивером собрал тестер. он шлет пакет. pic должен получить его и мигнуть диодом. мигает. отлично. в ответ пик должен отправить свой пакет. стм32 его получает и в порт на терминал мне пишет ОК. железки работают на 125kbps. т.е. с кодом проблем нет. все шуршит. обмен двухсторонний и железо на чужой прошивке шуршит. а я сконфигурировать не могу на нужную частоту. даже если и найти калькулятор битрейта шины, то он выдает не круглые значения. а в mcc в предложении только круглые и не так много вариантов. в коде в файле *.c вообще те самые байты непереводимые. В общем ищу как руками без всяких mcc сконфигурировать. Edited June 13 by Snowmen10 Quote Share this post Link to post Share on other sites More sharing options...
Arlleex 282 June 13 Posted June 13 · Report post 9 минут назад, Snowmen10 сказал: BRGCON1 = 0x03; BRGCON2 = 0xA8; BRGCON3 = 0x01; Какое содержимое генерит среда для этих регистров при скорости, на которой есть коннект с STM-кой? 1) Заданный бит-рейт; 2) Частота припаянного кварца. Quote Share this post Link to post Share on other sites More sharing options...
Snowmen10 0 June 13 Posted June 13 · Report post 2 часа назад, Arlleex сказал: Какое содержимое генерит среда для этих регистров при скорости, на которой есть коннект с STM-кой? 1) Заданный бит-рейт; 2) Частота припаянного кварца. Baud rate: 125kbps System frequency: 16000000 ECAN clock frequency: 16000000 Time quanta: 8 Sample point: 1-1-4-2 Sample point: 75% */ BRGCON1 = 0x07; BRGCON2 = 0x98; BRGCON3 = 0x01; Quote Share this post Link to post Share on other sites More sharing options...
Arlleex 282 June 13 Posted June 13 · Report post BRGCON1 = 0xB; BRGCON2 = 0xBF; BRGCON3 = 0x2; Битрейт должен получиться 33333,33 кбит/с, семплпоинт 85%. Quote Share this post Link to post Share on other sites More sharing options...
girts 22 June 14 Posted June 14 · Report post 15 hours ago, Snowmen10 said: точно знаю что под данный контроллер с данным кварцем есть прошивка, успешно работающая на той же машине. т.е. автор иной прошивки добился работы на 33.3kbps с заданным конфигом железа. Машина... и 33.3333kb... А случайно не пытаетесь обычным драйвером подключится к какому нибудь CAN-SW (GM) или CAN-FT? А CAN прослушка - внатуре пассивная? Или всё же слушающе не передающая - но активная (ACK)? В аттаче - давно забытый всеми софтварь некой очень известной канторы в некоторых кругах (Не Microchip). Весьма наглядно, и общеобразовательно. MBTime.zip Quote Share this post Link to post Share on other sites More sharing options...
Arlleex 282 June 14 Posted June 14 · Report post 41 минуту назад, girts сказал: Машина... и 33.3333kb... А случайно не пытаетесь обычным драйвером подключится к какому нибудь CAN-SW (GM) или CAN-FT? А CAN прослушка - внатуре пассивная? Или всё же слушающе не передающая - но активная (ACK)? В аттаче - давно забытый всеми софтварь некой очень известной канторы в некоторых кругах (Не Microchip). Весьма наглядно, и общеобразовательно. MBTime.zip 2.04 МБ · 0 загрузок Раз шину вешает то 100% не пассивная. 1 Quote Share this post Link to post Share on other sites More sharing options...
Snowmen10 0 June 14 Posted June 14 · Report post 2 часа назад, girts сказал: обычным драйвером вы про железо или про софт? как писал выше - эта железяка отлично работает на той же шине с другой прошивкой. Могу лишь добавить, что это однопроводной gm-lan. т.е. canLow на выходе трансивера посажен на землю. но опять же. железяка с другой прошивкой шуршит. код стандартный у меня из учебника микрочипа. на двухпроводной шине плата на стенде обменивается на стандартных скоростях(например 125) с другим адаптером на стм32. где судя по библиотеке, тоже никакого волшебства. Судя по "The basic idea to overclock part of the frame and to oversize the payload dates back to 1999.[2] Developed in 2011 and released in 2012 by Bosch,", у меня 100% не FD, а "классический" CAN. вопрос лишь в ручном пересчете под нестандартные частоты, под которые mplab не способен посчитать параметры. а потом, если рассчитаю, еще и в три строки с байтами перевести(выше они упоминались в комментариях). об этом вообще информацию не могу найти. я про это вот BRGCON1 = 0x07; BRGCON2 = 0x98; BRGCON3 = 0x01; 9 часов назад, Arlleex сказал: Битрейт должен получиться 33333,33 кбит/с, семплпоинт 85%. спасибо. еще такое вот нашел. " Регистры для MCP2515 Oscilator Frequency 8.000 MHz Target CAN Bus Baud Rate 33.333 kbps Selected Options BRP-1 (Baud Rate Prescaler) 4 Tq (Time Quanta) 1.250 Number of Time Quanta 24 Bit Timing Setup in Tq Propagation Delay 7 Phase Segment 1 8 Phase Segment 2 8 Syncronization Jump Width (SJW) 1 Configuration Register Setup (MCP251X) Register Binary Hexadecimal CNF1/BRGCON1 b'00000100' 0x04 CNF2/BRGCON2 b'10111110' 0xBE CNF3/BRGCON3 b'00000111' 0x07" Буду пробовать. Quote Share this post Link to post Share on other sites More sharing options...
Snowmen10 0 June 14 Posted June 14 · Report post спасибо за наводки. пытаюсь разобраться. Сгенерировав в mplab с десятка два комбинаций, вычислил где что прописывается. BRGCON1: BRP - младший байт SJW - второй байт SJW пересчет значение 1-3 в коде 0-8 BRGCON2: ps1 и PropagationT ps1 соответствие второй байт BRGCON2 значение 2-4-6-8 в код 8-9-A-B пересчет PropagationT младший байт BRGCON2 значение 1-2-3-4-5-6-7-8 в код 8-9-a-b-c-d-e-f BRGCON3: ps2 младший байт в коде = (значение-1) значение 12 код 01 тут неясно по PS1. калькулятор выдает иногда значение 5. а как его ввести, если 4 это 9, а 6 это уже A. как между 9 и A вставить значение соответствующее 5?? воспользовался программой по ссылке выше и canCalkulator от Microelectronica программы выдают разные параметры под один битрейт. в canCalkulator видно, что это связано с разными допусками сэмплпоинт - она прям вариантов 20 сразу генерирует поскольку на столе стенд из принимающе-передающей stm32, настроенной на 95кбпс и исправно на ней работающей с шиной в авто, решил просчитать варианты под данный битрейт, чтоб ничего не перешивать не переделывать. ДЛЯ понимания правильности МОЕГО ПОНИМАНИЯ кодирования. Имеем для 16мгц(кварц 4мгц и 4pll)\95кбпс TQ17 BRP5 PS1-6 PS2-2 Prop-8 не работает BRGCON1 = 0x05; // sjw=1tq BRP 5 BRGCON2 = 0xAF; // PS1 6TQ PropagationT 8TQ BRGCON3 = 0x01; // PS2 2TQ TQ12 BRP-6 PS1-6 PS2-2 Prop-1 не работает BRGCON1 = 0x06; // sjw=1tq BRP 6 BRGCON2 = 0xA8; // PS1 6TQ PropagationT 1TQ BRGCON3 = 0x03; // PS2 4TQ TQ17 BRP-5 PS1-4 PS2-2 Prop-8 не работает BRGCON1 = 0x05; // sjw=1tq BRP 5 BRGCON2 = 0x9F; // PS1 4TQ PropagationT 8TQ BRGCON3 = 0x03; // PS2 4TQ TQ17 BRP-5 PS1-2 PS2-6 Prop-8 не работает BRGCON1 = 0x05; // sjw=1tq BRP 5 BRGCON2 = 0x8F; // PS1 2TQ PropagationT 8TQ BRGCON3 = 0x05; // PS2 6TQ ни один из вариантов не работает. 4 варианта это из калькуляторов предложения при заданных 16мгц\95кбпс Quote Share this post Link to post Share on other sites More sharing options...