|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 10:05 am
|
Страница 1 от 1
|
[ 7 мнения ] |
|
STM32F401RE изпълнява код само един път.
| Автор |
Съобщение |
|
VPavlov
Ранг: Популярен
Регистриран на: Съб Апр 01, 2023 9:59 am Мнения: 302
|
 STM32F401RE изпълнява код само един път.
Здрасти, В main.c имам това: В rawDataRead (); прочитам нулирам един uint8_t (readReg[1]), който ползвам за буферна променлива, която съхранявата даден регистър. Правя една маска uint8_t = 1, тъй като мисля че ме интересува най десния бит 00000001, но не съм на сто процента сигурен дали всъщност не тябва да е 10000000. После проверявам дали стойността на дадения бит е 1 и ако е, прочитам два регистъра и ги обединявам в int16_t. Криво-ляво то тук работи. Проблемът е че в режим на дебъг, а май и в нормално изпълнение rawDataRead (); се изпълнява само един път, по някога два, но в крайна сметка замира. Не разбирам защо се случва това нещо. Ако имате съвети благодаря предварително!
|
| Сря Авг 16, 2023 3:23 pm |
|
 |
|
syscop
Ранг: Форумен бог
Регистриран на: Пет Юни 03, 2005 9:39 pm Мнения: 2277
|
 Re: STM32F401RE изпълнява код само един път.
Светни един диод преди да викнеш функцията и го угаси след това. Може да свържеш скоп към него да гледаш какво става.
_________________ Определянето стойността на дадена величина се нарича ИЗМЕРВАНЕ! Опонентът се оборва с ФАКТИ, а не с ЕПИТЕТИ!
|
| Сря Авг 16, 2023 6:50 pm |
|
 |
|
VPavlov
Ранг: Популярен
Регистриран на: Съб Апр 01, 2023 9:59 am Мнения: 302
|
 Re: STM32F401RE изпълнява код само един път.
Благодаря, мисля че ще мога да пусна бордовия, на PA5. Карам го стъпка по-стъпка, в смисъл че съм сложил брейкпоинт-а в началото на функцията и после с F6 напредвам докато спре. Обикновено спира след като излезе от функцията, по някога влиза повторно в нея и до там. Понеже ползвам джъмпер кабели се чудя дали пък нещо да не прави добър контакт? Ако "скоп" стои за осцилоскоп то нямам лесен достъп до такъв, да не говорим че въобще не знам как се ползва 
|
| Сря Авг 16, 2023 9:26 pm |
|
 |
|
iss
Ранг: Ориентиран
Регистриран на: Съб Фев 06, 2016 8:29 pm Мнения: 237
|
 Re: STM32F401RE изпълнява код само един път.
Както са ти препоръчали вече - със светкането на диод може да се хванат проблемите много бързо, например светкаш го преди ais2ih_read_register и го гасиш на следващия ред, така при изпълнение ако остане да грее значи изпълнението не е изляло от горната фунция. Обаче да ти обърна внимание на други неща: readRegH/readRegL няма нужда да са uint8_t, направо ги сложи да са uint16_t (или по точно да са толкова uintXX_t колкото е CombData). То зависи какво е точно CombData? Защо не направо: Освен това твоето кастване с int16_t (число със знак или signed) може да доведе до интересни ефекти. И най-добрият съвет вече са ти го дали (без лоши чувства!): I don't recommend using ChatGPT for programming advice. It will produce some very confident-sounding but absolutely incorrect answers. 
|
| Сря Авг 16, 2023 10:22 pm |
|
 |
|
VPavlov
Ранг: Популярен
Регистриран на: Съб Апр 01, 2023 9:59 am Мнения: 302
|
 Re: STM32F401RE изпълнява код само един път.
 |  |  |  | iss написа: Както са ти препоръчали вече - със светкането на диод може да се хванат проблемите много бързо, например светкаш го преди ais2ih_read_register и го гасиш на следващия ред, така при изпълнение ако остане да грее значи изпълнението не е изляло от горната фунция. Обаче да ти обърна внимание на други неща: readRegH/readRegL няма нужда да са uint8_t, направо ги сложи да са uint16_t (или по точно да са толкова uintXX_t колкото е CombData). То зависи какво е точно CombData? Защо не направо: Освен това твоето кастване с int16_t (число със знак или signed) може да доведе до интересни ефекти. И най-добрият съвет вече са ти го дали (без лоши чувства!): I don't recommend using ChatGPT for programming advice. It will produce some very confident-sounding but absolutely incorrect answers.  |  |  |  |  |
Прав си друже, обаче учещ се човек има стотици въпроси, не мое да спамим форумите за всички. Работим с каквото има, ако се "закучат" много нещата тогава викаме неволята. Вярно че го предпочитам пред Гугъл и вярно че бота бърка работите и всеки път като го поставя под съмнение ми пише че съм бил абсолютно прав  , което носи още повече объркване, но в много неща дава добри отправни точки. В общи линии гледам да го питам за по-общи неща. Конкретно за кодът гледам от едни туториали за програмиране на регистри. Благодаря ти за съветите! Принципно чета 8 битови регистри и поради тази причина полагам съдържанието в 8 битови променливи (това от туториала който гледах, за друг тип сензор). На края ги обединявам в 16 битова променлива, защото така го дават в един документ предназначен да подпомогне програмирането, за този сензор - application notes. Всъщност там не е обяснено точно това, използват термина конкатенация и добавят примерни пресмятания, в които примери обаче имаше минусови стойности, от там и обединението в число със знак. Разбирам че предложението ти е да извърша конкатенация като запиша 8 битовите регистри последователно в 16 битовата променлива и най-вероятно така е по-добре, най-малкото защото ще пропуснем използването на readRegH&L. Да ти кажа право мина ми през акъла, но остана висящо. Ще го направя.
|
| Чет Авг 17, 2023 9:49 am |
|
 |
|
relsys
Ранг: Форумен бог
Регистриран на: Пет Ное 25, 2005 11:41 am Мнения: 1680
|
 Re: STM32F401RE изпълнява код само един път.
Той тоя код как въобще се компилира? Половината променливи не са декларирани.... Ползвай union за прочитането на данните. Така ще спестиш шифтването. Четеш 2 пъти в readData[0] и readData[1], u после взе аш резултата от combData.
|
| Вто Авг 22, 2023 12:35 pm |
|
 |
|
palavrov
Ранг: Форумен бог
Регистриран на: Вто Окт 11, 2011 11:53 pm Мнения: 4582 Местоположение: Brussels / Пловдив
|
 Re: STM32F401RE изпълнява код само един път.
С едно на ум за индианците, големи, малки ...
_________________ Мразя да мразя ...
|
| Вто Авг 22, 2023 2:53 pm |
|
|
|
Страница 1 от 1
|
[ 7 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 2 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|