MCU: различия между версиями
Sergey (обсуждение | вклад) (→UART) |
Sergey (обсуждение | вклад) (→UART) |
||
Строка 65: | Строка 65: | ||
- UART_CR1.RWU: mute mode. WAKE = 0: until idle, WAKE = 1: listen for address (MSB=1 as mark of address - 4 bits LSB) | - UART_CR1.RWU: mute mode. WAKE = 0: until idle, WAKE = 1: listen for address (MSB=1 as mark of address - 4 bits LSB) | ||
- UART_CR4.ADD: own address | - UART_CR4.ADD: own address | ||
+ | - only first byte after idle considered as possibly containing address mark? not clear. | ||
=== jobs === | === jobs === |
Версия 19:35, 4 ноября 2021
cam
ESP32-CAM OV2460
links
Lightweight C compilers http://fun4diy.com/
STM8
compilers comparation http://www.colecovision.eu/stm8/compilers.shtml
startup
- Power requirements: 3.3-5V
- Reset circuit (100nF cap)
- Select clock source (ext.crystal/HSI)
- Choose halt modes for
- flash
- HSI, HSE
- use timer or AWU for wake-up if no ext.ints
- calibrate LSI osc.
- configure GPIO
- use watchdog
AWU
- on int disable AWU (or new int will be generated instantly)
- before re-enable re-load counter
UART
- word length: UART_CR1.M - stop bits: UART_CR3 - baud rate: UART_BRR2 then UART_BRR1 - en transmitter: UART_CR2.TEN - send data: UART_DR and wait until TC goes 1
TXE: set at end of transmission (and if TIEN then int is generated) - can send more
wait for TXE before write DR
TC: transmission complete (and if TCIEN then int is generated) - may disable transmitter
SBK bit: send break character (do not set again before prv break is sent)
UART_CR1.R8: MSB for received 9-bit words
NF: set when start bit has spurious '1's
- en receiver: UART_CR2.REN
clear REN to abort receive immediately
RXNE: set when data moved to RDR (and intr if RIEN set)
if char is received without RXNE reset then overrun error raised
break char: received as framing error
idle char: intr if ILIEN set
- UART_CR1.PCEN : one bit of total length will be used for parity - UART_CR1.PS : even/odd parity
- UART_CR1.RWU: mute mode. WAKE = 0: until idle, WAKE = 1: listen for address (MSB=1 as mark of address - 4 bits LSB) - UART_CR4.ADD: own address - only first byte after idle considered as possibly containing address mark? not clear.
jobs
MAYHALT - semaphore, must be incremented on start of each no-halt process e.g. UART TX syssleep func:
check for mayhalt if zero halt if not wfi loop if no jobs else get toppest by pri and start
sysjobs:
populated with int handlers, address of jobs to run (with associated data ptr)
?sysqueues: ? if smth is put on it, associated job is created by system