Библиотека MAX6675, поясните суть процесса
- Войдите на сайт для отправки комментариев
Вс, 25/04/2021 - 17:36
Подскажите, что происходит в следующем кусочке кода( не понимаю сокращения).
**** ВЗЯТО из БИБЛИОТЕКИ MAX ***********************************
uint16_t v;
v = spiread(); Здесь,записывается первый байт в младшую позицию в слове(двухбайтной переменной:spiread возвращает один байт)
v <<= 8; Здесь, происходит перемещение младшего байта в старший
v |= spiread(); А вот здесь что происходит?
********************************
double readCelsius(void) {
uint16_t v;
digitalWrite(thermoCS, LOW);
//_delay_ms(1);
v = spiread();
v <<= 8;
v |= spiread();
digitalWrite(thermoCS, HIGH);
if (v & 0x4) {
// uh oh, no thermocouple attached!
return NAN;
//return -100;
}
v >>= 3;
return v * 0.25;
}
// Функция чтения SPI - взята из библиотеки MAX6675
byte spiread(void) {
int i;
byte d = 0;
for (i = 7; i >= 0; i--)
{
digitalWrite(thermoCLK, LOW);
//_delay_ms(1);
if (digitalRead(thermoDO)) {
//set the bit to 0 no matter what
d |= (1 << i);
}
digitalWrite(thermoCLK, HIGH);
// _delay_ms(1);
}
return d;
}
Полгода на форуме! А код вставлять так и не научились? Вставьте нормально!
Я скопировал с соседней ветки...
v <<= 8; Здесь, происходит перемещение младшего байта в старший
v |= spiread(); А вот здесь что происходит?
Вновь прочитанный байт вписывается на место младшего байта переменной v не затирая старшего, который туда уже вписан.
Евгений П, Спасибо!