39 lines
1.8 KiB
Python
39 lines
1.8 KiB
Python
# ЛР2601, п. 3 порядка выполнения: меандр 20 кГц на выводе микроконтроллера
|
||
# Плата: ESP32-C3 Super Mini, MicroPython.
|
||
# Сигнал снимается с GPIO6 (разъём J1, контакт 8) и подаётся на вход первого инвертора.
|
||
#
|
||
# Используется аппаратный ШИМ: частота выдерживается точно
|
||
# и не зависит от скорости интерпретатора Python.
|
||
|
||
from machine import Pin, PWM
|
||
|
||
OUT_PIN = 6 # номер GPIO, при необходимости поменять
|
||
FREQ = 20_000 # 20 кГц -> период 50 мкс
|
||
|
||
pwm = PWM(Pin(OUT_PIN, Pin.OUT), freq=FREQ, duty_u16=32768) # скважность 50 %
|
||
|
||
# Программа ничего больше не делает: ШИМ работает сам по себе.
|
||
# Остановить: pwm.deinit()
|
||
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# Вариант только на классе Pin (как в Приложении 3 методички).
|
||
# Частота получится НЕ ровно 20 кГц: каждая команда Python на ESP32-C3
|
||
# выполняется несколько микросекунд. Используйте, если преподаватель
|
||
# требует решение именно через Pin.on()/Pin.off().
|
||
#
|
||
# from machine import Pin
|
||
# import time
|
||
# p = Pin(OUT_PIN, Pin.OUT)
|
||
# half = 25 # полпериода 25 мкс
|
||
# t = time.ticks_us()
|
||
# while True:
|
||
# p.on()
|
||
# t = time.ticks_add(t, half)
|
||
# while time.ticks_diff(t, time.ticks_us()) > 0:
|
||
# pass
|
||
# p.off()
|
||
# t = time.ticks_add(t, half)
|
||
# while time.ticks_diff(t, time.ticks_us()) > 0:
|
||
# pass
|