ESP8266: VCC und A0 messen?

Gast #7215620
Lesenswert?

Es gibt zwei Modi des ESP8266, um die Versorgungsspannung bzw. die 
Spannung am Eingang A0 zu messen. Der gewünschte Modus muss im Flash 
abgelegt abgelegt werden (siehe Sript unten) unten. D. h. eine Routine 
schaut vor einer Messung im Flash nach welcher Modus gewählt wurde.

Kann man das Programmieren des Flashs umgehen und entsprechende 
Funktionen direkt aufrufen und wie (Codeschnipsel)?
1
# Quelle: https://micropython.org
2

3
import esp
4
from flashbdev import bdev
5
import machine
6

7
ADC_MODE_VCC = 255          ## Modus VCC des ESP8266
8
ADC_MODE_ADC = 0            ## Modus Spannung am A0-Eingang 
9

10
def set_adc_mode(mode):
11
    sector_size = bdev.SEC_SIZE
12
    flash_size = esp.flash_size() # device dependent
13
    init_sector = int(flash_size / sector_size - 4)
14
    data = bytearray(esp.flash_read(init_sector * sector_size, sector_size))
15
    if data[107] == mode:
16
        return  # flash is already correct; nothing to do
17
    else:
18
        data[107] = mode  # re-write flash
19
        esp.flash_erase(init_sector)
20
        esp.flash_write(init_sector * sector_size, data)
21
        print("ADC mode changed in flash; restart to use it!")
22
        return
23

24
from machine import ADC
25
ADC(1).read()

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren