Чт фев 27, 2020 10:52:52
Чт фев 27, 2020 10:53:48
Чт фев 27, 2020 10:57:23
с языка снялиIvanoff-iv писал(а):не i_тый, а (7-i)_тый
Чт фев 27, 2020 11:08:41
Чт фев 27, 2020 11:13:50
uint8_t SoftI2CWriteByte(uint8_t data)
{
uint8_t i;
for(i=0;i<8;i++)
{
SOFT_I2C_SCL_LOW;
Q_DEL;
if(data & 0x80)
SOFT_I2C_SDA_HIGH;
else
SOFT_I2C_SDA_LOW;
H_DEL;
SOFT_I2C_SCL_HIGH;
H_DEL;
while((SCLPIN & (1<<SCL))==0);
data=data<<1;
}
//The 9th clock (ACK Phase)
SOFT_I2C_SCL_LOW;
Q_DEL;
SOFT_I2C_SDA_HIGH;
H_DEL;
SOFT_I2C_SCL_HIGH;
H_DEL;
uint8_t ack=!(SDAPIN & (1<<SDA));
SOFT_I2C_SCL_LOW;
H_DEL;
return ack;
}
Чт фев 27, 2020 11:16:25
Чт фев 27, 2020 11:18:34
for(uint8_t mask=0x80; mask; mask >>=1){
if (Data & mask) ...
}
Чт фев 27, 2020 11:25:46
Чт фев 27, 2020 11:39:23
Да и реализация выше в общем-то особо к платформе не привязана.
while((SCLPIN & (1<<SCL))==0);
if(SDAPIN &(1<<SDA))
data|=(0x80>>i);
Чт фев 27, 2020 13:24:59
астма - это болезнь.Shuspano писал(а):на астме
Чт фев 27, 2020 13:29:22
бесконечное ожидание момента, когда бит SCL в регистре (?) SCLPIN станет равным 1.Shuspano писал(а):объясните эту конструкцию?
- Код:
while((SCLPIN & (1<<SCL))==0);
if(SDAPIN &(1<<SDA))
data|=(0x80>>i);
Пт фев 28, 2020 16:15:04
съел на 6 байт побольше флеша, сравнительно с циклом, где маска не меняется.ARV писал(а):цикл по маске
// uint8_t bit = 8;
// while(bit--){
// draw_pixel(x, y, byte & 0x80, width);
// byte <<= 1;
// y++;
// }
// + 6 bytes FLASH
for (uint8_t mask = 0x80; mask; mask >>=1) {
draw_pixel(x, y, byte & mask, width);
y++;
}
Пт фев 28, 2020 16:20:10
Пт фев 28, 2020 16:32:39
byte & 0x80
byte & mask
Пт фев 28, 2020 17:12:36
Сб мар 14, 2020 16:16:12
1начало
2...
3...
4for (int q = 0; q < 12;q++ ) {
5 ...
6 ...
7 refreshAll(); } // вывод на экран
8...
9...
10...
11конец
1начало
2...
3...
4for (int q = 0; q < 12;q++ ) {
5 ...
6 ...
7 refreshAll(); // вывод на экран
8 millis() % 75==0; } //нужна здесь пауза 900мс/12=75мс
9...
10...
11конец
Сб мар 14, 2020 18:03:10
неправильноSerzh2000 писал(а): затем 1,2 и т.д
правильно!?
millis к паузе вообще отношения не имеет. Собственно, если бы Вы прочитали сами то, что процитировали по этому поводу, то тоже поняли бы это.Serzh2000 писал(а):8 millis() % 75==0; } //нужна здесь пауза 900мс/12=75мс
Сб мар 14, 2020 18:45:51
неправильно
millis к паузе вообще отношения не имеет.
1начало
2...
3...
4for (int q = 0; q < 12;q++ ) {
5 ...
6 ...
7 refreshAll(); // вывод на экран
8 my_millis(10); } //нужна здесь пауза
9...
10...
11конец
12 void my_millis(uint32_t us) {
13 uint32_t tmr = millis();
14 while (millis() - tmr < us);
15 }
Сб мар 14, 2020 19:02:28
Сб мар 14, 2020 19:26:39
висеть заказанное время в одном месте.