Перейти к содержанию
Материалы раздела

CPU

cpu.model()

Получить название процессора и номер ревизии, установленные на вашей плате.

Аргументы: нет

Возвращает: строку с названием процессора, установленного на вашей плате.

-- Get the CPU model
cpu = cpu.model();

-- Print to screen
print("CPU: "..cpu)

cpu.memfree()

Получить размер свободной памяти кучи (heap).

Аргументы: нет

Возвращает: число - размер свободной памяти в байтах.

-- Get free memory
free = cpu.memfree()

-- Print to screen
print("Free memory: "..free.." bytes")

cpu.board()

Получить информацию об устройстве.

Аргументы: нет

Возвращает: тип платы, подтип платы и бренд платы. Подтип платы и бренд платы могут быть пустыми.

-- Get board information
type, subtype, brand = cpu.board();

-- Print to screen
print("Type: "..type)
print("Subtype: "..subtype)
print("Brand: "..brand)

cpu.speed([speed [, dynamic]])

Получить и при необходимости установить текущую скорость процессора в МГц.

Аргументы:

  • speed: одно из значений cpu.SPEED_DEFAULT, cpu.SPEED_FAST, cpu.SPEED_MEDIUM, cpu.SPEED_SLOW или любое фактическое значение в МГц, поддерживаемое системой.
  • dynamic: (по умолчанию false). Устанавливает новую скорость процессора как фиксированное значение. Установите dynamic в true, чтобы использовать новую скорость процессора как максимальную скорость, позволяя системе динамически переключать фактическую скорость по требованию.

Возвращает: скорость процессора в МГц.

Получение скорости доступно во всех сборках. Установка требует сборки с CONFIG_PM_ENABLE; если power management отключён, вызов с аргументом speed завершается исключением can't set CPU speed, а не игнорируется.

-- Get CPU speed
speed = cpu.speed();

-- Print to screen
print("Speed: "..speed.." MHz")

cpu.temperature()

Получить текущую температуру процессора в градусах Цельсия.

Аргументы: нет

Возвращает: температуру процессора в градусах Цельсия. Доступно не во всех процессорах.

-- Get CPU temperature
temp = cpu.temperature();

-- Print to screen
print("Temp: "..temp.." ºC")

cpu.getmac([num], [format])

Получить MAC-адрес процессора.

Аргументы:

  • num - тип запрашиваемого MAC. Может быть один из:

    • 0 - MAC_WIFI_STA
    • 1 - MAC_WIFI_SOFTAP
    • 2 - MAC_BT
    • 3 - MAC_ETH
  • format - тип отображения MAC. Может быть один из:

    • 0 - бинарная строка 6 байт
    • 1 - hex строка 12 байт
    • 2 - hex строка с разделителем “:” - 17 байт

Значения по умолчанию: num = 0, format = 0.

Возвращает:

  • При успехе: строку согласно параметру format.
  • При ошибке: nil и строку с описанием ошибки.
/ > cpu.getmac(0, 2)
EC:64:C9:91:C0:94

-- Проверка на ошибку
/ > mac, err = cpu.getmac(0, 2)
/ > if not mac then print("Error: "..err) end

cpu.resetreason()

Возвращает причину перезагрузки.

Аргументы: нет

Возвращает: одну из причин:

cpu.RESET_POWERON
cpu.RESET_SW
cpu.RESET_DEEPSLEEP
cpu.RESET_SDIO
cpu.RESET_TG0WDT_SYS
cpu.RESET_TG1WDT_SYS
cpu.RESET_RTCWDT_SYS
cpu.RESET_INTRUSION
cpu.RESET_TGWDT_CPU
cpu.RESET_SW_CPU
cpu.RESET_RTCWDT_CPU
cpu.RESET_EXT_CPU
cpu.RESET_RTCWDT_BROWN_OUT
cpu.RESET_RTCWDT_RTC

cpu.wakeupreason()

Возвращает причину пробуждения.

Аргументы: нет

Возвращает: одну из причин:

cpu.WAKEUP_NONE
cpu.WAKEUP_EXT0
cpu.WAKEUP_EXT1
cpu.WAKEUP_TIMER
cpu.WAKEUP_TOUCHPAD
cpu.WAKEUP_ULP

cpu.wakeupon()

Устанавливает разрешенные причины для пробуждения. Может быть вызвано несколько раз для установки нескольких вариантов.

Первый аргумент — один из:

cpu.WAKEUP_EXT0
cpu.WAKEUP_EXT1
cpu.WAKEUP_TIMER
cpu.WAKEUP_TOUCHPAD
cpu.WAKEUP_ULP

Возвращает: ничего

Дополнительные аргументы зависят от выбранной причины пробуждения:

cpu.WAKEUP_EXT0

  • gpio
  • level

cpu.WAKEUP_EXT1

  • mask — неотрицательная маска GPIO. Можно передать Lua integer либо строку с 64-битным десятичным или шестнадцатеричным значением ("0x100000000"). Строка нужна для GPIO32–39 в стандартных сборках с 32-битным Lua integer.
  • wakeup_mode — 0 (ALL_LOW) или 1 (ANY_HIGH).

cpu.WAKEUP_TIMER

  • time_in_us — неотрицательное число микросекунд в виде Lua integer либо 64-битной десятичной/шестнадцатеричной строки.

cpu.WAKEUP_TOUCHPAD

WAKEUP_ULP

-- allow wakeup by ULP
cpu.wakeupon(cpu.WAKEUP_ULP)
-- allow wakeup by EXT0
cpu.wakeupon(cpu.WAKEUP_EXT0, pio.GPIO26, 1)
-- allow wakeup by GPIO32; the string preserves bit 32 in a 32-bit Lua build
cpu.wakeupon(cpu.WAKEUP_EXT1, "0x0000000100000000", 1)

cpu.sleep(seconds)

Перевести процессор в режим глубокого сна на время, указанное в аргументе seconds. По истечении времени сна процессор перезагружается.

Аргументы:

  • seconds: количество секунд сна.

Возвращает: ничего.

-- Sleep for 10 seconds
cpu.sleep(10)

cpu.deepsleep()

Перевести процессор в режим глубокого сна. Процессор перезагружается, как только происходит одно из событий, настроенных с помощью функции cpu.wakeupon.

Аргументы: нет

Возвращает: ничего

-- Sleep now
cpu.deepsleep()

cpu.wakeupext1pin()

Если причина пробуждения процессора (cpu.wakeupreason) равна cpu.WAKEUP_EXT1, то эта функция может использоваться для определения GPIO, на котором произошло событие.

-- Read the GPIO that woke the CPU
pin = cpu.wakeupext1pin()

-- Print to screen
print("Pin that woke the CPU: "..pin)

cpu.wakeupext1mask()

Если причина пробуждения процессора (cpu.wakeupreason) равна cpu.WAKEUP_EXT1, то эта функция может использоваться для запроса маски всех GPIO EXT1, чтобы выяснить, на каком GPIO произошло событие.

Возвращает Lua integer, если маска помещается в текущий тип lua_Integer. Более широкая маска возвращается строкой вида 0x0000000100000000, чтобы не потерять старшие биты.

-- Read the GPIO mask
mask = cpu.wakeupext1mask()

-- Print to screen
print("EXT1 wake GPIO mask: "..mask)

cpu.watchpoint(addr [, size [, flags]])

Позволяет установить точку наблюдения на определенный адрес, на операции ЗАГРУЗКИ (LOAD), ЗАПИСИ (STORE) или ДОСТУПА (ACCESS).

Аргументы:

  • addr: адрес для наблюдения.
  • size: размер адреса, по умолчанию 4, должен быть одним из значений 2^n, где n находится в диапазоне [0..6].
  • flags: одно из значений cpu.WATCHPOINT_LOAD, cpu.ESP_WATCHPOINT_STORE, cpu.ESP_WATCHPOINT_ACCESS.

Возвращает: ничего.

cpu.backtrace([as_string])

Если система была перезапущена после сбоя/паники/аварийного завершения работы, стек вызовов сбоя будет сохранен в специальной области памяти. Используйте эту функцию, чтобы получить этот стек вызовов.

Аргументы:

  • as_string (необязательно), строка: вывести стек в виде строки (иначе вывод в виде таблицы)

Возвращает: ничего, строку или таблицу Lua, содержащую обратный трассировочный стек (backtrace).

cpu.watchdog.init([timeout_s])

Инициализирует Task Watchdog с таймаутом timeout_s (по умолчанию 10 секунд) и добавляет текущую задачу. При срабатывании ISR только уведомляет отдельную задачу восстановления; остановка UART/power bus и переход в глубокий сон выполняются уже вне ISR.

cpu.watchdog.add()

Добавляет текущую задачу в Task Watchdog.

cpu.watchdog.reset()

Сбрасывает Task Watchdog для текущей задачи.

cpu.watchdog.remove()

Удаляет текущую задачу из Task Watchdog.