Re: Arduino generování pulzů

Pavel Hudeček edizon na seznam.cz
Úterý Srpen 1 10:03:21 CEST 2023


U AVR je to naopak, staré to neměly a nové mají pod PORT registry ještě 
OUT, OUTSET, OUTCLR a OUTTGL. A stejně i u dalších registrů.

Na klasických AVR, tedy včetně "arduinových" zakázat přerušení, provést 
operaci a povolit.

Ty nové mají i mnoho dalších příjemných vlastností, takže už jsem dlouho 
staré nikam nepoužil. Kdybych nutně potřeboval modul, místo Arduina bych 
použil devkit od nových AVR. Ale uznávám, že cena toho devkitu je řádově 
jinde:-)

PH

Dne 01.08.2023 v 6:43 Zdenek napsal(a):
>
> 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í)
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20230801/9341b09e/attachment.htm>


Další informace o konferenci Hw-list