ai: вариант 6 генератора (PIO, неиспользуемые биты = 0), синхронизация с РПД
- stub/06-dds-pio-zero-rp2040.py: новый вариант; PIO всегда выводит 8 бит (out pins, 8), младшие неиспользуемые линии GP8..GP(15-BITS) — выходы в 0 - stub/04-dds-pio-rp2040.py: подтянута шапка с отметкой о проверке на стенде - task.md, print/: пересобраны из РПД (таблица вариантов + брошюра студента) - README.md: список вариантов приведён в соответствие
This commit is contained in:
@@ -45,6 +45,9 @@ eumirts5-dds/
|
||||
│ ├── 01-dds-generator-rp2040.ino ← вариант 1: Arduino C++
|
||||
│ ├── 01-dds-generator-rp2040-circuitpython.py ← вариант 2: CircuitPython
|
||||
│ ├── 04-dds-pio-rp2040.py ← вариант 3: PIO + DMA
|
||||
│ ├── 04-dds-pio-rp2040.ino ← вариант 4: PIO + DMA (Arduino)
|
||||
│ ├── 05-dds-audiopwm-rp2040.py ← вариант 5: аудио-ШИМ
|
||||
│ ├── 06-dds-pio-zero-rp2040.py ← вариант 6: PIO, лишние биты = 0
|
||||
│ ├── 02-izmerenie-achh.py ← автоснятие АЧХ (на ПК)
|
||||
│ └── 03-blank-otchyota.md ← бланк отчёта
|
||||
└── print/ ← брошюра задания (DOCX)
|
||||
@@ -57,6 +60,9 @@ eumirts5-dds/
|
||||
| `01-...ip2040.ino` | есть Arduino IDE | программный DDS, работает на обоих ядрах |
|
||||
| `01-...-circuitpython.py` | есть CircuitPython | то же, но медленнее (интерпретатор) |
|
||||
| `04-dds-pio-rp2040.py` | **рекомендуется** | аппаратный PIO + DMA, точная частота, CPU свободен |
|
||||
| `04-dds-pio-rp2040.ino` | Arduino, earlephilhower | PIO + DMA; форма сигнала задаётся в коде |
|
||||
| `05-dds-audiopwm-rp2040.py` | CircuitPython | `audiopwmio`: DMA играет буфер; только до ~3 кГц |
|
||||
| `06-dds-pio-zero-rp2040.py` | CircuitPython | то же, что `04-...py`, но неиспользуемые младшие биты порта выведены в 0 |
|
||||
|
||||
Для варианта на PIO нужна библиотека `adafruit_pioasm` в папке `/lib`
|
||||
на плате.
|
||||
|
||||
Binary file not shown.
@@ -5,8 +5,13 @@
|
||||
# для режима «синус» формирует аппаратная PIO-машина RP2040, данные в неё
|
||||
# подаются через DMA, а АЦП читается библиотекой analogbufio.
|
||||
#
|
||||
# ЧЕРНОВИК (AI-сгенерировано, 2026-10-27). Требует проверки преподавателем
|
||||
# на реальном стенде.
|
||||
# ПРОВЕРЕНО НА СТЕНДЕ 2026-10-28 (преподаватель): цифровой выход PIO
|
||||
# снят логическим анализатором — форма синуса верная. Лестница R-2R при
|
||||
# этой проверке НЕ запаивалась, поэтому аналоговая часть (размах после
|
||||
# внешнего ФНЧ, реальная разрядность по постоянному уровню) ещё не
|
||||
# измерялась.
|
||||
#
|
||||
# AI-сгенерировано, 2026-10-27; проверка цифровой части — 2026-10-28.
|
||||
#
|
||||
# Требует библиотеку: adafruit_pioasm -> скопировать в /lib на плате.
|
||||
# https://github.com/adafruit/Adafruit_CircuitPython_PIOASM
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -189,7 +189,7 @@ K(f) = 1 / √(1 + (f/f_c)²), f_c = 1/(2π·R·C)
|
||||
|
||||
### Задание A1 (0,5 ч). Прошивка генератора и первый запуск
|
||||
|
||||
В папке `stub/` три варианта генератора — **выберите один**:
|
||||
В папке `stub/` несколько вариантов генератора — **выберите один**:
|
||||
|
||||
| Файл | Платформа | Как формируется синус |
|
||||
|---|---|---|
|
||||
@@ -198,6 +198,7 @@ K(f) = 1 / √(1 + (f/f_c)²), f_c = 1/(2π·R·C)
|
||||
| `04-dds-pio-rp2040.py` | CircuitPython | аппаратный PIO + DMA |
|
||||
| `04-dds-pio-rp2040.ino` | Arduino, **только earlephilhower** | аппаратный PIO + DMA |
|
||||
| `05-dds-audiopwm-rp2040.py` | CircuitPython | аудио-ШИМ (`audiopwmio`) + DMA; только до ~3 кГц |
|
||||
| `06-dds-pio-zero-rp2040.py` | CircuitPython | **PIO + DMA**, все 8 линий GP8..GP15 — выходы, неиспользуемые биты = 0 |
|
||||
|
||||
**Рекомендуется вариант на PIO** — точная частота, CPU свободен.
|
||||
Вариант 3 (`04-dds-pio-rp2040.py`) проверен на стенде: логическим
|
||||
@@ -209,6 +210,12 @@ K(f) = 1 / √(1 + (f/f_c)²), f_c = 1/(2π·R·C)
|
||||
**в коде** (перекомпилировать после правки) — в C++ нет разбора формул
|
||||
на лету, как в CircuitPython-версии.
|
||||
|
||||
`06-dds-pio-zero-rp2040.py` — тот же вариант 3, но PIO всегда управляет
|
||||
всеми восемью линиями GP8..GP15: при `BITS < 8` неиспользуемые младшие
|
||||
биты **выведены в 0** (низкий уровень), а не остаются свободными входами.
|
||||
Берите его, если на макете видны наводки/«плавающие» уровни на младших
|
||||
пинах гребёнки R-2R.
|
||||
|
||||
1. Залейте файл на Pico (CircuitPython: переименовать в `code.py`).
|
||||
2. Откройте консоль, введите `HELP` — увидите список команд.
|
||||
3. Введите `I` — генератор покажет текущие настройки, включая
|
||||
|
||||
Reference in New Issue
Block a user