Сейчас на всех вестибюлях станций метро вешают светодиодные часы-термометр. Какой-то гений на Ленинском проспекте повесил их прямо на решетку вентшахты, встроенной в вестибюль, в итоге вокруг мороз, а термометр весело сообщает о нуле градусов
(
Read more... )
Comments 25
перемудрили
А какой именно это чип?
Reply
Тоже самое по идее в F0.
В F1 старый и2ц, говорят очень глючный, не сталкивался к счастью. Вот насчет F4 не уверен, но подозреваю что тоже старый.
Глянул F4 - точно, старый.
А в F3 они заморочились - там все по максимуму автоматизированно - настраиваешь адрес, настраиваешь количество байт передать/принять, запускаешь и оно само все(почти) делает :)
Reply
1) регистр опустошился, интеррупт дёрнулся, бит значит "докиньте данных в регистр ололол!11"
0) регистр пустой, ок.
Reply
Reply
Reply
Он может быть установлен в единицу (для генерации сообщения TXIS) программой, но такая запись возможна, только если NOSTRETCH=1.
Сгенерируется прерывание, если установлен бит TXIE, и запрос DMA, если установлен TXDMAEN.
Бит 0 аналогичен (очищается сам(by hardware) по записи в регистр I2Cx_TXDR. Устанавливается, если необходимо записать новую порцию данных в регистр),
но запись в него единицы приведет к очистке регистра данных(ясно, что до их фактической передачи, вроде ж регистр чистится сам после отправки пачки данных, так?)
Reply
Это не единственная разница, судя по поведению. Я до сих пор не понимаю логику этих флагов, какой нужен для чего и в каких ситуациях.
Reply
Reply
Ситуация - надо передать два байта по и2ц(после адреса). Инициализирую передачу, пишу в TXDR первый байт сразу.
Потом ловлю прерывание по флагу(одному из этих двух), которое говорит нам что байт передался и можно слать следующий. Пишу в TXDR второй байт, завершаю передачу, все отлично.
Веселуха начинается при попытке повторить тоже самое еще раз. В случае если использовался флаг TXIS - все ок, тот же алгоритм приводит к правильному результату. А вот если использовать TXE, то первый байт второй посылки будет не тот что мы запишем, а такой же, как второй байт первой посылки. Не знаю, баг это или фича, в ERRATA про это нет(хотя другие косяки с I2C там описаны). Ну и в любом случае описание кривое - можно было бы поподробнее расписать чем отличаются биты и когда что применять. Впрочем это типично для ST :)
Reply
Reply
Выглядит круто, да :)
Reply
( ... )
Reply
Reply
TXIS используется для interrupt mode, записью 1 можно начать цикл передачи
TXE для поллинга
Reply
Reply
Reply
Reply
Leave a comment