Skocz do zawartości

Programator pamięci FLASH


Pomocna odpowiedź

Podoba Ci się ten projekt? Zostaw pozytywny komentarz i daj znać autorowi, że zbudował coś fajnego!

Masz uwagi? Napisz kulturalnie co warto zmienić. Doceń pracę autora nad konstrukcją oraz opisem.

Ogólnie bardzo fajny projekt. Jedyne co zapisał bym inaczej (bardziej arduinowo) to:

shiftOut(SHIFT_DATA, SHIFT_CLK, MSBFIRST, highByte(address));
shiftOut(SHIFT_DATA, SHIFT_CLK, MSBFIRST, lowByte(address));

Jak dla mnie jest to bardziej "human readable" 🙂

(edytowany)

Z tego co widzę, highByte(); i lowByte(); nie będzie działać, jeżeli szyna adresów będzie szersza od 16 linii (użyjemy zmiennej większej od int16_t, więc wyślemy tylko 8 bitów po lewej i 8 po prawej). Przesunięciem bitowym (>> i <<) można obsłużyć większe dane. Ale do małych pamięci jak najbardziej można użyć tamtych funkcji, chociaż przesunięcie bitowe mi się wydaje lepszym rozwiązaniem.

Edytowano przez Leoneq
6 godzin temu, Leoneq napisał:

Z tego co widzę, highByte(); i lowByte(); nie będzie działać, jeżeli szyna adresów będzie szersza od 16 linii

Tak zgadza się. Aczkolwiek w tym projekcie jest

void setAddress(int address)

dlatego podałem możliwość użycia highByte() oraz lowByte.

6 godzin temu, Leoneq napisał:

chociaż przesunięcie bitowe mi się wydaje lepszym rozwiązaniem.

w twoim kodzie jest:

address >> 8

highByte() robi to samo

#define highByte(w) ((uint8_t) ((w) >> 8))

w przypadku lowByte() jest inaczej. Aczkolwiek trzymaj się tego co bardziej Ci odpowiada.

  • Lubię! 1
2 godziny temu, slon napisał:

w tym projekcie jest


void setAddress(int address)

dlatego podałem możliwość użycia highByte() oraz lowByte.

A ile bitów ma int?

 

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...