Fixed the binary search

This commit is contained in:
dario 2024-05-25 14:23:46 +02:00
parent aea0b1c262
commit 0de96367af

View File

@ -81,22 +81,26 @@ namespace sta
while (left < right) while (left < right)
{ {
middle = (left + right) / 2; middle = (left + right) / 2;
STA_DEBUG_PRINTF("left=%d, middle=%d, right=%d", left, middle, right);
readData(middle * bytes, buffer, bytes); readData(middle * bytes, buffer, bytes);
STA_DEBUG_PRINTF("Left %d Middle %d Right %d\n", left, middle, right);
if (criterion(buffer)) if (criterion(buffer))
{ {
left = middle+1; left = middle + 1;
} }
else else
{ {
right = middle-1; right = middle - 1;
} }
} }
middle = (left + right) / 2;
readData(middle * bytes, buffer, bytes); readData(middle * bytes, buffer, bytes);
if (!criterion(buffer)) if (criterion(buffer))
middle -= 1; {
middle += 1;
}
delete[] buffer; delete[] buffer;
@ -188,6 +192,19 @@ namespace sta
return busRead(instruction, buffer, length, addrBuffer, 4); return busRead(instruction, buffer, length, addrBuffer, 4);
} }
else else
{
if (fast)
{
uint8_t addrBuffer[4] = {
(uint8_t) (address >> 16),
(uint8_t) (address >> 8),
(uint8_t) (address),
0x00 // Dummy byte for fast mode
};
return busRead(instruction, buffer, length, addrBuffer, 4);
}
else
{ {
uint8_t addrBuffer[3] = { uint8_t addrBuffer[3] = {
(uint8_t) (address >> 16), (uint8_t) (address >> 16),
@ -198,6 +215,7 @@ namespace sta
return busRead(instruction, buffer, length, addrBuffer, 3); return busRead(instruction, buffer, length, addrBuffer, 3);
} }
} }
}
uint8_t W25Qxx::pageProgram(uint32_t address, uint8_t * buffer, size_t length) uint8_t W25Qxx::pageProgram(uint32_t address, uint8_t * buffer, size_t length)
{ {