Serial.write(val) и Serial.write(buf, len), в чем разница?
- Войдите на сайт для отправки комментариев
Втр, 13/11/2012 - 22:40
Есть ли разница передачей бинарного кода массивом с помощью Serial.write(buf, len) и циклом с помощью Serial.write(val)?
Мне показалось, что есть, но я не уверен (может показалось). Если есть, то в чем она заключается?
И еще вопрос, откуда такое ограничение длины массива бинарного кода, передаваемого с помощью Serial.write(buf, len) в 880 байт (что-то около того)? И почему именно такое число.
Ну е-мое. Никто что ли не знает? Ладно я нуб, нубом привык работать с армами и кортексами...
Предполагаю, что разница небольшая, если вообще есть. Я бы заглянул в исходники для начала.
UPD: как я и думал:
Одно не понимаю, зачем про софт спрашивать в теме "аппаратные вопросы"?
И еще вопрос, откуда такое ограничение длины массива бинарного кода, передаваемого с помощью Serial.write(buf, len) в 880 байт (что-то около того)? И почему именно такое число.
Ну, вообще-то это почти 40% всей доступной в ATMega328 RAM. А ведь в ней еще стек разместить надо, место под буфер ввода/вывода UART, то да се ... Да и пользователю под его переменные что-то оставить.
А у ATMega168 (а они тоже используются в некоторых модельках - та же Arduino mini, например) так и вообще вся RAM - какие-то жалкие 1024 байт... Минус стек, минус буфер UART (самый минимум - в последних версиях - вроде бы 64 байта). На то да се места уже и не остается.
Ну е-мое. Никто что ли не знает? Ладно я нуб, нубом привык работать с армами и кортексами...
Просто лень искать.
Читайте исходники, в частности, h-файлы, там все ограничения задефайнены. Если очень нужно - можно поменять.
h-файлы лежат в hardware\arduino\cores\arduino\