Страница 35 из 82
Re: Stm32 с чего начать изучение...
Добавлено: Вт дек 07, 2021 18:59:36
Professor Chaos
[uquote="TEPEM",url="/forum/viewtopic.php?p=4137060#p4137060"]Наверняка есть какой нибудь костыль, Сишка вроде может все на свете сделать[/uquote]
Вы, вместо того, что костыли лепить, опишите зачем вам это. Что вы хотите этим костылём добиться.
Наверняка имеется иное, нормальное решение вашей задачи без костылей.
Re: Stm32 с чего начать изучение...
Добавлено: Вт дек 07, 2021 19:37:30
Eddy_Em
TEPEM, попробуй longjmp..
Re: Stm32 с чего начать изучение...
Добавлено: Вт дек 07, 2021 20:32:36
TEPEM
[uquote="VladislavS",url="/forum/viewtopic.php?p=4137097#p4137097"]
Проблема XY обнаружена.[/uquote]
Мое почтение Владислав! Как что то делаю, всегда захожу в наш топик на форуме и качаю ваши библиотеки)
На самом деле все уже решил. Делал аргонник ради забавы из ручника, ну осцил прикрутил, клапан, пульс прикрутил, и хотел по легкой алгоритм всяких ошибок и вариантов работы так решить. Как всегда вышло коряво но работает)
Но интерес остался на самом деле, хотя уже сказали что это не реализовать( Я думал есть что то для этого.
Longjmp что то интересное, что то не помню такого в КиР, описание в вики скудное(
Re: Stm32 с чего начать изучение...
Добавлено: Вт дек 07, 2021 21:43:02
Professor Chaos
TEPEM писал(а):не помню такого в КиР
Там этого нет. Это ассемблер. Причём даже не ARM, а C51.
Re: Stm32 с чего начать изучение...
Добавлено: Вт дек 07, 2021 22:27:41
linkov1959
Инструменты нужно осваивать, но не до фанатизма ассемблера! Когда же творить? 20 лет назад в экселе распознавал образы, 10 лет назад на тиньке в Бейсике делал фантастические проекты, а сейчас осваиваю инструменты для работы с stm32H743 и это уже самоцель!:(
Re: Stm32 с чего начать изучение...
Добавлено: Вт дек 07, 2021 22:40:15
TEPEM
Что то все перепробовал, почему может не очищаться флаг?
Спойлер

Re: Stm32 с чего начать изучение...
Добавлено: Вт дек 07, 2021 23:42:41
Eddy_Em
Точно TXE не устанавливается? Может, где-то в другом месте зависает?
Если именно здесь, то получается, что перед этим что-то вырубает SPI, как раз после SPI->DR = dat;
Re: Stm32 с чего начать изучение...
Добавлено: Ср дек 08, 2021 00:08:46
TEPEM
Я разобрался спс. Метод тыка самый полезный метод. Все регистры по пять раз перебрал, оказалось биты в AFR записываются из расчета с права младшие, хз де логика
Re: Stm32 с чего начать изучение...
Добавлено: Ср дек 08, 2021 06:42:30
VladislavS
TEPEM, функция Send_CMD - целый табун ошибок. Давай её текст сюда в нормальном виде, будем разбирать.
Re: Stm32 с чего начать изучение...
Добавлено: Ср дек 08, 2021 08:52:22
Professor Chaos
TEPEM писал(а):Что то все перепробовал
Зачем подряд дважды делать операцию чтение-модификация-запись над одним и тем же регистром?
Код: Выделить всё
GPIOA->ODR &= ~(1<<4); // CS=0
GPIOA->ODR &= ~(1<<2); // DC=0
Сделайте за один раз:
Код: Выделить всё
GPIOA->ODR &= ~((1<<2)|(1<<4)); // CS=0, DC=0
Следующий шаг - избавьтесь от чтения-модификации-записи, заменив это записью:
Уберите магические числа из основного кода, заменив их осмысленными именами:
Код: Выделить всё
#define SPI_CNTRL_PORT GPIOA
#define DC_PIN_POS 2
#define DC_PIN_MSK (1<<DC_PIN_POS)
#define CS_PIN_POS 4
#define CS_PIN_MSK (1<<CS_PIN_POS)
SPI_CNTRL_PORT->BRR = CS_PIN_MSK|DC_PIN_MSK; // CS=0, DC=0
Re: Stm32 с чего начать изучение...
Добавлено: Ср дек 08, 2021 13:48:27
VladislavS
Это не всё, вернее не главное. Посылка буде 16 бит вместо требуемых 8.
Re: Stm32 с чего начать изучение...
Добавлено: Ср дек 08, 2021 13:52:08
TEPEM
[uquote="VladislavS",url="/forum/viewtopic.php?p=4137288#p4137288"]
TEPEM, функция Send_CMD - целый табун ошибок. Давай её текст сюда в нормальном виде, будем разбирать.[/uquote]
Да я ее скопировал у кого то, потом добавлял что то в надежде получить результат. Поэтому и порты по очереди записаны, я разные комбинации пробовал. Логично же например, что чип селект при выборе устройства должен быть высокого уровня, а оказывается наоборот и так со всем
А разве вот это не делает 8Битный режим? SPI1->CR1 &= ~SPI_CR1_DFF;
Код: Выделить всё
void Send_CMD(uint8_t dat)
{ //Otpravka komand
GPIOA->ODR &= ~(1<<4) | (1<<2); //ChipSelect loy
SPI1->CR1 &= ~SPI_CR1_DFF;
while (!(SPI1->SR & SPI_SR_TXE));
SPI1->DR = dat;
while (!(SPI1->SR & SPI_SR_TXE));
while ((SPI1->SR & SPI_SR_BSY));
GPIOA->ODR |= (1<<4); //ChipSelect Up
}
Re: Stm32 с чего начать изучение...
Добавлено: Ср дек 08, 2021 14:15:02
VladislavS
[uquote="TEPEM",url="/forum/viewtopic.php?p=4137471#p4137471"]А разве вот это не делает 8Битный режим? SPI1->CR1 &= ~SPI_CR1_DFF;[/uquote]Да, я забыл, что в F4 нет FIFO в SPI. Только в даташите сказано, что этот бит дёргать надо при выключенном SPI.
А на будущее запомните про SPI->DR, он в других контроллерах "особенный".
[uquote="Professor Chaos",url="/forum/viewtopic.php?p=4137327#p4137327"]
[/uquote]Точно так же как нет регистра BRR. Так что, на выбор стандартное
Код: Выделить всё
//GPIOA->BSRR = ((1<<4)|(1<<2)) << 16;
LDR.N R1,??DataTable2
MOV R0,#+1310720
STR R0,[R1, #+0]
??DataTable2:
DATA32
DC32 0x40020018
или более оптимальное
Код: Выделить всё
//*(((volatile uint16_t *)&GPIOA->BSRR)+1) = (1<<4)|(1<<2);
LDR.N R1,??DataTable2
MOVS R0,#+20
STRH R0,[R1, #+0]
??DataTable2:
DATA32
DC32 0x4002001a
Re: Stm32 с чего начать изучение...
Добавлено: Ср дек 08, 2021 20:54:06
TEPEM
Раз уж мы тут так здорово собрались, может просветите меня по давно волнующему вопросу
Почему нельзя порт на выход проверить на наличие там логического уровня
Не работает если порт настроен на выход =(
Re: Stm32 с чего начать изучение...
Добавлено: Ср дек 08, 2021 21:47:04
Reflector
[uquote="TEPEM",url="/forum/viewtopic.php?p=4137731#p4137731"]
Не работает если порт настроен на выход =([/uquote]
Входной драйвер не работает только в аналогом режиме, в RM все расписано, даже с картинками.
Re: Stm32 с чего начать изучение...
Добавлено: Ср дек 08, 2021 22:50:27
VladislavS
Всегда работало (кроме аналога само собой) - можно прямо в отладчики в ODR потыкать и убедиться, что на IDR появляется.
Re: Stm32 с чего начать изучение...
Добавлено: Чт дек 09, 2021 02:39:27
TEPEM
Очень странно, у меня отказалось(
Re: Stm32 с чего начать изучение...
Добавлено: Вс дек 12, 2021 14:58:01
linkov1959
Я тут решил поработать с примерами в CubeMX. Оказалось, что примеры грузятся по умолчанию в папку "Администратор", а потом при запуске примеров сыпятся ошибки на эту папку, типа русский не понимаю. Если в другую папку, то работают. А ещё почти все примеры на типичные процы не поддерживают CubeMX, а только CubeIDE. Как это понять? Сам себя не понимает?
Re: Stm32 с чего начать изучение...
Добавлено: Вт янв 18, 2022 22:44:13
linkov1959
Я теперь знаю с чего начать обучение - с языка си! Идеальный язык под железо, но не все так радужно. Раньше было только два железа PC и Apple, и два компилятора, а теперь тысячи процев и под каждый свой компилятор! Программисты не успевают отладить и много ошибок. Сам язык не привязан к конкретному железу, но использует множество библиотек и файлов сомнительного качества, а потом из всего собирается проект и исполняемый код и это трудно контролировать. Для творчества этот язык создавался в последнюю очередь.
Re: Stm32 с чего начать изучение...
Добавлено: Вт янв 18, 2022 23:12:46
Eddy_Em
[uquote="linkov1959",url="/forum/viewtopic.php?p=4163848#p4163848"]а теперь тысячи процев и под каждый свой компилятор![/uquote]
Что за чушь? Практически подо все приличные МК можно собирать посредством gcc. А под неприличные — sdcc.
А насчет "библиотек сомнительного качества" — так их только абдуринщики/калокубщики используют.