Ви не увійшли.
uint8_t TwoWire::endTransmission(uint8_t sendStop) {
uint8_t error = 0;
// transmit buffer (blocking)
TWI_StartWrite(twi, txAddress, 0, 0, txBuffer[0]);
if (!TWI_WaitByteSent(twi, XMIT_TIMEOUT))
error = 2; // error, got NACK on address transmit
if (error == 0) {
uint16_t sent = 1;
while (sent < txBufferLength) {
TWI_WriteByte(twi, txBuffer[sent++]);
if (!TWI_WaitByteSent(twi, XMIT_TIMEOUT))
error = 3; // error, got NACK during data transmmit
}
}
if (error == 0) {
if(sendStop == true) {// вот здесь я дописал
TWI_Stop(twi);
}
if (!TWI_WaitTransferComplete(twi, XMIT_TIMEOUT))
error = 4; // error, finishing up
}
txBufferLength = 0; // empty buffer
status = MASTER_IDLE;
return error;
}
Так ты покажи как сам-то делаешь, а то пока я вижу. что ты хочешь, чтобы за тебя сделали.
И чего ж ты хочешь?
Что бы показали как правильно нужно сделать.
Действительно моя проблема уже поднималась здесь: https://github.com/arduino/ArduinoCore-sam/issues/70 но ни кто так и не решил ее.
Я пробовал сам исправить но тогда данная функция возвращает ошибку error 3, при попытке использовать false.
Беда.
И чего ж ты хочешь?
Krepton85 пише:... это фэйк.
Как исправить эту функцию что бы она работала так же замечательно как на AVR микроконтроллерах?
В архиве библиотека wire для для Ардуино DUE. http://forum.arduino.ua/img/members/1759/Wire_DUE.rarСамостоятельно! Вы также можете обсудить эту проблему с её разработчикми. Отут: https://github.com/arduino/ArduinoCore-sam/issues
Действительно моя проблема уже поднималась здесь: https://github.com/arduino/ArduinoCore-sam/issues/70 но ни кто так и не решил ее.
Я пробовал сам исправить но тогда данная функция возвращает ошибку error 3, при попытке использовать false.
... это фэйк.
Как исправить эту функцию что бы она работала так же замечательно как на AVR микроконтроллерах?
В архиве библиотека wire для для Ардуино DUE. http://forum.arduino.ua/img/members/1759/Wire_DUE.rar
Самостоятельно! Вы также можете обсудить эту проблему с её разработчикми. Отут: https://github.com/arduino/ArduinoCore-sam/issues
Есть проблема с функцией Wire.endTransmission(stop) для Ардуино DUE, эта функция игнорирует аргумент stop , когда я отправляю команду Wire.endTransmission(false) то все равно выполняется команда Wire.endTransmission(true), это делает не возможным использовать RESTART с последующей командой Wire.requestFrom();
Заглянул в библиотеку wire.cpp
uint8_t TwoWire::endTransmission(uint8_t sendStop) {
uint8_t error = 0;
// transmit buffer (blocking)
TWI_StartWrite(twi, txAddress, 0, 0, txBuffer[0]);
if (!TWI_WaitByteSent(twi, XMIT_TIMEOUT))
error = 2; // error, got NACK on address transmit
if (error == 0) {
uint16_t sent = 1;
while (sent < txBufferLength) {
TWI_WriteByte(twi, txBuffer[sent++]);
if (!TWI_WaitByteSent(twi, XMIT_TIMEOUT))
error = 3; // error, got NACK during data transmmit
}
}
if (error == 0) {
TWI_Stop(twi);
if (!TWI_WaitTransferComplete(twi, XMIT_TIMEOUT))
error = 4; // error, finishing up
}
txBufferLength = 0; // empty buffer
status = MASTER_IDLE;
return error;
}
И что мы видим, что аргумент uint8_t sendStop переданный в функцию
в самой функции не где не используется, это фэйк.
Как исправить эту функцию что бы она работала так же замечательно как на AVR микроконтроллерах?
В архиве библиотека wire для для Ардуино DUE. Wire_DUE.rar