STM32 Интерактивная шахматная доска.

alexlaw

✩✩✩✩✩✩✩
3 Янв 2020
89
2
Воронеж
Посоветуйте, как и где можно заказать плату, исходя из сегодняшних реалий.
 

alexlaw

✩✩✩✩✩✩✩
3 Янв 2020
89
2
Воронеж
Есть ветка посвящённая этому
Да, я видел. Но не подхожу под условия заявленные там.
Плату заказал в Китае. Жду. Кому интересно могут продать излишки.
Там минимальный заказ 5 шт
Как бонус обсудим программные и производственные вопросы.
Мне бы хотелось найти единомышленника, довести до готового решения.
 

alexlaw

✩✩✩✩✩✩✩
3 Янв 2020
89
2
Воронеж
C Attiny работает не стабильно, stm через раз читает правильно
Вопрос закрыл.
У меня же на STM UART настроен - parity even.
C:
Control register 1 (USART_CR1)
Bit 10 PCE: Parity control   
0: Parity control disabled
1: Parity control enabled
Bit 9 PS: Parity selection
This bit selects the odd or even parity when the parity generation/detection is enabled (PCE
bit set). It is set and cleared by software. The parity will be selected after the current byte.
0: Even parity
1: Odd parity   

        USART1->CR1 |= USART_CR1_PCE;
        USART1->CR1 &=~ USART_CR1_PS;
Включил parity even на Attiny, и все заработало как по маслу.

C++:
Биты UPM1 и UPM0 (USART Parity Mode) в регистре UCSRC отвечают за включение и тип контроля чётности:
C:
//Если бит UMSEL сброшен в 0, то модуль работает в асинхронном режиме
 //USBS Количество стопбитов. Если бит сброшен в 0, то передатчик посылает 1 стопбит,
 //если установлен в 1, то 2 стопбита.
 //UCPOL  При работе в асинхронном режиме он должен быть сброшен в 0. USART Mode: Asynchronous
 //UPM1 UPM0 - Управление схемой контроля четности - 0 0 Выключена
 UCSRC &= ~((1 << UMSEL) | (1 << USBS) | (1 << UCPOL) | (1 << UPM1) | (1 << UPM0)); // Clear bit
 // Настройка формата кадра:
 // - Even parity (UPM1=1, UPM0=0)
 // - 8 бит данных (UCSZ1=1, UCSZ0=1)
 // - 1 стоп‑бит (USBS=0)
 UCSRC |= (1 << UPM1); // Set bits
 //Определение размера слова данных - 8 бит
 UCSRC |= (1 << UCSZ1) | (1 << UCSZ0); // Set bits
 UCSRA &= ~(1 << UCSZ2); // Clear bit
А была даже мысль тактировать Attiny от кварца, но под рукой не было -затактировал от MCO
C:
    //enable clock access to GPIOA
    RCC->APB2ENR|=RCC_APB2ENR_IOPAEN;
    //Enable clock access to alternate function
    RCC->APB2ENR|=RCC_APB2ENR_AFIOEN;
   //Настраиваем порт в режим альтернативной функции
  GPIOA->CRH &= ~(GPIO_CRH_MODE8_Msk | GPIO_CRH_CNF8_Msk); //Сбрасываем биты в ноль
  GPIOA->CRH |= (0x03 << GPIO_CRH_MODE8_Pos) | (0x02 << GPIO_CRH_CNF8_Pos); //устанавливаем нужные биты 
  RCC->CFGR &= ~(RCC_CFGR_MCO_Msk); //Сначала устанавливаем все в ноль
 //Настройка вывода тактового сигнала
//через MCO-пин
//sourse - источник тактирования
// 0 - отключено
// 4 - SYSCLK
// 5 - HSI
// 6 - HSE
// 7 - PLL/2
  RCC->CFGR |= (6<<RCC_CFGR_MCO_Pos); //Устанавливаем источник тактирования
Но как писал выше - собака зарыта в parity even.
В общем сейчас работает стабильно)))
 

alexlaw

✩✩✩✩✩✩✩
3 Янв 2020
89
2
Воронеж
Попробовал часть схемы с WIFI - работает.
IMG_20260809_123018.jpg2026-08-09_12-31-31.png
Конечно без небольших косячков не обошлось))
Я рассчитывал запитать плату от 12 в , оказалось это нельзя!
Я иcпользовал AMS1117-5.0 , а AMS-ка - 7в умножить на сколько-то ма, рассеивает ввиде тепла и на ней можно жарить котлеты.
Благо нашел блок питания на 6 в и все ОК.
Ну и с типо размером некоторых деталей пошел в разнос,одни такие другие такие.
Зато научился паять 0603.
В общем движется потихоньку))
 

alexlaw

✩✩✩✩✩✩✩
3 Янв 2020
89
2
Воронеж
MAX на плате работает, можно собирать светодиодную подсветку из отдельных светодиодов.
IMG_20260812_232247.jpg

8x8_led.png
 

alexlaw

✩✩✩✩✩✩✩
3 Янв 2020
89
2
Воронеж
Продвинулся в решении одного важного вопроса.
Ход считанный Attiny при помощи герконов может содержать ошибки как аппаратные, так и пользовательские.
Например:
Сработал не тот геркон, по разным причинам (пользователь низко пронес фигуру над доской или поставил фигуру не туда).
В результате на движок поступит нелегальный ход.
Движок такой ход не примет. Нужно будет заново сформировать ход откуда-куда. А при многочисленных нелегальных ходах -
это может привести к зависанию STM.
Что делать?
Сначала хотел добавить генератор ходов в Attiny, и ход будет передан от Тиньки на STM, если он корректен.
Примерно так работает прога на Виндовс, там нельзя сделать нелегальный ход.
Написал генератор ходов.
Но потом решил по другому.
Этот генератор добавлю в STM, он создаст список ходов и если поступивший от Тиньки ход будет в этом списке,то ход будет передан движку.
Если нет хода, то Stm дернет Тиньку за ногу - нужен правильный ход. Тинька будет ждать от датчиков новое поле - куда,не меняя поле - откуда.
Назрел еще один вопрос.
Одного светодиода для подсветки поля доски не достаточно. Нужно четыре на одно поле.
Как используя MAX7219 вместо одного светодиода поставить четыре?
Кто сможет помочь с расчетами токов и напряжений и схемы соединения?