zdravím,
mám začátečnický dotaz. Jsem samouk a několik projektů jsem již napsal. Ale nevím kde najít odpověď na triviální otázku. Označování adres paměti eeprom nebo Dallas čísly je mi jasný (paměťová buňka nebo adresa. Nerozumím zápisu 0x00. jedná se o adresu a ofset? Moc děkuji za odpověď.
zápis adresy paměti
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Re: zápis adresy paměti
0x znamena, ze to co nasleduje je hexadecimalni cislo
00 je to cislo (jo, nula)
0x10 = 10 hexa = 16 dec
0x0A = A hexa = 10 dec
0x1A = 1A hexa = 26 dec
0x123 = 123 hexa = 291 dec (=1*256+2*16+3*1)
nekdy je pohodlnejsi zapsat cislo dekadicky
int minuts_in_hour = 60; // 0x3e vypada v tomto kontextu podivne
jindy je pohodlnejsi ho zapsat hexadecimalne
byte low_byte_of_my_data = my_data & 0xFF; // jasne jde napsat 255, ale vypada to divne
a nekdy je lepsi to zapsat treba binarne
#define FLAG_CISLO_1 0b00000001
#define FLAG_CISLO_2 0b00000010
#define FLAG_CISLO_3 0b00000100
#define FLAG_CISLO_4 0b00001000
#define FLAG_CISLO_5 0b00010000
byte moje_priznaky = FLAG_CISLO_1 | FLAG_CISLO_3 | FLAG_CISLO_5; // 0b10101 = 0x15 = 21 ale hexa a dec zapis toho moc nereknou
----
https://www.arduino.cc/reference/en/lan ... constants/
Bacha - Arduino knihovny (wiring) definuji konstanty jako B101 a podobne pro "jednodussi" zapis binarnich cisel. Ale protoze sam program je v cecku, tak spravny zapis binarnich konstant je 0b101 a tak podobne.
Arduino/hardware/arduino/avr/cores/arduino/binary.h je ten soubor, kde to spachali a zacina nejak takto:
zatimco kdyz se podivam treba na libraries/Adafruit_Circuit_Playground/utility/Adafruit_CPlay_LIS3DH.h tak tam pouzivaji binarni cisla zapsana normalne
00 je to cislo (jo, nula)
0x10 = 10 hexa = 16 dec
0x0A = A hexa = 10 dec
0x1A = 1A hexa = 26 dec
0x123 = 123 hexa = 291 dec (=1*256+2*16+3*1)
nekdy je pohodlnejsi zapsat cislo dekadicky
int minuts_in_hour = 60; // 0x3e vypada v tomto kontextu podivne
jindy je pohodlnejsi ho zapsat hexadecimalne
byte low_byte_of_my_data = my_data & 0xFF; // jasne jde napsat 255, ale vypada to divne
a nekdy je lepsi to zapsat treba binarne
#define FLAG_CISLO_1 0b00000001
#define FLAG_CISLO_2 0b00000010
#define FLAG_CISLO_3 0b00000100
#define FLAG_CISLO_4 0b00001000
#define FLAG_CISLO_5 0b00010000
byte moje_priznaky = FLAG_CISLO_1 | FLAG_CISLO_3 | FLAG_CISLO_5; // 0b10101 = 0x15 = 21 ale hexa a dec zapis toho moc nereknou
----
https://www.arduino.cc/reference/en/lan ... constants/
Bacha - Arduino knihovny (wiring) definuji konstanty jako B101 a podobne pro "jednodussi" zapis binarnich cisel. Ale protoze sam program je v cecku, tak spravny zapis binarnich konstant je 0b101 a tak podobne.
Arduino/hardware/arduino/avr/cores/arduino/binary.h je ten soubor, kde to spachali a zacina nejak takto:
Kód: Vybrat vše
#ifndef Binary_h
#define Binary_h
#define B0 0
#define B00 0
#define B000 0
#define B0000 0
#define B00000 0
#define B000000 0
#define B0000000 0
#define B00000000 0
#define B1 1
#define B01 1
#define B001 1
#define B0001 1
#define B00001 1
#define B000001 1
#define B0000001 1
#define B00000001 1
#define B10 2
#define B010 2
#define B0010 2
#define B00010 2
#define B000010 2
#define B0000010 2
#define B00000010 2
#define B11 3
#define B011 3
#define B0011 3
#define B00011 3
#define B000011 3
#define B0000011 3
#define B00000011 3
Kód: Vybrat vše
typedef enum
{
LIS3DH_RANGE_16_G = 0b11, // +/- 16g
LIS3DH_RANGE_8_G = 0b10, // +/- 8g
LIS3DH_RANGE_4_G = 0b01, // +/- 4g
LIS3DH_RANGE_2_G = 0b00 // +/- 2g (default value)
} lis3dh_range_t;
typedef enum
{
LIS3DH_AXIS_X = 0x0,
LIS3DH_AXIS_Y = 0x1,
LIS3DH_AXIS_Z = 0x2,
} lis3dh_axis_t;
/* Used with register 0x2A (LIS3DH_REG_CTRL_REG1) to set bandwidth */
typedef enum
{
LIS3DH_DATARATE_400_HZ = 0b0111, // 400Hz
LIS3DH_DATARATE_200_HZ = 0b0110, // 200Hz
LIS3DH_DATARATE_100_HZ = 0b0101, // 100Hz
LIS3DH_DATARATE_50_HZ = 0b0100, // 50Hz
LIS3DH_DATARATE_25_HZ = 0b0011, // 25Hz
LIS3DH_DATARATE_10_HZ = 0b0010, // 10 Hz
LIS3DH_DATARATE_1_HZ = 0b0001, // 1 Hz
LIS3DH_DATARATE_POWERDOWN = 0,
LIS3DH_DATARATE_LOWPOWER_1K6HZ = 0b1000,
LIS3DH_DATARATE_LOWPOWER_5KHZ = 0b1001,
} lis3dh_dataRate_t;
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 10 hostů