RISC-V/hdo/main.cpp
2024-03-05 14:52:55 +01:00

38 lines
1.5 KiB
C++

#include "adcclass.h"
#include "hdo.h"
///////////////////////////////////////////////////////////////
/* 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
*
*
* !!! Krystal 24 MHz nutný !!!
* */
///////////////////////////////////////////////////////////////
static AdcClass adc;
static Hdo hdo ("A3B1DP7");
int main () {
adc.attach(hdo);
for (;;) {
hdo.pass();
}
return 0;
}