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

Artery USART перестали работать

17 минут назад, fpga_student сказал:

и кажется есть пара файлов что не в бакапе. Это board.c и board.h. Как раз так неудачно вышло что между рабочими бакапами и сегодня произошла смена либы с 1.4 на 1.6, и также я поправил имя головной папки (что уж никак влиять не должно). Я сейчас сравнил старые новые файлы, в старых было несколько директив про компиляторы, в 1.6 эти директивы выпилили. На всякий случай вернул старые файлы - поведение не изменилось.

Ну вот... Да уж... Сперва надо с бардаком в своих исходниках, "либах" и прочих калокубах разобраться. Прежде чем пенять на UARTы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 12/27/2023 at 10:54 PM, jcxz said:

Ну вот... Да уж... Сперва надо с бардаком в своих исходниках, "либах" и прочих калокубах разобраться. Прежде чем пинять на UARTы.

Согласен( 15 лет пока сидел в конторе не писал( разучился(( Нету культуры(

 

Очень благодарен что няньчитесь. Нашел порт рабочий Ардуины на артери и стм. 

Доки Плата 

Тесты на любой ногодрыг собираются в Keil за 30 секунд. Божественно там сделан хал внутри. И ардуиновская экосистема с JTAG на армах

 

On 12/27/2023 at 10:23 PM, HardEgor said:

Выглядит как случайно вставленный в текст символ выключающий тактирование. Потому что всё порты не могли одновременно умереть

Вторая плата есть?

Мда вторую плату полностью сбросил на ней не работает ни один UART((

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, fpga_student сказал:

Мда вторую плату полностью сбросил на ней не работает ни один UART((

Однозначно глупый косяк в коде.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А тупо под отладчиком (скажу страшное - с остановленным ядром), прям руками, в регистрах UARTа нужные данные выставить и осциллографом посмотреть - запись в TDR будет данные отправлять, и будет ли приём в RDR одиночных байтов от ПК.
Кстати, если тактирования нет, то и регистры в отладчике будут недоступны.
Минут 40 на всё-про-всё нужно, зуб (ТСа) даю (((-8Ж

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 12/28/2023 at 12:05 AM, HardEgor said:

Однозначно глупый косяк в коде.

код-то родной пример от Artery

 

On 12/28/2023 at 12:58 AM, Obam said:

А тупо под отладчиком (скажу страшное - с остановленным ядром), прям руками, в регистрах UARTа нужные данные выставить и осциллографом посмотреть - запись в TDR будет данные отправлять, и будет ли приём в RDR одиночных байтов от ПК.
Кстати, если тактирования нет, то и регистры в отладчике будут недоступны.
Минут 40 на всё-про-всё нужно, зуб (ТСа) даю (((-8Ж

код исполняется вот такой

while(1){
    while(usart_flag_get(USART1, USART_TDBE_FLAG) == RESET);
    usart_data_transmit(USART1, USART1_tx_buffer[1]);
    //while(usart_flag_get(USART1, USART_TDBE_FLAG) == RESET);
    //usart_data_transmit(USART1, USART1_tx_buffer[USART1_TX_BUFFER_SIZE-data_count]);
    //while(usart_flag_get(USART3, USART_RDBF_FLAG) == RESET);
    //usart3_rx_buffer[USART1_TX_BUFFER_SIZE-data_count] = usart_data_receive(USART3);
    //data_count--;
  }
 

под отладчиком. По шагам. Можно смотреть в ассемблере как все дрыбает. Можно в кейле. Можно в иаре. Осцилл есно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 12/28/2023 at 11:20 AM, x893 said:

Проверил на своём AT32. Все UART работают отлично.

Везет( Я щаз залил ногодрыг во вторую плату. все пины дрыбают нормально в портах 1-3.

USART1 не работает(( Остальное вангую тоже(

Причем я вдруг понял что вообще весь cmsis обновлением библиотеки заменил на 1.6 с 1.4. Откатил щаз его обратно на 1.4. Толку 0.

 

 

Какой у вас проц ? У меня 403а

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 minutes ago, fpga_student said:

Везет( Я щаз залил ногодрыг во вторую плату. все пины дрыбают нормально в портах 1-3.

USART1 не работает(( Остальное вангую тоже(

 

Какой у вас проц ? У меня 403а

На 403А давно работал.

Сейчас 415СС

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 12/27/2023 at 10:54 PM, jcxz said:

Ну вот... Да уж... Сперва надо с бардаком в своих исходниках, "либах" и прочих калокубах разобраться. Прежде чем пенять на UARTы.

Вы как всегда правы((

 

Сделал я следующее. У меня есть пунктик, связанный с синтаксисом. Я не могу видеть в коде такое:

if(*pbuffer1 != *pbuffer2)

{
     return 0;
}

 

А мне нужно чтобы оно было такое:

if(*pbuffer1 != *pbuffer2){
     return 0;
}

Типа плотность кода на экране так выше(

 

В определенный момент как раз накануне UARTa, я решил наконец-то навести полный порядок, и натравил на все исходники любимый notepad++, которым сделал примерно 5000 замен скобок. Потом вошел во вкус, и сделал тоже самое со скобками в операторах file do else while.

И если первое преобразование прокатило - я его и до этого многократно делал, то после второго рухнул CMSIS. Он продолжал собираться, но молча перестал работать. Я этот момент толком не отловил. Потом, в процессе мучений и ковыряний попортил еще и файлы конфигов проектов. Дабы, как правильно сказал JCXZ не сделано нормальное древо проекта и бакапы были неполные((

 

Спасибо уважаемые простите за беспокойство(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты


On 12/28/2023 at 12:58 AM, Obam said:

А тупо под отладчиком (скажу страшное - с остановленным ядром), прям руками, в регистрах UARTа нужные данные выставить и осциллографом посмотреть - запись в TDR будет данные отправлять, и будет ли приём в RDR одиночных байтов от ПК.
Кстати, если тактирования нет, то и регистры в отладчике будут недоступны.
Минут 40 на всё-про-всё нужно, зуб (ТСа) даю (((-8Ж

код исполняется вот такой

while(1){
while(usart_flag_get(USART1, USART_TDBE_FLAG) == RESET);
usart_data_transmit(USART1, USART1_tx_buffer[1]);
//while(usart_flag_get(USART1, USART_TDBE_FLAG) == RESET);
//usart_data_transmit(USART1, USART1_tx_buffer[USART1_TX_BUFFER_SIZE-data_count]);
//while(usart_flag_get(USART3, USART_RDBF_FLAG) == RESET);
//usart3_rx_buffer[USART1_TX_BUFFER_SIZE-data_count] = usart_data_receive(USART3);
//data_count--;
под отладчиком. По шагам...}

НЕ надо в меня кодом самого высокого уровня тыкать (((-8Ж - толку от этого ноль.
Речь шла об проверке настроек УАППа - живой он или вообще даже не тактируется. А GPIO перенаправлены на УАПП?
Тема то как ваша названа? ;-)

И что в результате? Починилось? (((-;
Изменено пользователем Obam

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 29.12.2023 в 02:48, fpga_student сказал:

я решил наконец-то навести полный порядок, и натравил на все исходники любимый notepad++, которым сделал примерно 5000 замен скобок.

Зачем такое делать вручную, если специально для этого существуют стилизаторы кода? Попробуйте Astyle, он очень простой в использовании. Выберите готовый стиль, похожий на свой (что-то вроде --style=kr ), потом при желании можно под себя его донастроить. Уверен, для notepad++ есть плагины для работы с astyle. Но даже если нету - то можно простой макрос сделать, который будет вызывать astyle для текущего файла по какому-нибудь сочетанию клавиш.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 часов назад, Obam сказал:

while(

Это дурная привычка.

А представьте себе, что где нибудь в другом месте, с другим устройством сделать так же. Они друг друга заблокируют.

Нужно использовать прерывания, DMA.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 часов назад, fpga_student сказал:

if(*pbuffer1 != *pbuffer2){
     return 0;
}

Типа плотность кода на экране так выше(

Никогда не понимал такого "уплотнения", всегда переправляю, чтобы скобки были видны лучше...

Если уж хотите плотности, пишите if(*pbuffer1 != *pbuffer2) {return 0;}

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 12/29/2023 at 2:34 PM, mantech said:

Никогда не понимал такого "уплотнения", всегда переправляю, чтобы скобки были видны лучше...

Если уж хотите плотности, пишите if(*pbuffer1 != *pbuffer2) {return 0;}

Я думаю это зависит от головы( Я не могу патч себе на башку поставить, поэтому у меня должно быть так как я написал(

Тогда читаю текст программ чужих легко, иначе не могу((

 

On 12/29/2023 at 2:11 AM, Obam said:

НЕ надо в меня кодом самого высокого уровня тыкать (((-8Ж - толку от этого ноль.
Речь шла об проверке настроек УАППа - живой он или вообще даже не тактируется. А GPIO перенаправлены на УАПП?
Тема то как ваша названа? 😉

И что в результате? Починилось? (((-;

Честно, не буду так глубоко рыть в природу глюка. Сделал сегодня следующее.

Отладил регеэкспы для notepad++ и прошел исходники снова ими, контролируя финальный hex проекта, и дополнительно функционал 5 UART-ов (1,2,3,6,8), последовательно патча всю либу подменами:

1. \)\s*\r\n\s*{ или \)\s*\n\s*{  на \){   -успех
2. do\s*\r\n\s*{ на do{  -успех
3. else\s*\r\n\s*{ на else{  -успех

После всех правок .hex проекта и функционал UART-ов остались неизменными.

 

Как ни странно регэкспы 

while\s*\r\n\s*{ - маска не найдена
file\s*\r\n\s*{ на else{  - маска не найдена

 

в AT32F403A_407_Firmware_Library_V2.1.4 и AT32F403A_407_Firmware_Library_V2.1.6 ничего не нашли. Ну и хрен с ними(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...