RE: Arduino generování pulzů

Zdenek zdej na atlas.cz
Úterý Srpen 1 06:43:18 CEST 2023


U starších procesorů bývaly instrukce ANL PORT,maska a ORL PORT,maska, kdy čtení stavu a zápis proběhlo v jedné instrukci. To bylo odolně vůči přerušení.

Nevím, jestli u nových existuje obdoba tohoto přístupu…

 

From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Petr Zapadlo
Sent: Tuesday, August 1, 2023 6:28 AM
To: hw-list na list.hw.cz
Subject: Re: Arduino generování pulzů

 

Zdravím, 

to jsem neznal díky.  Jak se dívám, tak digitalWritefast() je pouze sada maker, která rozvine zápis na GPIO na zápis přes registry  případě konstantního argumentu čísla pinu.

Tenhle syntaktický cukr je už na můj vkus příliš sladký, asi zůstanu u klasického přístupu - pokud to bude nekritické, tak digitalWrite, pokud to bude časově kritické, tak přístup přes registry (a nemíchat v jednom kodu).

Spíše mě zaujala ta poznámka o neatomicitě   zápisu v přerušení.

Chápu to správně, že když se mi přerušení, které manipuluje například s bity 4-7 portu D trefí přesně do okamžiku kdy jsem načetl stav portu D pro potřeby například OR (chci nahodit  bit 0, portu D), tak vlastně po zápisu na port v hlavní smyčce  "vymažu" změnu co proběhla v přerušení?

Jak se to dá řešit? ( samozřejmě kromě zakázání přerušení)

Díky

Petr

------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20230801/9efaa970/attachment.htm>


Další informace o konferenci Hw-list