Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

Re: MPLAB X IDE

Пн янв 09, 2023 17:18:15

Библиотеки или хотя бы база Code Example...

Озвучьте тип МК и задачу, которую вы на нем реализуете

PIC24FJ64GA004. Компилятор XC16. Устройство состоит из DF-Player (для звукового сопровождения, связь по UART), дисплея 1602 (связь по I2C через PCF8574) и кнопочной матрицы 3х4.
С помощью некоторых плясок с бубном, какой-то матери и трех вечеров времени :shock: , из UART, в итоге, выплевывается какой-то сигнал. Пока непригодный в пищу, DFPlayer просто плюется в ответ, не издав ни звука...

В общем, как по мне, путь честного дрыгнанья регистрами мне не очень нравится - довольно трудоемок...

Re: MPLAB X IDE

Вт янв 10, 2023 00:24:47

из UART, в итоге, выплевывается какой-то сигнал. Пока непригодный в пищу, DFPlayer просто плюется в ответ, не издав ни звука...

Тут желательно иметь под рукой PICkit Serial Analyzer и хотя бы простенький лог. анализатор. Чтобы не гадать где косяки возникли.

Re: MPLAB X IDE

Вт янв 10, 2023 02:54:03

Есть snap и PIC KIT 3. Возможно, с этим можно работать как с чем-то большим, чем программаторы? Я по буржуйски просто не сильно понимать, поэтому даже не знаю всего того, что там есть... Или как-то посмотреть в MPLAB, к чему, вообще, приводит мой код. Помню еще, симулятор там какой-то был. Попробовал, и ничего не понял. Я ожидал от него большего, чем предупреждения в окошке о переполнении стека от кода, который просто мигает светодиодом. Сам МК в железе при этом от того же кода работает корректно. Хотя бы картиночку с МК, где нарисовано, какие ножки и регистры затронуты...

Re: MPLAB X IDE

Вт янв 10, 2023 03:17:36

PICkit 3 в принципе может работать логическим анализатором. С родной программой PICkit 3 Programmer. Только возможности программного обеспечения крайне ограничены. Китайские клоны Saleae Logic куда как интереснее в этом плане.

Re: MPLAB X IDE

Пн янв 16, 2023 14:35:25

Господа, есть вопрос по компилятору XC32 камень PIC32MX460F512L
Собираю я данные по уарт, периодически смотрю, собрался весь пакет или нет, и тут я попадаю на грабли, точнее уже не первый раз.
Есть массив unsigned char uart_rx[512], в него по прерыванию прилетают байты, по последовательности байтов алгоритм начинает понимать что пришла посылка и далее начинает её разбирать, чтобы долго не возится была написана структура. В указатель на структуру копируется адрес начала посылки, и далее по логике остается только получить данные из структуры, вроде бы да, но если указатель на начало посылки начинается с нечётного числа то всё вылетает в аут поскольку в структуре присутствуют short, и при попытке получить данные через указатель на short получаю аналогичную шляпу или полную белеберду, поскольку копирует байт не с той стороны.
Есть какое нибудь решение кроме копирования для исправления ошибки смещения? :?

Re: MPLAB X IDE

Пн янв 16, 2023 16:41:48

Судя по некоторым понятным фразам, проблема с выравниванием.
Объясните проблему по подробнее, с кусками кода. Мало что понятно из Вашего поста :roll:

Re: MPLAB X IDE

Вт янв 17, 2023 10:24:46

Вечером времени не оказалось :(
:tea:

Re: MPLAB X IDE

Вт янв 17, 2023 13:45:51

alex_ писал(а):если обратиться к структуре(например serv->len) то тут вылетаем в ошибку
Естественно. Ошибка вылетает из-за того, что адрес получается невыровненный.
Создайте объект своей структуры и делайте побайтную копию из буфера. А потом уже работайте с ней.

Добавлено after 3 minutes 1 second:
Вопрос. Для чего Вам кольцевой буфер, если Вы данные принимаете в виде готовой структуры ? Не проще сразу в неё и принимать ? Или без кольца - приняли в буфер, скопировали в структуру, обработали.

Re: MPLAB X IDE

Вт янв 17, 2023 14:04:10

Собственно так уже и сделал, при сходстве начальных 2 байт и по достижению заданного размера копирую в другой буфер и уже указатель на структуру приравниваю к выровненному массиву. Я в начале думал, что ему пофиг откуда начинать считать байты, ан нет, он же блин 32разрядный, по 2 байта за раз засылает :tea:
Кольцевой буфер нужен для того чтобы не потерять данные в процессе обработки, к тому же не факт что успеет разобрать пакет до прихода новых данных.
Эх по уму надо на ДМА кольцевой буфер сделать, чтоб вообще без прерываний :roll:

Re: MPLAB X IDE

Вт янв 17, 2023 14:07:01

alex_ писал(а):Кольцевой буфер нужен для того чтобы не потерять данные в процессе обработки
С чего они потеряются, если они уже приняты и их осталось обработать ? Принимать нужно весь пакет от и до, а потом уже заниматься обработкой.

Re: MPLAB X IDE

Вт янв 17, 2023 14:10:36

Да но на камне висит куча других задач, и он просто во время не факт что успеет запрос обработать, я сначала так и делал, собирало всё нормально но когда загрузил камень основными задачами то всё и отвалилось, контроллер начал сваливаться в ресет

Re: MPLAB X IDE

Ср янв 18, 2023 01:12:16

Что-то Вы намудрили, если ресетится проц :)
По поводу "успеет" / "не успеет" обработать. Если Ваш код не успевает с обычным буфером, то кольцевой Вам не поможет. Оно и с ним будет не успевать. Нужно в корне пересматривать структуру программы.
Запустите FreeRtos и, из прерывания, по семафору отдавайте управление в задачу-обработчик, которая будет по приоритету выше остальных. Тогда всё будет успевать :)

Re: MPLAB X IDE

Ср янв 18, 2023 16:07:33

Я не использую никакие Rtos, обработка идёт в общем цикле while(1) по выставленным флагам, которые выставляются от таймеров и прерываниям а так же по внешнему входу(W5500). Когда было просто на прерываниях то постоянно в ресет вываливался, полагаю что просто попадал на переполнение стека. После сделал обработку по флагам, - кому надо все в очередь.
По прежнему вопросу, сделал пока без кольца, чтобы протестировать, и когда всё запустил программа по окончанию обработки стабильно вываливается в ресет, может опять на переполнение стека попадаю, какие регистры можно посмотреть после рестарта чтобы понять по какой причине вылетаем? Регистр RCON показывает софт ресет, но это фишка MPLABа он при ошибке сам ресетит контроллер, до этого писал на микросях, там контроллер просто вис и перезагружался по собаке.

Re: MPLAB X IDE

Ср апр 26, 2023 14:35:32

Может кто сталкивался, есть ли возможность поменять в настройках компилятора отключить функцию стирания всей прошивки перед записью, а стирать и писать постранично? При условии что не установлен бит защиты. Для чего это надо: после основного кода прошивки находятся настройки устройства, и он постоянно их затирает, при каждой перезаливке, несмотря на то что я только что откалибровал устройство :?
Согласен можно поставить внешнюю флешку, хотя бы на момент написания и отладки прошивки, но вдруг можно и в софтине настройки поменять :roll:

Re: MPLAB X IDE

Пт май 12, 2023 19:16:08

Вечером времени не оказалось :(
:tea:


А выровнять структуру при объявлении?
Код:
#pragma pack(push, 1)

struct Serv485u8// данные выдаются в формате char
{
    unsigned char Addr;  //1 1
    unsigned char contr; //1 2//0x5A 
    unsigned short len;  //2 4
    unsigned char pak[2];//2 6
    unsigned char c[1024];//передаваемые данные
};

struct
{
    unsigned char pac;
    unsigned char read;
}uk;//указатель на точки чтения и записи

#pragma pack()

Re: MPLAB X IDE

Сб май 13, 2023 23:33:05

Мне кажется тут даже не в выравнивании структуры, а в процессе обращения если указатель(адрес) оказывается нечётным, то всё сразу начинает идти по одному месту, поскольку контроллер 32 битный, 2 байта команда 2 байта данные то смещение на 1 байт ему ну очень не нравиться. Кстати функцию я эту уже полностью переписал, слишком сложно получилось и отнимает дополнительное время у контроллера.
Кстати я пытался копировать структуру по 2 байта через указатель на short работает быстрее чем копировать через указатель на char, но если опять же размер структуры оказывается нечётный или с нечётного адреса то опять слетаем в софт ребут, а с указателем на char дольше но всё стабильно копируется.

Re: MPLAB X IDE

Пт июн 30, 2023 16:53:14

Последнее время иногда компилятор стал зависать на минуту и более, если при этом выключить MPLAB, то он потом так же тормозит с прогрузкой файлов. Есть ощущение, что он что-то пытается по интернету сделать, но это не точно. Версия 6.0.

Периодически ещё выдаёт ошибку XC8 Timeout

Re: MPLAB X IDE

Пт авг 04, 2023 15:04:00

В итоге помогло убивать процесс xclm в диспетчере задач. Хотя так и не понятно, что происходит.

Re: MPLAB X IDE

Пн авг 07, 2023 09:56:12

Есть мнение, что ПК просто не тянет тяжёлую яву.

Re: MPLAB X IDE

Чт ноя 23, 2023 16:56:20

Пробовал ли кто эти 2 бита ногодрыгом дослать? :roll:

Ничего не надо досылать. Посылается количество бит, которое БОЛЬШЕ, чем требуемое. Лишние просто будут вытолкнуты в приемнике.

Дисплей на контроллере WS0010, а вот как называется - хрен вам с матрёшкой :tea: Пришлось поднять старую тему и перейти на аппаратный SPI.
Эта зараза не выталкивает не один лишний разряд, отсчитывая свои первые 10 бит их и принимает в обработку :kill:
Не первый день этот дисплей долбаю на аппаратном SPI, с командами вроде разобрался, выдаём 2 байта последние 6 бит просто игнорирует. А вот с догрузкой данных блин косяк, сначала надо выдать 2 бита а потом кратно 8 битам данные :facepalm:
Разработчики данного контроллера походу знают толк в извращениях :))

Добавлено after 3 hours 12 minutes 9 seconds:
Усё сдаюсь, аппаратный SPI здесь работать не будет, идеи кончились, только ногодрыг :( :facepalm:
Ответить