2024-03-07 12:23:44 +01:00
|
|
|
#include "adcdma.h"
|
2024-03-05 14:52:55 +01:00
|
|
|
#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ý
|
2024-03-06 18:47:24 +01:00
|
|
|
* port (PD5, 115200 Bd) a pokud překročí hodnotu trigger, rozsvítí LED na PD2 (aktivní v L).
|
2024-03-05 14:52:55 +01:00
|
|
|
* 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ý !!!
|
|
|
|
* */
|
|
|
|
///////////////////////////////////////////////////////////////
|
2024-03-07 12:23:44 +01:00
|
|
|
static AdcDma adc;
|
|
|
|
static Hdo hdo ("A1B8DP1");
|
2024-03-04 22:23:14 +01:00
|
|
|
int main () {
|
2024-03-05 14:52:55 +01:00
|
|
|
adc.attach(hdo);
|
2024-03-04 22:23:14 +01:00
|
|
|
for (;;) {
|
2024-03-05 14:52:55 +01:00
|
|
|
hdo.pass();
|
2024-03-04 22:23:14 +01:00
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|