Å tenke utenfor IDE for å gjøre en hurtigtellende Arduino


[Udo Klein] tok på seg vanskeligheten med å telle så raskt som mulig ved hjelp av et Arduino-bord. Søket innebærer et søk etter korte kutt som lar ham kjøre en 20-biters teller så raskt som mulig ved hjelp av lagermaskinen. Men fangsten er at Arduino-atmosfæren har noen overhead som kjører i bakgrunnen, som vil bremse ting ned. Han ser på hver av disse veibudene, og viser deretter en måte å komme seg rundt.

Koden bruker en kommando vi vanligvis ikke ser i moderne C Embedded programmering; goto-setningen. Han bruker dette til å omgå de ekstra syklusene som brukes av Arduino’s In-Buate Loop () -funksjonen. Den eneste kommandoen som kjøres i hans hackede loop er et dypt nestet sett med makroer. De bytter utgangspinner med maskinvaren XOR innebygd i AVR-brikken. Dette adresserer direkte registre og dermed dumper nedgangen som er lagt til av digitalwrite () -funksjonen.

Resultatet er en programvareteller som skifter utgangslysene (se klippet etter pause) på ca 98,9% av maskinvareklokkehastigheten. Ganske imponerende, men [udo] figurer han kan gjøre det bare litt raskere ennå.

Leave a Reply

Your email address will not be published. Required fields are marked *