Re: Zase Arduino - jak dostat data do přerušení
Miroslav Mraz
mrazik na volny.cz
Neděle Leden 28 20:05:17 CET 2024
Obecně - volatile moc nepomůže. V C++ by mohlo jít použít std::atomic,
ale netuším, zda to má Arduino implementováno. V podstatě to funguje
tak, že se zakáže přerušení, proměnná se nějak naplní a nakonec se
přerušení zase povolí. U vícebytových proměnných je to v podstatě nutnost.
Lepší možnost je, vytvořit si frontu. Pokud na jedné straně (main) pouze
zapisujete a na druhé (přerušení) pouze čtete, pak si s volatile (pro
jednobytové indexy hlavy a ocasu) celkem vystačíte.
Mrazík
On 28. 01. 24 19:00, Jirka Mww wrote:
> Dobrý večer,
>
> zase se tady trápím s Arduinem. Potřebuji v přerušení od pinu 2 u
> Arduino Nano poslat ven dvanáct bitů. Přerušení vyvolá vstup CS od
> nadřízeného stroje, pak jdou hodiny asi po 200 uS a na jejich sestupnou
> hranu potřebuji posílat ven data. V podstatě mi to funguje, pokud ta
> data, co potřebuji poslat, vytvořím až v té přerušovací proceduře.
> Nevím ale, jak tam dostat data, která vyrobím v hlavní smyčce. Deklaraci
> té proměnné , co chci poslat, mám jako volatile unsigned integer ,
> zkoušel jsem i volatile byte, deklaraci mám v hlavním programu ,zkoušel
> jsem to deklarovat i v té přerušovací proceduře, ale nejsem úspěšný. Ta
> data se pošlou jen jednou, a ještě ne celá. Pak to vypadá, že se ta data
> nějak smažou, nebo co. Posílá to už jen nuly. Bohužel, ladící výpis tam
> nejde udělat. Můžete mne prosím zase nějak nakopnout ?
>
> Zdravi
> Jirka Sloupenský OK1MWW
>
Další informace o konferenci Hw-list