Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Re: Stm32 с чего начать изучение...

Вт дек 07, 2021 18:59:36

Наверняка есть какой нибудь костыль, Сишка вроде может все на свете сделать

Вы, вместо того, что костыли лепить, опишите зачем вам это. Что вы хотите этим костылём добиться.
Наверняка имеется иное, нормальное решение вашей задачи без костылей.

Re: Stm32 с чего начать изучение...

Вт дек 07, 2021 19:37:30

TEPEM, попробуй longjmp..

Re: Stm32 с чего начать изучение...

Вт дек 07, 2021 20:32:36

Проблема XY обнаружена.

Мое почтение Владислав! Как что то делаю, всегда захожу в наш топик на форуме и качаю ваши библиотеки)
На самом деле все уже решил. Делал аргонник ради забавы из ручника, ну осцил прикрутил, клапан, пульс прикрутил, и хотел по легкой алгоритм всяких ошибок и вариантов работы так решить. Как всегда вышло коряво но работает)

Но интерес остался на самом деле, хотя уже сказали что это не реализовать( Я думал есть что то для этого.

Longjmp что то интересное, что то не помню такого в КиР, описание в вики скудное(

Re: Stm32 с чего начать изучение...

Вт дек 07, 2021 21:43:02

TEPEM писал(а):не помню такого в КиР

Там этого нет. Это ассемблер. Причём даже не ARM, а C51.

Re: Stm32 с чего начать изучение...

Вт дек 07, 2021 22:27:41

Инструменты нужно осваивать, но не до фанатизма ассемблера! Когда же творить? 20 лет назад в экселе распознавал образы, 10 лет назад на тиньке в Бейсике делал фантастические проекты, а сейчас осваиваю инструменты для работы с stm32H743 и это уже самоцель!:(

Re: Stm32 с чего начать изучение...

Вт дек 07, 2021 22:40:15

Что то все перепробовал, почему может не очищаться флаг?

Re: Stm32 с чего начать изучение...

Вт дек 07, 2021 23:42:41

Точно TXE не устанавливается? Может, где-то в другом месте зависает?
Если именно здесь, то получается, что перед этим что-то вырубает SPI, как раз после SPI->DR = dat;

Re: Stm32 с чего начать изучение...

Ср дек 08, 2021 00:08:46

Я разобрался спс. Метод тыка самый полезный метод. Все регистры по пять раз перебрал, оказалось биты в AFR записываются из расчета с права младшие, хз де логика

Re: Stm32 с чего начать изучение...

Ср дек 08, 2021 06:42:30

TEPEM, функция Send_CMD - целый табун ошибок. Давай её текст сюда в нормальном виде, будем разбирать.

Re: Stm32 с чего начать изучение...

Ср дек 08, 2021 08:52:22

TEPEM писал(а):Что то все перепробовал

Зачем подряд дважды делать операцию чтение-модификация-запись над одним и тем же регистром?
Код:
GPIOA->ODR &= ~(1<<4);    // CS=0
GPIOA->ODR &= ~(1<<2);    // DC=0

Сделайте за один раз:
Код:
GPIOA->ODR &= ~((1<<2)|(1<<4));    // CS=0, DC=0

Следующий шаг - избавьтесь от чтения-модификации-записи, заменив это записью:
Код:
GPIOA->BRR = (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

Это не всё, вернее не главное. Посылка буде 16 бит вместо требуемых 8.

Re: Stm32 с чего начать изучение...

Ср дек 08, 2021 13:52:08

TEPEM, функция Send_CMD - целый табун ошибок. Давай её текст сюда в нормальном виде, будем разбирать.

Да я ее скопировал у кого то, потом добавлял что то в надежде получить результат. Поэтому и порты по очереди записаны, я разные комбинации пробовал. Логично же например, что чип селект при выборе устройства должен быть высокого уровня, а оказывается наоборот и так со всем

А разве вот это не делает 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

А разве вот это не делает 8Битный режим? SPI1->CR1 &= ~SPI_CR1_DFF;
Да, я забыл, что в F4 нет FIFO в SPI. Только в даташите сказано, что этот бит дёргать надо при выключенном SPI.
А на будущее запомните про SPI->DR, он в других контроллерах "особенный".

Код:
GPIOA->BRR = (1<<2)|(1<<4);    // CS=0, DC=0
Точно так же как нет регистра 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

Раз уж мы тут так здорово собрались, может просветите меня по давно волнующему вопросу
Почему нельзя порт на выход проверить на наличие там логического уровня
Код:
if(GPIOB->IDR & (1<<1))
Не работает если порт настроен на выход =(

Re: Stm32 с чего начать изучение...

Ср дек 08, 2021 21:47:04

Код:
if(GPIOB->IDR & (1<<1))
Не работает если порт настроен на выход =(

Входной драйвер не работает только в аналогом режиме, в RM все расписано, даже с картинками.

Re: Stm32 с чего начать изучение...

Ср дек 08, 2021 22:50:27

Всегда работало (кроме аналога само собой) - можно прямо в отладчики в ODR потыкать и убедиться, что на IDR появляется.

Re: Stm32 с чего начать изучение...

Чт дек 09, 2021 02:39:27

Очень странно, у меня отказалось(

Re: Stm32 с чего начать изучение...

Вс дек 12, 2021 14:58:01

Я тут решил поработать с примерами в CubeMX. Оказалось, что примеры грузятся по умолчанию в папку "Администратор", а потом при запуске примеров сыпятся ошибки на эту папку, типа русский не понимаю. Если в другую папку, то работают. А ещё почти все примеры на типичные процы не поддерживают CubeMX, а только CubeIDE. Как это понять? Сам себя не понимает?

Re: Stm32 с чего начать изучение...

Вт янв 18, 2022 22:44:13

Я теперь знаю с чего начать обучение - с языка си! Идеальный язык под железо, но не все так радужно. Раньше было только два железа PC и Apple, и два компилятора, а теперь тысячи процев и под каждый свой компилятор! Программисты не успевают отладить и много ошибок. Сам язык не привязан к конкретному железу, но использует множество библиотек и файлов сомнительного качества, а потом из всего собирается проект и исполняемый код и это трудно контролировать. Для творчества этот язык создавался в последнюю очередь.

Re: Stm32 с чего начать изучение...

Вт янв 18, 2022 23:12:46

а теперь тысячи процев и под каждый свой компилятор!

Что за чушь? Практически подо все приличные МК можно собирать посредством gcc. А под неприличные — sdcc.
А насчет "библиотек сомнительного качества" — так их только абдуринщики/калокубщики используют.
Ответить