0
Зачем крутить? Гнутый ассемблер студией подхватывается автоматически…
0
А дело тут в том, что автомат сделать достаточно просто, только он каждый раз получается «заточен» под конкретную задачу. Делать же универсал — оверкилл, хотя если вдуматься, вполне возможно.
Тут не соглашусь, как раз таки универсальная библиотечка рулит! В этом и есть сила I2C — всё уже готово аппаратно, немного обвязки и можно с комфортом работать с любым количеством слейвов. Даже мультимастер практически не требует никаких телодвижений.
Другое дело если писать слейв — тут действительно почти каждый случай требует индивидуального подхода.
0
Далее будет состояние 0x28, или 0x30 или 0x38. Если 0x28, то надо сделать повторный старт, а остальное это ошибки — в ответ на них надо сделать STOP
Кстати, 0x30 — это не совсем ошибка. NACK во время передачи может означать просто что данные закончились. Если слейв ждёт пакета фиксированной длины, то он вполне может выставлять NACK при получении последнего байта. Так что лучше при обработке этого состояния проверять остались ли данные для отправки, если нет — то всё ок. Если ещё остались — тогда да, сигнализировать об ошибке.
0x38 — это потеря арбитража. Правильные варианты обработки — либо установить TWSTA (тогда умная межка дождётся освобождения шины и снова сформирует старт), либо ничего не делать (если повторять попытку неохота). TWSTO ставить не нужно.
0
Ну, скорее от 6 до 18 — ещё статус загрузить надо… Ну и я обычно ещё 0x38 на всякий случай обрабатываю, так уже от 6 до 20 выйдет, т.е. 13 в среднем.

; Load event code
    lds        R16,_SFR_MEM_ADDR(TWSR)  ; 2
    lsr        R16                      ; 1
    lsr        R16                      ; 1
    lsr        R16                      ; 1

    ; Jump to table
    ldi        ZL,lo8(pm(twi_jump))     ; 1
    ldi        ZH,hi8(pm(twi_jump))     ; 1
    add        ZL,R16                   ; 1
    adc        ZH,R17 ; =0              ; 1
    ijmp                                ; 2
Хм, 11 + джамп по таблице = 13… Ну будем считать что убедил :-[
0
Вообще-то 32 команды. 5 бит же в статусе. Плюс команды перехода на таблицу.

Коды мастера и идут подряд.
А это я зря что ли упомянул? Можно и выкинуть коды слейва, проверить простым сравнением. Ну и обычно такты в прерывании куда ценнее памяти.
0
Коды мастера и идут подряд. Да и полная таблица невелика…

twi_jump:
    rjmp    twi_error            ; 0x00 TW_BUS_ERROR

    rjmp    twi_start_done       ; 0x08 TW_START
    rjmp    twi_start_done       ; 0x10 TW_REP_START
    rjmp    twi_xmit_byte        ; 0x18 TW_MT_SLA_ACK
    rjmp    twi_no_reply         ; 0x20 TW_MT_SLA_NACK
    rjmp    twi_xmit_byte        ; 0x28 TW_MT_DATA_ACK
    rjmp    twi_xmit_nak         ; 0x30 TW_MT_DATA_NACK
    rjmp    twi_arb_lost         ; 0x38 TW_MT_ARB_LOST, TW_MR_ARB_LOST    
    rjmp    twi_recv_start       ; 0x40 TW_MR_SLA_ACK
    rjmp    twi_no_reply         ; 0x48 TW_MR_SLA_NACK
    rjmp    twi_recv_byte        ; 0x50 TW_MR_DATA_ACK
    rjmp    twi_recv_last_byte   ; 0x58 TW_MR_DATA_NACK

    rjmp    twi_error            ; 0x60 TW_SR_SLA_ACK
    rjmp    twi_error            ; 0x68 TW_SR_ARB_LOST_SLA_ACK
    rjmp    twi_error            ; 0x70 TW_SR_GCALL_ACK
    rjmp    twi_error            ; 0x78 TW_SR_ARB_LOST_GCALL_ACK
    rjmp    twi_error            ; 0x80 TW_SR_DATA_ACK
    rjmp    twi_error            ; 0x88 TW_SR_DATA_NACK
    rjmp    twi_error            ; 0x90 TW_SR_GCALL_DATA_ACK
    rjmp    twi_error            ; 0x98 TW_SR_GCALL_DATA_NACK
    rjmp    twi_error            ; 0xA0 TW_SR_STOP
    rjmp    twi_error            ; 0xA8 TW_ST_SLA_ACK
    rjmp    twi_error            ; 0xB0 TW_ST_ARB_LOST_SLA_ACK
    rjmp    twi_error            ; 0xB8 TW_ST_DATA_ACK
    rjmp    twi_error            ; 0xC0 TW_ST_DATA_NACK
    rjmp    twi_error            ; 0xC8 TW_ST_LAST_DATA

    rjmp    twi_error            ; 0xD0
    rjmp    twi_error            ; 0xD8
    rjmp    twi_error            ; 0xE0
    rjmp    twi_error            ; 0xE8 
    rjmp    twi_error            ; 0xF0
    rjmp    twi_error            ; 0xF8 TW_NO_INFO
0
при 2 мГц задержка на 17 us
А я думал, только китайцы на алиэкспрессе частоту радиомодулей мерят в миллигерцах. Для радиолюбителя — стыд и позор…
0
TXB в принципе не очень дружат с подтяжками, т.к. входы — одновременно и выходы (через резючок килоом на 15). Разве что ставить подтяжки ~1к, чтобы перетягивали.
0
Нет, уж лучше NCP1117 чем непонятная китайская экзотика. ONS — уважаемая фирмочка, сот-223 — корпус с нормальным охлаждением (а карточка может жрать порядка сотни миллиампер). Дешёвая и распространённая. И в большинстве случаев вполне достаточно. А если есть особые требования — я предпочитаю среди тпс-ок глянуть…
+1
Не нравятся мне способы согласования, где на 5в вход подают 3.3в. Частенько SPI и не запускается на полной скорости, в зависимости от фазы луны и производителя микрухи. Такое решение применяется в ардуиновских «сд-ридерах» с али, что уже о чём-то говорит. Там и других косяков хватает — скажем, нет подтяжки на мисо и часть карточек из-за этого не инициализируется. Представить не могу чтобы что-то на ардуине не глючило…
Лучше уж поставить TXS0104E/TXS0108E. Чуть подороже, зато отлично работает. Позволяет корректно отключать питание слота, даже без иголок на CS при включении. Совместимо с мульти-слейвом по обеим сторонам. Подтяжки уже по сути встроены в микруху, что здорово экономит место…
0
В общем-то, лучший текстовый редактор. По скорости, оформлению (аккуратное классическое) никаких альтернатив не существует. По функциональности — в чём-то лучше, в чём-то хуже вижуал студио. Работа с прямоугольными блоками, одновременный ввод, макросы и т.п. — имеется. Недавно наконец-то доработали чтобы при вставке, когда в буфере только 1 строчка, вставлялась она во все курсоры, а не только в первый… По кастомизации тоже вне всякой конкуренции. Можно обучить любому языку через гуй. И сразу понимает кучу всего, вплоть до какого-нибудь Intel hex (в котором даже чекусуммы подсвечивает «правильно/неправильно»). Много полезных плагинов. Занимает пару мегабайт, хранит настройки в текстовых файлах, не требует никаких «установок», не клянчит денег…
0
эта свинья вообще не следит за языком
Да, увы, разговаривая с говном постепенно приходишь к его же уровню…
0
Забавно, что ваша фраза это, как раз, «нет ты»
В каком месте? Тебе предложили доказать свою чушь парой линков, ты начал юлить в духе «а сам-то ...». Когда тебе закономерно указали на уход от темы, где-то нашёл «нет ты». С тобой спорить — что с шулером играть…
Вы передернули с размером выборки
Открываю твои комменты в произвольном месте и вижу «Эк вы самокритично-то», «он явно сам с собой» и т.п. Любому непредвзятому наблюдателю, который посмотрит на твои посты будет соврершенно ясно «этот хрен постоянно передёргивает». Или ты ожидаешь, что я собираюсь ковыряться в твоём словесном поносе и собирать точную статистику? Твои цепляния к словам ничего не меняют.
Не предполагал, что желание видеть доказательства это «подлый приемчик».
Подлый приёмчик — нарочно неверно интерпретировать фразу, делая вид что не понял что именно в ней — перечисление приёмчиков (закос под дурачка?).
"[уходить от неудобных вопросов, игнорировать половину слов и развлекаться, заставляя что-то доказывать] [собеседников, которые не снисходят до подобных подлых приёмнчиков]"
Но если уж на то пошло, то привести доказательства первым предложили вы.
От чего ты с ловкостью носорога в посудной лавке увильнул…

Мне вот интересно, откуда в человеке, столь «искусно» передёргивающем, уходящем от темы, цепляющемся к словам, косящем под идиота, игнорирующем слова, готовом весь день в комментах демонстрировать свой навык компостировать мозги (начальству?) и т.п. находится место для технической компетентности?
0
вам всего лишь советуют
Не советуют, а уводят разговор от неудобной темы о том с какой стати «нет ты» вдруг стало «моим любимым».
показать 100%
"Примерно" не означает «все». Согласен, процентов 30 твоей чуши — не прямое «нет ты», но оно явно преобладает, это очевидно, стоит лишь бросить беглый взгляд на список твоих комментов на любой странице…
Но я с удовольствием посмотрю на ваши жалкие потуги.
Твоя стратегия понятна — уходить от неудобных вопросов, игнорировать половину слов и развлекаться, заставляя что-то доказывать собеседников, которые не снисходят до подобных подлых приёмнчиков. И потом ещё предлагать за что-то извиняться. Но перед свиньями не извиняются, извиняются перед людьми…
0
Ну вы вполне можете начать с себя
Хе-хе, очередное «нет ты». Судя по всему, ты и сам не замечаешь…
Из твоих последних 10 постов:
«Ну вы вполне можете начать с себя»
«Полагаешь, твое игнорирование аргументов опонентов чем-то существенно отличается?»
«применяешь этот навык ты»
«И снова ваше любимое»
«Так вот почему ты»
«Вот только оно ваше»
«Но неуемное желание виндоюзеров быть «правыми» любой ценой»
Итого 7/10. Так что да, чуть ли не все твои посты — неаргументированное передёргивание. Вымышленное мной, якобы. Уже который раз замечаю (да и не только я) — всё, что то что ты говоришь прямо противоположно дейстивтельности. В т.ч. в отношении эклипсов, программирования и прочего. Человек, претендующий на техническую грамотность и живущий в мире своих убогих фантазий (да, я знаю что ответом будет очередное шаблонное «нет ты»).
0
Я-то на конкретное «Вот только оно ваше.» указал. А не как в примерно 100% твоих постов — «нет ты» без всяких аргументов. Хочешь доказать, что оно «моё любимое» — потрудись пару-тройку линков привести.
0
Вот только оно ваше.
Евси — главный спец по передёргиванию пытается делать вид «я тут не причём», дважды при этом передёргивая…
0
Как тогда твоё «зачем об этом писать?» понимать? На самого себя маршак не распространяется?
0
Заебали уже со своими «нет ты». Если ничего кроме «нет ты» придумать не в состоянии, уж точно стоило бы помолчать.
0
ЧПУ вроде бы до сих пор на подобном изврате гоняют.
Так-то, если винда 2К/XP, не засрана всякими авастами и прочим мусором, работать будет. Решение, впрочем, не для ванильной семёрки, постоянно лезущей в инет, ставящей апдейты с ребутом, зачем-то непрерывно шарящей по диску…