Otázka je taková jestli by to fungovalo ten projekt HDO detektor i na tomto čipu ? pochopitelně po úpravě ze kterou bych potřeboval pomoct
![Embarassed :oops:](./images/smilies/icon_redface.gif)
jelikož jsem nebyl "odchován" na C ale na pascalu ,autor projektu napsal své přístupy k registrům procesoru nepoužil standardní knihovny.
díky
Začátek programu je main
Kód: Vybrat vše
#include "main.h"
/**
* @file
*
* @brief Spínač HDO.
* Ve starším příkladu byl pro tento účel použit procesor ARM poněkud zastaralé struktury.
* Zde použijeme procesor STM32F051 s tím, že snad chvilku přežije a pokud ne, mělo by to
* jít snadno přeportovat na jiný. I když - zde jsou použity poněkud netradiční postupy.
* -# Není použita standardní periferní knihovna.
* -# Dokonce i standardní hlavička byla nahrazena řadou vlastních definic periferií, jen tak
* na zkoušku, že to jde i jinak. Používá bitová pole.
* -# Celé je to psáno v C++ a to tak, že používá vše, co jen na tak malém procesoru lze
* efektivně využít. Dědičnost, polymorfizmus, šablony.
*
* Výsledný obraz kódu je dost kompaktní, s použitím optimalizace je C++ docela efektivní
* nástroj pro tvorbu firmware. Kód by měl fungovat na F0 Discovery kitu s následujícím
* pinoutem:
*
* -# PA5 - vstup DAC, hlídané napětí.
* -# PA2 - Relé, aktivní úroveň H.
* -# PA3 - Povolovací výstup (nemusí být použit, stálá úroveň H - speciální IO pro test to prostě potřeboval).
* V konstruktoru Filter::Filter() :
* -# PC8 - modrá led na kitu, bliká s periodou 240 ms, indikuje, že fw žije.
* -# PC9 - zelená led na kitu, svítí při jednotlivých bitech telegramu.
*
* Telegramy se i zde vypisují na sériový port (PA9) s nastavením 8N1, 9600 Bd.
*
* */
// Dvě nezávislé třídy se pak spojí v součinnost operátorem +=
static AdcIrq adc (1000, 5); // 1MHz / 1000 = 1 kHz, kanál 5 (pin PA5)
static Filter hdo (1706); // Viz calculate
static GpioClass relay (GpioPortA, 2); // Relé je na IC-DX
static GpioClass enabl (GpioPortA, 3); // a ten potřebuje vybavení.
int main (void) {
enabl << true; // Pomocný výstup pro IC-DX, není nutný
// Nastavit úroveň spínání
hdo.setTriger (0x20000);
// Výstupní pin
hdo.setOutput (&relay);
// Výkonný povel
hdo.setCommand("A1B2DP5");
// Nad adc je hdo - to pokračuje v práci.
adc += hdo; // spojit
// Skonči v nekonečné smyčce.
for (;;) {
hdo.Telegram();
__WFI(); // Lze i uspat jádro, ADC ho včas probudí.
}
return 0;
}
teď dumám na tým kde pokračuje
snažím se najít s těch třídách
a nemohu nic najít