Új hozzászólás Aktív témák

  • DigitXT

    félisten

    válasz lanszelot #19836 üzenetére

    Nagy vonalakban úgy, ahogy írod, egymagos processzoron: pont erre céloztam,
    hogy azért a megszakítás ennek keresztbe tud verni rendesen, illetve többszálú
    programnál egyéb problémák is felmerülnek a párhuzamosítással kapcsolatban.
    (Márpedig egy ESP32 pl. kétmagos, szóval nem teljesen elrugaszkodott dolog.)

    Az a baj, hogy feltételezed, hogy adott programrészbe került és ott volt a baj a
    delay funkcióval, pedig ez a legkevésbé valószínű.:) Sokkal valószínűbb, hogy
    a kód nem is ott tartott. Ilyenkor hasznos beszúrni egy pár Serial.print(akármi)
    hívást a kritikus részekre, és nézni a Serial Monitor-on, hogy mit írtál el...:R

    Nagyon könnyű elgépelni valamit, s ha megeszi a fordító, akkor sz.rul fog futni:
    az egyik ilyen legtriviálisabb (kezdő*) hiba valami értékének a téves vizsgálata,
    nevezetesen ha véletlenül nem az "==" operátort használod, hanem az "="-t...
    Simán lefordul, simán fut, csak nem azt csinálja, amit gondoltál, hanem amivel
    hasonlítanád, azt adja értéknek, majd értékeli, hogy 0 vagy 1* az eredmény.:DDD

    *: de nem csak kezdők követhetik el, hiszen lehet elgépelés is, emiatt néhány
    fejlesztői környezet direkt nézi az ilyet, warningot dob rá, hogy ezt akartad-e...

    *: pontosabban "nem nulla", nehogy valaki belekössön... Egy gyors példa erre:
    if (sensorValue = 90) { valami } else { egyéb } Ennél nem csak az a baj, hogy
    az "egyéb" soha nem fog lefutni, hanem az is, hogy a sensorValue utána végig
    90 lesz, egészen amíg újra be nem olvastad... (És ez egyetlen pici elgépelés.)

Új hozzászólás Aktív témák