Уважаемые посетители! Форум CQHAM.RU существует исключительно за счет показа рекламы. Мы будем благодарны, если Вы не будете блокировать рекламу на нашем Форуме. Просим внести cqham.ru в список исключений для Вашего блокировщика рекламы.
Страница 1 из 24 123411 ... ПоследняяПоследняя
Показано с 1 по 10 из 239

Тема: Программирование STM32

  1. #1

    Регистрация
    14.06.2018
    Адрес
    Санкт-Петербург
    Сообщений
    1,028

    Программирование STM32

    Привет, народ. Давайте с вопросами программирования stm32 здесь расположимся.
    А то про конструкции на stm32 темы имеются, а про программирование - нет. Одни и те же вопросы поднимаются в разных темах.

    Для затравки. (-:
    В последнее время штудировал stm32. Наработанные с avr методики пригодились даже больше, чем ожидал. С ассемблером разницы особой нет. Инструкции, ну да, отличаются, не кардинально. Как avr программировал под gas (gnu assembly), так и stm32 продолжил.

    Представляю простую лабу - "БарэмЕтал блиньк".
    Кто не знает - "baremetal", это значит "чисто железячный". Подход к задаче без излишеств. Даже без особого мнения на чём правильно программировать вместо ассемблера.

    Voila! Поехали!

    Код:
    oleg@tower ~/ $ tree
    .
    ├── Makefile
    ├── linker.ld
    └── main.S
    
    0 directories, 3 files
    Код:
    oleg@tower ~/ $ cat Makefile
    TARGET     =    main
    LD_SCRIPT =    linker.ld
    TOOLCHAIN = /usr
    CC = $(TOOLCHAIN)/bin/arm-none-eabi-gcc
    AS = $(TOOLCHAIN)/bin/arm-none-eabi-as
    LD = $(TOOLCHAIN)/bin/arm-none-eabi-ld
    OC = $(TOOLCHAIN)/bin/arm-none-eabi-objcopy
    OD = $(TOOLCHAIN)/bin/arm-none-eabi-objdump
    OS = $(TOOLCHAIN)/bin/arm-none-eabi-size
    ASFLAGS += -c
    ASFLAGS += -specs=nosys.specs
    ASFLAGS += -g
    ASFLAGS += -O0
    ASFLAGS += -mcpu=cortex-m3
    ASFLAGS += -mthumb
    ASFLAGS += -Wall
    ASFLAGS += -Wextra
    ASFLAGS += -fmessage-length=0
    ASFLAGS += -no-pie
    ASFLAGS += -march=armv7-m
    ASFLAGS += -masm-syntax-unified
    ASFLAGS += -fno-exceptions
    ASFLAGS += -fno-unwind-tables
    ASFLAGS += -mlittle-endian
    ASFLAGS += -fno-rtti
    LFLAGS += -mcpu=cortex-m3
    LFLAGS += -march=armv7-m
    LFLAGS += -mlittle-endian
    LFLAGS += -masm-syntax-unified
    LFLAGS += -fno-rtti
    LFLAGS += -fno-exceptions
    LFLAGS += -fno-unwind-tables
    LFLAGS += -mthumb
    LFLAGS += -Wall
    LFLAGS += -specs=nosys.specs
    LFLAGS += -nostdlib
    LFLAGS += -nostartfiles
    LFLAGS += -lgcc
    LFLAGS += -T$(LD_SCRIPT)
    LFLAGS += -no-pie
    AS_SRC   =  main.S
    INCLUDE  =  -I./
    OBJS  = $(AS_SRC:.S=.o)
    
    .PHONY: all
    all: $(TARGET).bin
    
    %.o: %.S
        $(CC) -x assembler-with-cpp $(ASFLAGS) $< -o $@
    
    $(TARGET).elf: $(OBJS)
        $(CC) $^ $(LFLAGS) -o $@
    
    $(TARGET).bin: $(TARGET).elf
        $(OC) -S -O binary $< $@
        $(OS) $<
    
    .PHONY: clean
    clean:
        rm -f $(OBJS)
        rm -f $(TARGET).elf
        rm -f $(TARGET).bin
    
    flash: all
        st-flash --reset write $(TARGET).bin 0x8000000
    Код:
    oleg@tower ~/ $ cat linker.ld 
    ENTRY(main)
    _estack = 0x20005000;
    MEMORY
    {
        FLASH ( rx )      : ORIGIN = 0x08000000, LENGTH = 64K
        RAM ( rxw )       : ORIGIN = 0x20000000, LENGTH = 20K
    }
    SECTIONS
    {
      .text :
      {
        . = ALIGN(4);
        *(.text)
        *(.text*)
        . = ALIGN(4);
      } >FLASH
    }
    Код:
    oleg@tower ~/ $ cat main.S 
    .syntax unified
    .cpu cortex-m3        @ stm32f103c6t6
    .global main        @
    .section .text        @ only section
    boot:            @ word
    .word _estack        @ see linker script
    .word main        @ reset address
    .thumb_func        @ aka +1 offset to reset
    main:            @ thumb code
    ldr r0, =(1<<4)        @ mask GPIOC clock enable
    ldr r2, =0x40021000    @ bus clock reg
    ldr r1, =0x18        @ gpioc clock reg offset
    ldr r3, [r2, r1]    @ read clock reg
    orr r0, r0, r3        @ set clock enable
    str r0, [r2, r1]    @ update clock reg
    ldr r0, [r2, r1]        @ just delay a bit
    ldr r0, [r2, r1]    @ just delay a bit
    ldr r0, =(1<<21)    @ mask C13 output push-pull at 2MHz
    ldr r2, =0x40011000    @ (GPIO offset)
    ldr r1, =0x04        @ (GPIOC_CRH offset)
    ldr r3, [r2, r1]    @ read
    orr r0, r0, r3        @ modify
    str r0, [r2, r1]    @ write
    loop:
    ldr r0, =(1<<13)    @ mask C13 high
    ldr r2, =0x40011000    @ (GPIO offset)
    ldr r1, =0x10        @ (GPIOC_BSRR offset)
    str r0, [r2, r1]    @ write
    bl delay
    ldr r0, =(1<<29)         @ mask C13 low
    ldr r2, =0x40011000     @ (GPIO offset)
    ldr r1, =0x10           @ (GPIOC_BSRR offset)
    str r0, [r2, r1]        @ write
    bl delay
    b loop            @ infinite loop
    delay:
    ldr r4, =0x100000
    again:
    subs r4, r4, 1
    bne again
    bx lr
    .end
    Код:
    oleg@tower ~/ $ make clean all
    rm -f main.o
    rm -f main.elf
    rm -f main.bin
    /usr/bin/arm-none-eabi-gcc -x assembler-with-cpp -c -specs=nosys.specs -g -O0 -mcpu=cortex-m3 -mthumb -Wall -Wextra -fmessage-length=0 -no-pie -march=armv7-m -masm-syntax-unified -fno-exceptions -fno-unwind-tables -mlittle-endian -fno-rtti main.S -o main.o
    /usr/bin/arm-none-eabi-gcc main.o -mcpu=cortex-m3 -march=armv7-m -mlittle-endian -masm-syntax-unified -fno-rtti -fno-exceptions -fno-unwind-tables -mthumb -Wall -specs=nosys.specs -nostdlib -nostartfiles -lgcc -Tlinker.ld -no-pie -o main.elf
    /usr/bin/arm-none-eabi-objcopy -S -O binary main.elf main.bin
    /usr/bin/arm-none-eabi-size main.elf
       text       data        bss        dec        hex    filename
        100          0          0        100         64    main.elf
    Код:
    oleg@tower ~/ $ make flash
    st-flash --reset write main.bin 0x8000000
    st-flash 1.7.0
    2023-04-14T20:38:44 INFO common.c: F1xx High-density: 64 KiB SRAM, 256 KiB flash in at least 2 KiB pages.
    file main.bin md5 checksum: 78946d427b4d276feeea02bb3ff59e0, stlink checksum: 0x00001f46
    2023-04-14T20:38:44 INFO common.c: Attempting to write 100 (0x64) bytes to stm32 address: 134217728 (0x8000000)
    2023-04-14T20:38:44 INFO common.c: Flash page at addr: 0x08000000 erased
    2023-04-14T20:38:44 INFO common.c: Finished erasing 1 pages of 2048 (0x800) bytes
    2023-04-14T20:38:44 INFO common.c: Starting Flash write for VL/F0/F3/F1_XL
    2023-04-14T20:38:44 INFO flash_loader.c: Successfully loaded flash loader in sram
    2023-04-14T20:38:44 INFO flash_loader.c: Clear DFSR
      1/  1 pages written
    2023-04-14T20:38:44 INFO common.c: Starting verification of write complete
    2023-04-14T20:38:44 INFO common.c: Flash written and verified! jolly good!
    2023-04-14T20:38:44 WARN common.c: NRST is not connected
    Мигает.

    Нажмите на изображение для увеличения. 

Название:	cortexm3lab.JPG 
Просмотров:	159 
Размер:	37.0 Кб 
ID:	387831

    Резюме то же, что и для микрочипов:
    Кто считает, что cortex-m это вынос мозга, а для "вхождения" нужно что-то большее, чем старый линуксовый ноут или распбери, сторублевый программатор и блю-пил с китайским клоном, того вынужден разочаровать. Было бы желание. Из документации - даташит на мк, референс на мк, руководство по программированию на мк. Все от разработчика. Из софта, как обычно - make, gcc, gdb, stlink, vim.

    P.S. Чуть не забыл. Обязательно нужен кусочек синей изоленты. Аккурат между блю-пилом и программатором. У программатора алюминиевый корпус. Краска постепенно прошкрябается и может коротнуть. Удачи.
    Последний раз редактировалось ozforester; 15.04.2023 в 00:17.

  2. Спасибо от 4Y


  3. #2

    Регистрация
    28.07.2012
    Адрес
    Yelets
    Сообщений
    547
    Позывной
    R2GKH
    Цитата Сообщение от ozforester Посмотреть сообщение
    Voila! Поехали!
    Может, все-таки стоит начать с болле прозаичных вещей?
    Среды программирования, их установка и настройка. Библиотеки, где брать?

    Ассемблер для микроконтроллеров сейчас - это очень высокий "порог вхождения".
    Недаром оболочка CubeMX пользуется успехом. Хотя и "С" для микроконтроллеров - не лучший язык.

  4. #3
    Аватар для vadim_d
    Регистрация
    29.10.2006
    Адрес
    Санкт-Петербург
    Сообщений
    14,911
    Цитата Сообщение от Vital R2GKH Посмотреть сообщение
    с болле прозаичных вещей?
    "- Вы не скажете, как пройти в библиотеку?
    - Какая библиотека в три часа ночи?"

    По мере усложнения архитектуры контроллеров и совершенствования среды разработки процент ассемблера неуклонно спадает. Во времена 8080 и Z80, когда начинал заниматься программированием встраиваемых систем, спрашивал народ, как можно получить с компилятора С код, исполняемый из ПЗУ, и никто не мог мне ответить. Те, кто мог позволить себе хороший объем ОЗУ, генерировали исполняемый файл для CP/M-80 и грузили его туда. Мне пришлось основательно перетряхнуть ту версию Aztec C https://en.wikipedia.org/wiki/Aztec_C , что была в наличии, чтобы найти метки, соответствующие сегменту данных при генерации ассемблерных файлов под майкрософтовский М80, после чего написать кусок стартапного кода и утилиту, которая собирает в один хекс файл сегменты кода и данных. И тогда настало счастье, всякий пользовательский интерфейс программ управления тиристорными инверторами на С стал простым и читаемым. Сейчас об этом думать не надо, все есть в среде разработки, нужно только умело ей пользоваться. И именно поэтому выписывать на ассемблере сегменты кода и данных вряд ли есть смысл, но нужно уметь ответить на вопрос (в Люксофте на интервью такой иногда задавал), а что происходит в микроконтроллере до запуска функции main()? В gcc пожалуй самое удобное применение ассемблера в виде ассемблерных вставок в сишный код, когда компилятору говорят, что этот кусок берет на вход, что дает на выходе и какие регистры модифицирует в ходе своей работы, а уж компилятор все это принимает к сведению. Процент ассемблера даже в готовых риалтаймовых системах под SPM32 очень мал
    Вадим

  5. #4
    Разочаровал меня STM32, честно говоря. И, прежде всего ценами. Я понимаю, маркетинговая политика, надо привлечь публику. Потом можно цены и поднять. Но не так же - в 5-10 раз! Года три назад купил несколько STM32F103C8T6 и STM32F4P6, ну понятно ST-Link. В то время STM32F103C8T6 стоил порядка 3 долларов. Синяя плата от китайцев не дороже, почти столько же сколько и микросхема. И вот сейчас. Конечно можно поискать и найти подешевле.. Но общая тенденция налицо. Можно применить другие контроллеры (тут мне объясняют, что те что я упомянул уже древние, потому так дорого. Но Atmega328 тоже существует давно, но цена не практически не изменилась). Но надо было писать с применением Hal, тогда прежние наработки можно было бы безболезненно перенести. а ежели с прямым доступом к регистрам, тогда все по новой.
    Короче, мое мнение такое - если вам нужен какой-либо трансивер или что другое, то Atmega328, например, удовлетворит все ваши требования в большинстве случаев. А если программирование ради программирования, тогда да. Да и вроде специалисты программеры хорошо освоившие STM32, сейчас вроде востребованы. Так что молодежи, желавшие получить хорошую работу, надо задуматься. Но опять же, неизвестно что будет завтра. Может какой-нить ESP.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	STM32.png 
Просмотров:	117 
Размер:	772.4 Кб 
ID:	387839  
    Последний раз редактировалось Владимир_К; 15.04.2023 в 11:59.

  6. #5

    Регистрация
    14.06.2018
    Адрес
    Санкт-Петербург
    Сообщений
    1,028
    vadim_d
    Начну с того, что все сказанное выше это сугубо взгляд радиолюбителя на возможности радиолюбителя. Чем больше сущностей, тем круче заваривается каша в голове. Начинать лучше с простого. Ассемблер это просто. Команд на порядок меньше. Каждая команда находит свое место в конечном коде прошивки, ибо это почти всегда инструкция процессора. Что-то не так, берешь и читаешь первоисточник, написанный тем же языком. Я раньше пересекался с профессионалами и вобщем-то ничему у них не научился, было своих задач по горло. Самым важным, что вынес из возможности общаться с гуру, было понимание того, как я далек от настоящего программиста.
    Далее продолжу. Вы ведь не станете отрицать, что в основе таки лежит понимание. В данном случае понимание устройства и работы самого мк - а это документация разработчика мк, и утилит - документация разработчков софта. Плюс практическая проверка полученных знаний. Вот, к примеру, большинство протоколов это "дрыганье ногами микроконтроллера". Безоносительно к количеству проводов в интерфейсе и аппаратоно или программно задача решается. Когда читал, был уверен на все сто, что это просто. Начал делать лабы и набил себе десятки если не сотни шишек. И даташит не раз перечитвал, и gcc, и изворачивался как уж на сковородке чтобы без приборов и достаточного опыта локализовать проблему. Это просто как пример. Даже чтобы задать вопрос профессионалу, тоже нужны знания. А потом слышишь, - "Э, батенька, да вы программист." - Вовсе нет, просто приходится приспосабливаться, чтобы получить обратную связь. К сожалению тема бесконечная. Выложу-ка лучше листинг программы. Как-то забыл вчера. И, еще раз, резюмирую - ДАташиты и ассемблер благотворно влияют на неокрепший мозг начинающего программировать. Когда знания (или заблуждения) "зацементируются ", исправлять их будет поздно.

    В листинге видно, что несмотря на отключенную оптимизацию, компилятор все таки немного изменил первоначальную программу. Здесь это связано с использованием расширения gas. Он даёт возможность загружать в регистр число непосредственно (immediate), а сам втихушку размещает число в кодовом сегменте и ссылается на него через регистр (indirect) Можно было изначально не использовать расширение, но тогда и объяснения не последовало бы.

    Код:
    main.elf:     file format elf32-littlearm
    
    
    Disassembly of section .text:
    
    
    08000000 <boot>:
     8000000:    20005000     .word    0x20005000
     8000004:    08000009     .word    0x08000009
    
    
    08000008 <main>:
     8000008:    f04f 0010     mov.w    r0, #16
     800000c:    4a13          ldr    r2, [pc, #76]    @ (800005c <again+0x6>)
     800000e:    f04f 0118     mov.w    r1, #24
     8000012:    5853          ldr    r3, [r2, r1]
     8000014:    ea40 0003     orr.w    r0, r0, r3
     8000018:    5050          str    r0, [r2, r1]
     800001a:    5850          ldr    r0, [r2, r1]
     800001c:    5850          ldr    r0, [r2, r1]
     800001e:    f44f 1000     mov.w    r0, #2097152    @ 0x200000
     8000022:    4a0f          ldr    r2, [pc, #60]    @ (8000060 <again+0xa>)
     8000024:    f04f 0104     mov.w    r1, #4
     8000028:    5853          ldr    r3, [r2, r1]
     800002a:    ea40 0003     orr.w    r0, r0, r3
     800002e:    5050          str    r0, [r2, r1]
    
    
    08000030 <loop>:
     8000030:    f44f 5000     mov.w    r0, #8192    @ 0x2000
     8000034:    4a0a          ldr    r2, [pc, #40]    @ (8000060 <again+0xa>)
     8000036:    f04f 0110     mov.w    r1, #16
     800003a:    5050          str    r0, [r2, r1]
     800003c:    f000 f809     bl    8000052 <delay>
     8000040:    f04f 5000     mov.w    r0, #536870912    @ 0x20000000
     8000044:    4a06          ldr    r2, [pc, #24]    @ (8000060 <again+0xa>)
     8000046:    f04f 0110     mov.w    r1, #16
     800004a:    5050          str    r0, [r2, r1]
     800004c:    f000 f801     bl    8000052 <delay>
     8000050:    e7ee          b.n    8000030 <loop>
    
    
    08000052 <delay>:
     8000052:    f44f 1480     mov.w    r4, #1048576    @ 0x100000
    
    
    08000056 <again>:
     8000056:    3c01          subs    r4, #1
     8000058:    d1fd          bne.n    8000056 <again>
     800005a:    4770          bx    lr
     800005c:    40021000     .word    0x40021000
     8000060:    40011000     .word    0x40011000
    Еще раз напоминаю. Возможно достать из ящика распбери, скачать из интернета образ флешки с линуксом для нее, подцепить монитор с клавиатурой или удаленно эсэсашем в нее зайти, подключить буерброд из блю-пил и программатора, и создать программу. Кубы и халы никто не отменяет, всему свое место под солнцем. Просто, если вы будете изучать не мк и программировние, а прикладной софт, то это как бы подменит собой изначальную цель и будет вас то и дело отвлекать от решения основной задачи. Каждый сам решает, и да, за кого-то решает начальник, но это уже не любительство. И это, еще раз повторюсь, только одно мнение, и только одного радиолюбителя, совсем еще зеленого по сути. (:

    Владимир_К
    Ну так я потому авр и изучал по аттини13, и сейчас клоны f103 и простейший f030. Для начала хватает. Лежат китайские "сэмплы" с моделями постарше в антистатических мешочках, загодя припасенные. (: Тут еще вопрос документации. Слабое документирование аналогов. Микрочип и СТ снимают, вобщем-то, все вопросы с информацией. Большинство "багов" по тому же форуму Электроникса, от невнимательного изучения матчасти. Народная эррата тоже имеет место быть. Тут действительно или форум профессионалов, или разработчика. Это я, в принципе, к чему - Изучая тот же avr и переходя к допустим, esp32, сразу ощущаешь нехватку достоверной информации от разработчика. Такое пока сложилось мнение.
    Последний раз редактировалось ozforester; 15.04.2023 в 12:02.

  7. #6
    Мануал, например на STM32F030, cодержит больше 700 страниц. Так что для быстрого вхождения все что угодно, только не ассемблер. Пока разберетесь хотя бы с тактированием периферии, день пройдет. Так что CubeMX и CubeIDE. Я предпочел Keil, оказывается CubeIDE существует только для 64 разрядной системы (а может ошибся, но все что я скачивал, мне выдает, что у меня гранаты не той системы. Поэтому специально собрал компьютер с 64 разрядным Windows. А прежний, ну никак нельзя. Там, например звуковая E-MU 1212, а для нее нашел нормальный драйвер только для 32 разрядной системы. В предыдущем сообщении, малось перепутал прежние цены - исправил. Где-то 3 долл. стоила синяя плата с STM32F103.

  8. #7

    Регистрация
    14.06.2018
    Адрес
    Санкт-Петербург
    Сообщений
    1,028
    Ну, я до того как сесть за руль, долго читал "учебник шофёра третьего класса" и ничего, до сих пор вспоминаю те времена с теплотой. Понимаю о чём Вы, просто на форуме если не спорить, то становится как-то пресно. Даташиты год читал, никто не подгонял. Теперь знаю что и где "лежит" и "кто на ком стоял". Не был бы уверен, что не пригодится, не стал бы вникать. По профессиям приходилось большие потоки информации переваривать, всегда минимизировать стараюсь и просто так ничего не запоминаю. Из тех 700 страниц, когда это не первый в жизни даташит, выхватываешь только нужные десять в одном месте и по одной-две-три еще в нескольких. Примерно такой процесс. И это потому, что stm32 - для меня уже второй процессор, с атмегами было значительно труднее и дольше, и лабы не с первого подхода, они были первыми. Всегда хочу перейти к Си и абстракциям. Понимаю необходимость CMSIS и библиотек, но не хочу перепрыгивать через несколько ступенек. Опять же, никто не подгоняет. Работать все равно не смогу, а как хобби интересно.
    P.S. Добавлю, что никакие лабы и матчасть не отменяют опыт практического программирования. Это, надеюсь, все здесь понимают и не забывают. Можно так сказать распараллелить процесс. Поставить типовой софт и копипастить поначалу готовый код, одновременно углубляясь в тему. Будет возможность быстро "набить шишки" с языком програмирования и средой. Ассемблер проще, так как это почти-почти язык микроконтролера. Опять же при отладке подобные знания могут быть востребованы. Любительство и есть по сути сплошная отладка и пилотный проект.
    pps С оргтехникой использую виртуализацию по возможности. Она сама по себе сложная штука. но это как бы у меня бонус, я с ней немного сталкивался по работе. Виртуализация сразу закрывает и вопросы связанные с безопасностью, и откатить можно любую виртуалку в любое предыдущее состояние. если про снэпшоты не забывать. Не всякая периферия пробрасывается через хост(гипервизор или что там), но обычно это не требуется. Тема очень большая. Просто напоминаю про ее существование, как вариант.
    Последний раз редактировалось ozforester; 15.04.2023 в 12:34.

  9. #8
    Цитата Сообщение от ozforester Посмотреть сообщение
    Ну так я потому авр и изучал по аттини13, и сейчас клоны f103 и простейший f030. Для начала хватает.
    Я не изучаю просто лишь для того, чтобы изучить. Беру что есть под рукой или выбираю с приемлемыми мне параметрами и, посматриваю на цену, иногда. И начинаю ваять. Вот сейчас решил переделать плату трансивера, давно изготовленного, но там плата синтеза и всего управления малость повреждена, да и немного устарела. Решил перевести на STM32, по новой развести, с Диптрейсом разводка платы одно удовольствие. Но, уперся в проблему не хватает ног (придется изощряться). Процессор STM32G030F6P6, это из тех, что сейчас продаются по приемлемой цене. Оказалось что его нет в перечне CubeMX, надо ставить последнюю версию. Да и ног не хватает. Так что, то что было ранее сделано на Atmega328, не так просто перевести на новомодную платформу. Или надо изрядно потрясти бюджет. И для чего? Много памяти у STM32 и выше тактовая частота? Так память съест Hal. Или придется кропотливо смотреть на регистры и писать программу непосредственно обращаясь к регистрам. Оно конечно в будущем пригодится, потом можно будет не заглядывать в документацию. Но это уже будет актуально, когда появится куча наработок. Тогда проще, берешь кусок кода, иногда чуть уточняешь и вперед. Даже и на ассемблере. Вот ежели есть на ассемблере программа (библиотека) для управления Si5351A, например, буду признателен.

  10. #9

    Регистрация
    14.06.2018
    Адрес
    Санкт-Петербург
    Сообщений
    1,028
    С сишкой сплошная математика, а она в аттини13 не влазит с полезной нагрузкой. Несколько попыток делал впихнуть просто энкодер, олед и математику. Света в конце туннеля пока не увидел. Если просто несколько таблиц с константами регистров забрасывать в сишку, то вопрос лишь в наличии i2c_write, что и управлением не назвать, не спортивно, хотя некоторые прикладные задачи может закрыть. На гитхабе лежат варианты, требуют напильника. Можно играть на выборе нескольких непрерывных диапазонов с постоянным шагом, и управлять лишь одним регистром на их протяжении, логику держать в таблицах. Можно попробовать, но ошибка в единицы герц выбежит по сравнению с указанной на оледе частотой. В первом приближении смотрел, как изменяется делитель по регистрам. Точно не прикидывал, в eeprom может не поместиться, а sram уже занят регистрами сишки или стеком, здесь с какого боку на яица посмотреть. 64 байта всего же ж. Если операции 64-битные, то тоже начинает использоваться sram, регистров не хватает.. Attiny45 можно попробовать, наверное на ней и взлетит синтезатор ассемблерный, но так стм-ки не изучить. Забросил пока авр-ки.
    p.s. Если бы с атмеги начинал, то наверное бы получился синтезатор, а так все время ушо на оптимизацию кода и в результате получились килобайтные часы на оледе ssd1306 и rtc ds1307 с возможностью установки даты и времени одной кнопкой. (-:
    Последний раз редактировалось ozforester; 15.04.2023 в 15:12.


  11. #10
    Аттини не имеет на борту аппаратного I2C. И он нужен не потому, что написать программу проблема, а для того, чтобы процессор не отвлекался на выполнение работы, которую успешно делает аппаратный I2C, как и тот же UART.

Страница 1 из 24 123411 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Анализатор kuchura с графикой на STM32
    от khach в разделе Антенные приборы
    Ответов: 4184
    Последнее сообщение: 15.09.2023, 23:39
  2. Полноценный адаптер USB-Serial с 3 UART портами на STM32 Blue Pill (STM32F103C8T6)
    от r2axz в разделе Конструкции на микроконтроллерах для радиолюбителей
    Ответов: 26
    Последнее сообщение: 24.03.2023, 11:06
  3. Аналоги STM32
    от RA1AGB в разделе Конструкции на микроконтроллерах для радиолюбителей
    Ответов: 26
    Последнее сообщение: 30.12.2022, 11:54
  4. TP3067+stm32
    от PAVELk781 в разделе Конструкции на микроконтроллерах для радиолюбителей
    Ответов: 12
    Последнее сообщение: 23.06.2018, 19:45
  5. STM32 Discavery-первый опыт в программировании на С
    от DL2BDA в разделе Конструкции на микроконтроллерах для радиолюбителей
    Ответов: 64
    Последнее сообщение: 08.02.2017, 21:30

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •