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

alexlaw

✩✩✩✩✩✩✩
3 Янв 2020
59
2
Воронеж
Идея.

1.Полноразмерная шахматная доска.
2.Контроллер STM32F103C6T6 с шахматным движком.
3.STM32 получает ход от доски в виде e2e4.
4.STM32 передает ход на доску в виде подсветки полей откуда - куда.
Что реализовано.
п.2 - STM32F103C6T6 с шахматным движком.
п.3 - частично
п.4 - частично
Написана прога под Виндовс для теста шахматного движка.
Коммуникация проги и движка осуществляется через esp8266.
IMG_20260616_122707.jpg
2026-06-19_14-19-11_gif_001.gif
Продолжение следует ...
 

poty

★★★★★★★
19 Фев 2020
3,653
1,048
А что будет передавать ход от доски? Какой механизм?
 

alexlaw

✩✩✩✩✩✩✩
3 Янв 2020
59
2
Воронеж
А что будет передавать ход от доски? Какой механизм?
Идея такая.
8 сдвиговых регистров 74HC165

IMG_20260502_094302..jpg
И в каждой клетке геркон или датчик Холла.
В архиве схема для Протеус 8
 

Вложения

Изменено:

alexlaw

✩✩✩✩✩✩✩
3 Янв 2020
59
2
Воронеж
Кто готов подключиться к Проекту?
Что нужно на данный момент.
1.Для симуляции в Proteus.
В Proteus 8.8 SP1 симуляция max7219 и MATRIX-8x8 вместе с STM32F103C6T6 не работает как задумывалось, точнее вообще не работает.
В реальном железе max7219 с STM32F103C6T6 работает правильно.
С Arduino Nano - max7219 и MATRIX-8x8 в Proteus 8.8 SP1 и в железе работает правильно.
2.Сделать печатную плату.
Разводку в SprintLayout я сделаю сам.
3.Нужны 64 геркона или 64 датчика Холла.
 

alexlaw

✩✩✩✩✩✩✩
3 Янв 2020
59
2
Воронеж
Может так кого нибудь заинтересует.
В архиве прога под Виндовс, прошивки для ESP8266-01 и STM32F103C6T6.
Схема простая - достаточно соединить RX-TX, TX-RX stm и esp.
Остальное (MAX) не обязательно.
Запустить прогу, подключиться к ESP и можно играть.
PS
Прошивка для STM32F103C6T6 отладочная, релиз немного меньше.
Я использую IAR EW for Arm 9.30.1.
 

Вложения

alexlaw

✩✩✩✩✩✩✩
3 Янв 2020
59
2
Воронеж
По пункту
1.Для симуляции в Proteus
В архиве два простых проекта для Proteus 8.8 SP1
Ардуино нано и STM.
На STM просто перемещающая точка по матрице
Кто сможет симулировать в Proteus проект max7219 и MATRIX-8x8 вместе с STM32F103C6T6
 

Вложения

poty

★★★★★★★
19 Фев 2020
3,653
1,048
@alexlaw, без распознавания фигур? Не, в таком варианте неинтересно.
 

alexlaw

✩✩✩✩✩✩✩
3 Янв 2020
59
2
Воронеж
Изменено:

alexlaw

✩✩✩✩✩✩✩
3 Янв 2020
59
2
Воронеж
Кто может помочь симулировать в Proteus проект max7219 и MATRIX-8x8 вместе с STM32F103C6T6 ?

Ответили мне на одном из форумов так

Добрый вечер.
Причина почти наверняка в несовершенстве модели SPI для STM32F103C6 в вашей версии Proteus (8.8 SP1) и в том, как эта модель обрабатывает быстрые команды.

Вот основные причины, почему симуляция с STM32 не работает, в то время как с Arduino Nano и в реальном железе все отлично.

1. Главный подозреваемый: Проблемы с моделью SPI в Proteus
Это самая вероятная причина. Моделирование сложных периферийных модулей, таких как SPI, в Proteus — это всегда компромисс между скоростью симуляции и точностью . Вы сталкиваетесь с его ограничениями:

Неполная эмуляция SPI: Модель SPI в вашей версии Proteus может просто "не успевать" или некорректно обрабатывать биты данных, которые посылает ваш STM32, особенно если частота SPI высокая . В результате MAX7219 получает "мусор" и не зажигает нужные светодиоды.

Скорость работы: Proteus эмулирует работу микроконтроллера значительно медленнее, чем он работает в реальности . Ваши 1-секундные задержки в симуляции могут превратиться в 5-10 секунд, а передача данных по SPI может идти с таймингами, которые не распознает модель MAX7219.

2. Разные уровни моделей: Arduino vs. STM32
Arduino Nano: Модель ATmega328P (сердце Arduino Nano) в Proteus очень зрелая и хорошо отлаженная, так как существует уже много лет. Ее цифровые выводы и SPI работают в симуляции предсказуемо.

STM32F103C6: Модель этого контроллера в Proteus — это тоже "актер", который имитирует работу, но не всегда делает это идеально, особенно для таких задач, как быстрая передача данных по SPI . Ваша версия 8.8 SP1 может иметь баги в модели SPI для STM32F1, которые были исправлены в более новых версиях.

3. Критическая уязвимость: Ток GPIO в симуляции
В Proteus есть известная особенность: выходной ток на симулируемых пинах STM32 очень мал . Если вы подключаете выводы STM32 напрямую ко входам MAX7219, модель может "видеть" логический 0, а не логическую 1, потому что у MAX7219 в симуляции другое входное сопротивление. На реальной плате все работает, так как реальный ток достаточен.

4. Конфигурация тактирования и "Опция байты"
Хотя вы говорите, что на реальном железе все работает, для STM32F103C6 есть нюансы, которые часто "убивают" симуляцию:

Частота: Убедитесь, что в настройках проекта (в Arduino IDE) и в свойствах самого микроконтроллера в Proteus (двойной клик по нему) установлена одинаковая частота, например, 8 МГц от внешнего кварца .

Flash-память: STM32F103C6 имеет 32 КБ Flash, а не 64, как C8. Ошибки в "Option Bytes" (защита памяти) на реальном чипе могут мешать, но в симуляции это может проявляться как полный отказ программы стартовать

PS
Пока та и не смог решить вопрос - симулировать в Proteus проект max7219 и MATRIX-8x8 вместе с STM32F103C6T6.

Код для STM32CubeMX касающийся max7219
max7219:
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
#define DECODE_MODE_REG     0x09
#define INTENSITY_REG       0x0A
#define SCAN_LIMIT_REG      0x0B
#define SHUTDOWN_REG        0x0C
#define DISPLAY_TEST_REG    0x0F
/* USER CODE END PD */

................

static void write_reg(uint8_t reg, uint8_t value) {
  uint8_t tx_data[2] = { reg, value };
  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
  HAL_SPI_Transmit(&hspi1, tx_data, 2, 100);
  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);
}

static void set_row(uint8_t row_index) {
  write_reg(row_index + 1, 0xFF);
}

static void set_col(uint8_t col_index) {
  for (int i = 0; i < 8; i++) {
    write_reg(i + 1, 0x01 << col_index);
  }
}

static void clear(void) {
  for (int i = 0; i < 8; i++) {
    write_reg(i + 1, 0x00);
  }
}

static void max7219_init() {
  write_reg(DISPLAY_TEST_REG, 0);
  write_reg(SCAN_LIMIT_REG, 7);
  write_reg(DECODE_MODE_REG, 0);
  write_reg(SHUTDOWN_REG, 1);
  clear();
}
/* USER CODE END 0 */
Хотя я использую IAR EW for Arm 9.30.1.
 
Изменено:

Bruzzer

★★★★✩✩✩
23 Май 2020
810
251
На wokwi.com есть модель для STM32F103C8 (для C6 нет) можно попробовать там. (но возможно потребуется VPN)
Скажите в чем смысл использования Proteus ? В нем есть удобная отладка для STM32F103 ?
Я использовал Proteus только для AVR ( в основном 328) и были места, которые неправильно работали в Proteus, но правильно на wokwi. (наверно и наоборот тоже было, уже не помню). И отладчик PROTEUS для AVR 328 мне не понравился.
 

alexlaw

✩✩✩✩✩✩✩
3 Янв 2020
59
2
Воронеж
Скажите в чем смысл использования Proteus ?
Мне нравится Протеус и если что то не работает и я не могу понять почему,то эта заноза не дает мне покоя.
В нем есть удобная отладка для STM32F103 ?
С отладкой пошаговой я так и не разобрался не в IAR EW for Arm не в SEGGER Embedded Studio 8.10b
Да могу подключиться к IAR и смотреть и менять переменные, но не пошагово отлаживать
На wokwi.com есть модель для STM32F103C8
Первый раз слышу, надо посмотреть
 

Вложения