Re: Bryta upp ett nummer och ladda in i en array
Postat: 25 december 2011, 07:17:29
Du har en bugg i din kod, det saknas ett '='jesse skrev: /************ Här kommer överkurs för oss programmeringstokiga:
När man loopar en variabel, i och sedan gör (1 << i) inne i loopen kan det kanske ta en massa onödig tid, om den i varje varv ska shifta i antal gånger. Nu kan det hända att GCC ser dett och optimerar bort det, men om den inte gör det , så är detta alltså ett klumpigt sätt för processorn att shifta ett åttabitars tal. **************/
Jag hade gjort så här:Variablen data förstörs visserligen i operationen, men då det ändå sker inne i en funktion sendByte() så bör det inte spela någon roll då variabeln är lokal.Kod: Markera allt
for (i = 0; i<8 ; i++) { send(data & 1); data >> 1; }

Om processorn i fråga har tillgång till en barrel shifter så är en sådan optimering onödig,
men nu var det fråga om en avr som inte har en sådan, så bra tips!