ceckovy kviz

Miroslav Šinko sinkomiro na gmail.com
Čtvrtek Září 7 01:14:09 CEST 2023


Kazdy ma svoje zvyklosti a C poskytuje volnost (ako sme videli, az do 
absurdnosti). Ja by som to napisal takto:
ISR(ADC0_RESRDY_vect)
{
static uint8_t mxIdx=0;

     adData[AD_chanStart + mxIdx] = ADC0_RES;
     mxIdx++;
     if(mxIdx > (AD_chanEnd - AD_chanStart))
     {
          mxIdx = 0;
     }
     ...
}
Kazdy riadok vyjadruje to, co robi, netreba sa extra nad tym zamyslat 
(citatelnost kodu). Aj vas povodny zapis je pochopitelny, ziadne 
hardcore :), len mam svoje zvyklosti.

..tym potvrdzujem aj dalsie prispevky, ze zatvorky {} pisem spravidla 
vzdy a podpisujem ich pod seba.

Index som prerobil, aby siel od 0 (to je podla mna vyznam indexu), tym 
aj ta inicializacna hodnota az tak nevadi. Dalo by sa zaviest:
#define MAX_MXINDEX (AD_chanEnd - AD_chanStart)
apod... to je ten zeleny strom :)

miro

On 6.9.2023 22:45, Pavel Hudeček wrote:
> Já si myslím, že tohle je typický příklad umělé konstrukce, kterou přímo 
> v této podobě nikdo normálně nepoužije. Jenže šedá je teorie a zelený 
> strom života...
> 
> Měříme na pár kanálech ADC a jednou to uděláme bez přerušení a podruhé s:
> 
> *for (uint8_t mxIdx=AD_chanStart; mxIdx<=AD_chanEnd; mxIdx++)* {
>      ADC0_MUXPOS = mxIdx;
>      ...
>      adData[mxIdx-AD_chanStart] = ADC0_RES;
> }
> 
> Normální for, v jednom řádku se dozvíme od, do a po jak velkých krocích.
> 
> Jenže normálně nechci měřit for cyklem a v něm čekat až je změřeno, 
> takže chci použít přerušení. Ale v něm chci mít taky takový jeden řádek, 
> kde je jedna konstrukce s od, do a po jakých krocích.
> 
> ISR (ADC0_RESRDY_vect) {
>      static uint8_t mxIdx=AD_chanStart;
> 
>      adData[mxIdx-AD_chanStart] = ADC0_RES;
> *if (++mxIdx > AD_chanEnd) mxIdx = AD_chanStart;*
>      ...
> }
> Jen je škoda, že ta inicializační hodnota je tam dvakrát. Ale pořád je 
> to lepší, než rozdělený na řádky ++ a if. Proč? Jednak když to vidím, 
> tak je to jako vidět ten for, prostě jasná konstrukce, kde hned vím co 
> dělá a proč. No a hlavně se při nějaké úpravě nemůže snadno stát, že se 
> z toho omylem kus odsune, vymaže, či zkopíruje kam nemá.
> 
> Je možné, že když to někdo vidí poprvé, tak mu to chvíli jasné není. 
> Jakmile to pochopí, tak je to prostě standardní konstrukce s na první 
> pohled jasným chováním, stejně jako for použitý běžným způsobem.
> 
> PH


Další informace o konferenci Hw-list