Keresés

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

  • Teasüti

    nagyúr

    válasz _q #7378 üzenetére

    Nagy overhead a ram és rom méreteket illetően, bár van hely bőven így ez nem akkora probléma.
    Emiatt ugye a számítási teljesítmény egy része is elúszik. Bár így is 100x gyorsabb egy UNO-nál, szóval mindegy is.
    Egyfajta virtualizációhoz lehetne hasonlítani.

    Mondjuk nem hiszem, hogy nálam összetettebb felhasználása volna itt még vkinek (73 KB-os forráskód +könyvtárak, amiből a BLE megeszi a rom a közel 70%-át) és jómagam sem futottam még bele se teljesítmény se tárterület problémába. Mondjuk még szeretném majd kipróbálni az OTA programfeltöltést. Arra számítok, hogy az még egy jelentősebb szeletet elvesz a tárból.

    A wifi azt hiszem teljes támogatottságot élvez, a BLE már működőképes, de még "béta" állapotú és így nem fejleszt rá egyetlen 3rd party sem. Ez azt jelenti, hogy a valós alkalmazásokban sok mindent magadnak kell megoldani.
    A perifériák közül eddig én egyedül csak az RMT-t használtam, így a többiről nem tudok nyilatkozni.
    Az Arduino függvények úgy tudom működnek mind, illetve nem tudok példát hozni az ellenkezőjére.
    Nekem az UNO-ra írt programom egy az egyben lefordult ESP32-re is (az Atmel-re írt könyvtárak nélkül természetesen), így ez teljes értékűnek tekinthető szerintem.

    Nálam is tervben volt az IDF megismerése és az alacsonyabb C nyelv tanulgatása, de így hogy megy amit akartam Arduino-ban is, így nekem nem is fontos.
    Meg a mai világban már nem divat a nehezebb úton menni és szopatni magad a hardver specifikus utasításkészlettel és telefonkönyv módszerrel regisztereket programozni, amikor némi overhead árán, de pár absztrakciós réteggel feljebb is meg lehet oldani a problémát könnyen és gyorsan, specializált tudás nélkül.
    Persze nem is lesz olyan hatékony a kód, de ki nem szarja le, érted... Ez nem a Crysis, hogy ultra grafikán kisajtoljak minden fps-t a vasból. :D
    Senkit nem érdekel mit csinál a digitalRead(), amíg megvan az eredmény.
    Példánál maradva:
    extern int IRAM_ATTR __digitalRead(uint8_t pin)
    {
    if(pin < 32) {
    return (GPIO.in >> pin) & 0x1;
    } else if(pin < 40) {
    return (GPIO.in1.val >> (pin - 32)) & 0x1;
    }
    return 0;
    }

    Na most e szerint az sem mindegy melyik lábat olvasom. Programozzon így az, akinek két anyja van! :N
    Én inkább beírom, hogy digitalRead() és együtt élek az overhead-del.

    [ Szerkesztve ]

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