51 lines
2.3 KiB
Markdown
51 lines
2.3 KiB
Markdown
# 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:<br />
|
|
A1---B---4---- DP: VVZZ ZZZV ZZZZ VVZV<br />
|
|
A--3-B--34---- DP: --VV Z-V- -V-V ----<br />
|
|
A1---B-------8 DP: VVVZ VZVV ZZZV -VZV<br />
|
|
A1---B---45678 DP: ---Z -Z-V Z-Z- -VZV<br />
|
|
|
|
## 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.
|