No description
Find a file
2024-04-23 14:16:07 +02:00
adc repair adc base 2024-03-07 13:55:30 +01:00
ch32v003 add i2c 2024-04-08 20:55:20 +02:00
common add i2c 2024-04-08 20:55:20 +02:00
debug add pass indicator to debug 2024-03-15 20:03:59 +01:00
doc add files 2024-02-29 12:22:16 +01:00
hdo add target stm32f051 2024-03-07 13:46:47 +01:00
hello add sound to hello 2024-03-17 16:33:48 +01:00
i2c add i2c 2024-04-08 20:55:20 +02:00
keyboard add keyboard 2024-04-23 14:16:07 +02:00
math add math test 2024-03-11 15:05:36 +01:00
midi add i2c 2024-04-08 20:55:20 +02:00
pwm reorganization 2024-03-02 15:44:43 +01:00
serial prepare for new target 2024-03-07 12:23:44 +01:00
stm32f051 midi melody start on button PD3/GND 2024-03-12 13:24:01 +01:00
.gitignore add midi 2024-03-09 11:10:52 +01:00
header.patch add patch for generated header 2024-03-02 19:59:37 +01:00
LICENSE Initial commit 2024-02-29 10:34:30 +01:00
README.md add debug over minichlink 2024-03-15 15:13:20 +01:00

RISC-V

Po 32-bit jednočipech založených na jádru Cortex-Mx nastal čas vyzkoušet něco nového. CH32V003 od čínské firmy WCH se zdá být dobrá volba. Je to levné, malé, má to podporu open source a snese to 5V napájení.

Základem je projekt https://github.com/cnlohr/ch32v003fun. Pokusil jsem se z toho vybrat jen to, co je nezbytně nutné a přepsat to do C++. Je potřeba prográmek minichlink, který umí flashnout firmware a GDB server.

hello

Základní program, používá GPIO a SysTick v režimu přerušení pro blikání LEDkou.

pwm, adc, serial

DEMO pro základní seznámení s periferiemi.

hdo

Tohle je trochu komplexnější příklad.

Na vstup PC4 přivádíme ze síťového transformátoru napětí cca 0.7-1 V efektivního napětí. Vstup musí být tedy připojen na odporový dělič 1:1, zapojený mezi VCC a GND a trafo k tomuto bodu připojíme přes vhodný kondenzátor, tak, aby střídavé napětí nebylo limitováno.

Firmware z toho Goertzelovým algoritmem vytáhne signál HDO (zde 216.6 Hz) a vyhodnotí jednotlivé pulsy. Velikost pulsu je vypisována na sériový port (115200 Bd) a pokud překročí hodnotu trigger, rozsvítí LED na PD2 (aktivní v L). Dále je pak z pulsů sestaven telegram, opět vypsán sériový port, a pokud se shoduje s povelem uvedeným v konstruktoru Hdo, sepne / rozepne relé na portu PD4 (aktivní v H) podle vysílaného signálu. Celé se to vejde do 3.5 KiB flash a 1 KiB RAM, i v takto malém procesoru tedy zbývá poměrně dost místa na jiné kraviny.

Tvar výpisů je tento:
A1---B---4---- DP: VVZZ ZZZV ZZZZ VVZV
A--3-B--34---- DP: --VV Z-V- -V-V ----
A1---B-------8 DP: VVVZ VZVV ZZZV -VZV
A1---B---45678 DP: ---Z -Z-V Z-Z- -VZV

midi

Funguje to podobně jako na STM32F051, jen to má omezení dané asi především tím, že tohle nemá hardwarovou násobičku. Tedy jen 4 generátory. Na hračky typu melodický zvonek, piánko atd. to stačí. Výhoda je, že piny vydrží 20mA, je možné připojit 30 Ohm sluchátka (do série) plus sériový odpor 100 Ohm mezi piny PD0 a PD2 a hraje to s dostatečnou hlasitostí a docela čistě.

debug

Debug přes jednodrátové rozhraní WCH Link. Je to pomalé a divné, ale funguje to. Sice nevím jak, ale je to celkem jedno. Fakticky je to kompletně převzato z https://github.com/cnlohr/ch32v003fun.