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()
|