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

Исключение Hard Fault на Cortex-M3

1 hour ago, EdgeAligned said:

не мог понять, где именно "запрещенное слово" в тексте

Вспомнился старый анекдот (заодно и проверим детектор запрещённых слов)Ж

Quote

- Дети, запишите предложение: "В углу скребет мышь".
- Марьванн, а кто такой "скр"?
- СКР, Вовочка, это Следственный комитет России.

 

Ха! Не сработал.

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


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

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

Тест

экономит место, поскольку они уже есть в заголовочном файле, а нормальная IDE при наведении мышки показывает значения битовых масок, и при щелчке можно перейти в заголовочник прямо к описанию

Поэтому, даже если программист убежал в другую контору, описания битов никуда не денутся, они остаются  в заголовочнике и легко просматриваются.

И здесь у вас - классический пример индусского кода.

И проще послать подальше, чем реально разгрeбать портянки в попытке найти ошибку

PS. Блин, я раз пять переписывал этот текст, и не мог понять, где именно "запрещенное слово" в тексте. А оказалось, что приличное слово "разгр/е/бать" считается тут неприличным 🙂 

Снимок экрана 2024-08-23 090414.jpg

https://electronix.ru/forum/topic/188090-zapreschennye-slova/

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


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

21 hours ago, firstvald said:

стойкое ощущение, что что- то с обнаружением шума на линии приводит к такому результату

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

можно ловить на этапе написания кода, если внедрить embedded software testing

hello word для QA 

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


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

8 hours ago, EdgeAligned said:

Тест

экономит место, поскольку они уже есть в заголовочном файле, а нормальная IDE при наведении мышки показывает значения битовых масок, и при щелчке можно перейти в заголовочник прямо к описанию

Поэтому, даже если программист убежал в другую контору, описания битов никуда не денутся, они остаются  в заголовочнике и легко просматриваются.

И здесь у вас - классический пример индусского кода.

И проще послать подальше, чем реально разгрeбать портянки в попытке найти ошибку

PS. Блин, я раз пять переписывал этот текст, и не мог понять, где именно "запрещенное слово" в тексте. А оказалось, что приличное слово "разгр/е/бать" считается тут неприличным 🙂 

Снимок экрана 2024-08-23 090414.jpg

ааа. когда был модером на одном замечательном форуме то движек обучили всем всем нехорошим словам. писать посты стало невозможно. в любом предложении он находил матюги там,  где даже не подумаешь.

7 hours ago, EdgeAligned said:

Ладно, так и быть, показываю, как можно обходиться без вставки описания битов в рабочий текст:

2024-08-23095041.thumb.jpg.2cf9888db5fdf4c8908b62a93dc385a3.jpg

Так же, запись

usart_sr_my&USART_ISR_TXE

обычно принято писать с пробелами:

 

usart_sr_my & USART_ISR_TXE

дабы визуально был заметнее оператор и понятнее было, что там именно операция, а не набор букв. Небрежность в оформлении создает общее говнопредставление. В общем, в своем говнокоде, будьте любезны, разбирайтесь уж сами 🙂 

 

замечательна жизнь у людей которым "ааа где код мы тут не экстрасенсы". выкладываешь код "разбирайтесь сами". это с точки профессионализма ноль называется. 

3 hours ago, kpv said:

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

можно ловить на этапе написания кода, если внедрить embedded software testing

hello word для QA 

я уже подумал, что может не само прерывание, а то что за ним.  

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


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

Есть слова типа разгр/е/б/ать и употре/б/л/я/ть, у которых вторая половина слова - чисто матюковая.

--------------------

Если честно, в том коде написана какая-то дичь. Серьезно. Сколько бы не пытался разобрать код, всё сваливается к фейс-палму с тяжким вздохом.  

static long unsigned int usart_sr_my=0;

что это? Почему в размерности long int, то есть 64 бита? Почему 64 бита, если USART->SR имеет разрядность 32 бита, а регистр DR вообще содержит только 9 значащих бит? Ладно, а почему переменная static? Её содержимое - что, нужно сохранять при следующем входе в эту функцию? Но зачем, если в нее просто читается заново срдержимое регистра USART->SR

usart_sr_my=UART5->ISR;

Нет, ну серьезно, ЗАЧЕМ static?
Использование long int вероятно говорит о том, что сей код писал тот, кто еще недавно пересел с 8-битных МК. 

И такие вопросы - практически в каждой строчке. Там всё переписывать надо с нуля. Серьезно. Я совершенно не понимаю, ЗАЧЕМ туда воткнуто ВСЁ ВОТ ЭТО? Что это вообще такое? Не понимаю, чесслово. Может вы, firstvald, как автор расскажете, что это там написано и для чего?

if((usart_sr_my&USART_ISR_TXE)!=0){//ïî ïåðåäà÷å
                                   //äàííûå ïåðåäàëèñü â ñäâèãîâûé ðåãèñòð
	                                 //UART5->ISR&=~USART_SR_TC;
	                               //  UART5->ICR|=USART_ICR_TCCF  ;//ñáðîñèì ôëàã
	                                 UART5->RQR|=USART_RQR_TXFRQ  ;//ñáðîñèì USART_SR_TXE
                                  // tx_flag=1;
	
	                                 __nop();
                                  }	

Это - что такое? Что за ересь такая? Кто знает, что здесь написано? Объясните, плиз, что тут?

Кодировка, кстати, обычная широкораспространенная Win CP1251, ничего особого. 

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

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


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

3 hours ago, kpv said:

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

можно ловить на этапе написания кода, если внедрить embedded software testing

hello word для QA 

да. точно. не порт. после него,  где- то в обработке. 👍

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


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

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

что это? Почему в размерности long int, то есть 64 бита?

Справедливости для, все-таки, 32) но это не отменяет причуд)

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


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

2 часа назад, EdgeAligned сказал:

что это там написано и для чего?

if((usart_sr_my&USART_ISR_TXE)!=0){//ïî ïåðåäà÷å
                                   //äàííûå ïåðåäàëèñü â ñäâèãîâûé ðåãèñòð
	                                 //UART5->ISR&=~USART_SR_TC;
	                               //  UART5->ICR|=USART_ICR_TCCF  ;//ñáðîñèì ôëàã
	                                 UART5->RQR|=USART_RQR_TXFRQ  ;//ñáðîñèì USART_SR_TXE
                                  // tx_flag=1;
	
	                                 __nop();
                                  }	

Это - что такое? Что за ересь такая? Кто знает, что здесь написано? Объясните, плиз, что тут?

Это обычный говнокодерский набор: и запись в read-only регистр ISR; и чтение-модификация-запись ICR; и чтение write-only регистра RQR; и ещё и NOP до кучи добавлен (видимо когда автор костылил этот код, то совал в него всё, что знал). Как видим - мануал автор сего шедевра даже не пытался читать. Всё как всегда. Странно что это вообще как-то "работает"... :unknw:

В 21.08.2024 в 23:42, firstvald сказал:
usart_sr_my=UART5->ISR;
usart_rdr_my=UART5->RDR;//ïðî÷èòàëè áàéò è ïðè ýòîì

Ещё и чтение RDR без предварительного анализа флага RXNE. Баги почти в каждой строчке... мозг даже не включался... Мрак... :negative:

И ведь совсем недавно автор этого мрака пытался тут поучать - как нужно "правильно" с флагами ISR работать. Ну-ну..... :biggrin:

 

2 часа назад, EdgeAligned сказал:

Нет, ну серьезно, ЗАЧЕМ static?

Так бывает, когда программируют наугад. Не понимая как должна работать программа. И что именно означают применяемые ключ.слова языка программирования.

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


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

16 минут назад, Arlleex сказал:

все-таки, 32

А, да, это от настроек компилятора зависит. Стандарт не задает однозначности. В принципе, переопределения uint32_t для того и придуманы, чтобы была однозначность. 
Ладно, но static тогда зачем? Да и сама переменная тоже как бы не нужна.

В принципе, я вот сколько не пытался понять этот код, всё время путался в закомменченных строках. Ну и я как бы не понимаю назначение этой функции, названной modbus_usart_5(). Вообще, осмысленные названия функций для того и придуманы, чтобы отражать назначение и выполняемые действия. Небрежность в оформлении и форматировании кода затрудняет его просмотр и отладку. 

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


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

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

В принципе, я вот сколько не пытался понять этот код, всё время путался в закомменченных строках. Ну и я как бы не понимаю назначение этой функции, названной modbus_usart_5(). Вообще, осмысленные названия функций для того и придуманы, чтобы отражать назначение и выполняемые действия. Небрежность в оформлении и форматировании кода затрудняет его просмотр и отладку. 

Зато можно показать работодателю с словами: "Вона вишь какой сложный код! сколько труда потратил, сколько накодил! Премию давай!"  :biggrin:

Если выкинуть весь тот вздор, то кода будет с гулькин нос (чего там сложного-то в тривиальном UART?) А автор над ним может месяца два или три трудился! не покладая рук... :biggrin:  И как тогда оправдать перед хозяином галеры кучу потраченного времени? Вот и загромождается всё мусором. Для замазывания глаз. Типичный индусский подход. И чем менее понятно и более запутанно будет, тем легче спрятать разгильдяйство и дилетантство от неопытного наблюдателя. Это вы видите, что static там не нужен и даже вреден, но не всякий начальник это поймёт.

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


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

18 minutes ago, jcxz said:

Зато можно показать работодателю с словами:

- Ты первый и последний смотришь этот прекрасный текст, который увеличит прибыль нашего ООО "Рогакопытские Технологии" на 800%. Можно мне сейчас получить часть ? Пожалуйста.

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


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

3 hours ago, EdgeAligned said:

Это - что такое? Что за ересь такая? Кто знает, что здесь написано? Объясните, плиз, что тут?

TXFRQ: Transmit data flush request Writing 1 to this bit sets the TXE flag. This allows to discard the transmit data.

This bit must be used only in Smartcard mode, when data has not been sent due to errors (NACK) and the FE flag is active in the USART_ISR register

(это первый попавшийся под руку RefManual for STM32Lxxx, что там у автора - я не знаю)


Ну а вопрос "нафига это надо делать" вы не задавали :-)) Тем более, у меня нет на него ответа.

 

3 hours ago, EdgeAligned said:

Кодировка, кстати, обычная широкораспространенная Win CP1251, ничего особого. 

https://2cyr.com/ читает ЭТО с настройками "кодировка 1251 отображается как 1252". Ничего особенного, но чуть-чуть подумать надо.

 

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


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

Збасиба, мануал читать я умею 🙂 Я спрашивал, че за ересь в целом там написана 🙂 

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


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

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

В принципе, я вот сколько не пытался понять этот код...

А надо ли?

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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