Easyelectronics.ru

Электроника для всех
Текущее время: 26 ноя 2020, 03:42

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 20810 ]  На страницу Пред.  1 ... 820, 821, 822, 823, 824, 825, 826 ... 833  След.
Автор Сообщение
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: 13 апр 2020, 05:48 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 7069
Есть простой способ. Soft I2C.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: 13 апр 2020, 13:32 
Старожил

Зарегистрирован: 02 дек 2010, 13:52
Сообщения: 5160
Откуда: п. Борок, Ярославская область
2 u37
Ну как бы может и простой... но как бы костыль все таки. Хоть и можно сделать по прерыванию от таймера софтварьный ногодрыг, но будет джиттер, особенно когда часто обновляется дисплей (там тоже по прерыванию), и идет куча данных по UART. И вот хер знает как оно себя поведет в таких условиях.

_________________
Ёж птица гордая, пока не пнешь - не полетит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: 13 апр 2020, 13:43 
Старожил
Аватара пользователя

Зарегистрирован: 03 сен 2010, 22:46
Сообщения: 6137
Откуда: Москва
Ничего особенного не будет, мастер управляет шиной полностью, и прерывания на мастере в этот момент ни на что не повлияют. Просто клоки приостановятся на какое-то время.

Со слейвом в принципе аналогично, но нужно чтобы он придерживал клоки со своей стороны, пока занят.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: 13 апр 2020, 13:55 
Старожил

Зарегистрирован: 02 дек 2010, 13:52
Сообщения: 5160
Откуда: п. Борок, Ярославская область
2 akatenev
В моем случае МК - только мастер. Все остальные девайсы - слейвы априори.

_________________
Ёж птица гордая, пока не пнешь - не полетит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: 13 апр 2020, 14:51 
Старожил
Аватара пользователя

Зарегистрирован: 03 сен 2010, 22:46
Сообщения: 6137
Откуда: Москва
Ну тогда ты спокойно можешь сделать и программную реализацию протокола. Проблема с ней не в том, что она чувствительна к прерываниям, а скорее в том, что сама порождает их довольно много, особенно если скорости большие. Но вообще я в свое время имел много устройств с программным I2C, проблем с ними не было, даже с учетом того что это был Linux, а там вообще от реального времени далеко.

А вот программный слэйв сделать уже гораздо сложнее. Поэтому для подключения к мультимастер-слэйв шинам типа IPMB приходилось делать специальные мосты.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: 13 апр 2020, 15:15 
Старожил

Зарегистрирован: 02 дек 2010, 13:52
Сообщения: 5160
Откуда: п. Борок, Ярославская область
2 akatenev
Ну да, считай на каждый бит - прерывание. Но скорости тут не критичны. И 10 кБит/с приемлемо. Это с учетом того, что ядро МК и вся периферия тактуются частотой 60МГц.

Просто... ну оно кузяво как-то выглядит... есть аппаратный I2C, и вроде как кошерный, но почему-то с глюком. А потому сделано в итоге все ногодрыгом.

_________________
Ёж птица гордая, пока не пнешь - не полетит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: 13 апр 2020, 16:27 
Старожил

Зарегистрирован: 19 мар 2011, 05:05
Сообщения: 2975
это какой мк? и какое есть среди basic деталей у jlcpcb недорогое?
нужен can/uart/i2c/spi, кучка adc и кучка выводов, где нет проблем с одновременной работой?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: 13 апр 2020, 16:35 
Старожил
Аватара пользователя

Зарегистрирован: 03 сен 2010, 22:46
Сообщения: 6137
Откуда: Москва
https://community.nxp.com/thread/386211


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: 13 апр 2020, 18:27 
Старожил

Зарегистрирован: 02 дек 2010, 13:52
Сообщения: 5160
Откуда: п. Борок, Ярославская область
2 goreprogrammist
MK22FN1M0VLH120
Там есть CAN/UART/i2C/SPI, 16-бит SAR АЦП и кучка выводов. Помимо прочего DMA, таймеры, 1Мб флеш и 128 кб оперативы.
Про JLCPCB не знаю, т.к. мне эти МК (включая и другие из ветки Kinetis) на халяву шлет NXP. У Farnell и Mouser эти МК существенно дороже аналогичных от ST.

2 akatenev
Читал я это обсуждение. Приводимые методы не помогли, или я не правильно что-то сделал. SDK там используются еще старые, исходники на них надо еще нарыть. А причин такого поведения МК никто не описал. И baremetal кода никто не приводит.

2 all
Вот сегодня рыл errata - ничего подобного там нет. Зато расковырял код SDK-шного драйвера I2C для этого МК. И есть там какие-то непонятные мне фишки. Например прежде чем дать команду установки СТОП-состояния, производится проверка - а не установился ли стоп до этого? Есть у контроллера флаги, которые устанавливаются в 1 при возникновении на шине определенных состояний (СТАРТ, СТОП, ACK, NACK, потеря арбитража и т.п.). И некоторые из них предполагается вручную сбрасывать. Так вот судя по коду в SDK подразумевается что СТОП на шине мог как-то установиться из вне. И если он уже установлен - то нельзя его устанавливать снова.

Еще одна не понятная мне фишка. Допустим надо прочитать байт с I2C порта. Делается это примерно так:
Код:
   I2C0->C1 &= ~I2C_C1_TX_MASK; // data direction set to receive
   I2C0->C1 |= I2C_C1_TXAK_MASK; // NACK

   I2C0->S = I2C_S_IICIF_MASK;

   volatile uint8_t tmp;
   tmp = I2C0->D; // dummy read

   while (!(I2C0->S & I2C_S_IICIF_MASK)) __asm volatile ("nop");
   I2C0->S = I2C_S_IICIF_MASK;

   return(I2C0->D);

То есть сначала в регистры управления задают направление данных и NACK/ACK в конце. Далее делается чтение из регистра данных I2C чтобы инициировать передачу. И потом цикл ожидания окончания передачи. Ну и потом содержимое регистра выдается результатом функции. И логично что после NACK чтения должен следовать СТОП.

Так вот в SDK-коде СТОП вставлен сразу после ожидания флага прерывания и его ручного сброса (I2C0->S = I2C_S_IICIF_MASK;). У меня же СТОП выставляется после того, как данные получены из регистра I2C0->D, и возможно в этом и есть проблема, т.к. видимо чтение регистра провоцирует шину на выдачу SCL к устройствам и т.п. И на этом как бы отличия моего кода от SDK-шного закончены.

Сегодня попробую это все "изобразить", глядишь и заработает.

upd:
Ну да... дело было не в бобине...
Читаю Reference manual вдумчиво. Вернее все подряд, и вот прочитал про регистр I2C0->D
Show

Терь понятно почему лыжи не едут... Если направление передачи данных указано верно, и регистр будет считан - то это инициирует передачу данных. То есть если я читаю один байт и мне больше не надо, то чтобы получить данные из регистра и ничего не испортить - надо либо перевести I2C модуль в режим slave (то есть выдать СТОП) или сменить направление передачи данных на вывод.

Всем спасибо! Надеюсь это решит мои проблемы :-)

_________________
Ёж птица гордая, пока не пнешь - не полетит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: 13 апр 2020, 20:36 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 7069
"судя по коду в SDK подразумевается что СТОП на шине мог как-то установиться из вне. И если он уже установлен - то нельзя его устанавливать снова."
А я что сказал? ... (в коде прямо написал - прочитать статус перед его установкой). И про сей камень я больше названия ничего не знаю.
Правильно говорят - познание принципов исключает заучивание документации ...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: 14 апр 2020, 00:42 
Старожил

Зарегистрирован: 02 дек 2010, 13:52
Сообщения: 5160
Откуда: п. Борок, Ярославская область
2 u37
Про то, в каком регистре читать статус регистрации СТОП-состояния я не знал до сегодняшнего дня. Почему-то эти флаги спрятали в регистре I2C0->FLT - это регистр настройки т.н. glitch filter-а, который режет всякий шум на линиях I2C. В регистре I2C0->S флагов состояния шины и нету кроме BUSY... И вот поди...

Но основная проблема была в непонимании управления шиной. У AVR шиной управлять предлагается записью отдельных бит в регистр. А тут инициация обмена - это факт чтения/записи в регистр. И отсюда все глюки видимо...

_________________
Ёж птица гордая, пока не пнешь - не полетит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: 14 апр 2020, 00:51 
Старожил
Аватара пользователя

Зарегистрирован: 03 сен 2010, 22:46
Сообщения: 6137
Откуда: Москва
Ну, они хотели как лучше. Вообще, кинетисовцы мощную траву курили, когда этот чип разрабатывали. Я общался с их разработчиками несколько лет назад, впечатления странноватые. Равно как и от самого чипа, страньше только Renesas, на мой взгляд.

Впрочем, самая забористая трава была у разработчиков чипа BitFury, это точно самый странный дизайн, который я когда-либо видел.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: 14 апр 2020, 01:56 
Старожил

Зарегистрирован: 02 дек 2010, 13:52
Сообщения: 5160
Откуда: п. Борок, Ярославская область
2 akatenev
Дык их "монастырь" - их устав... Зато они крайне лояльны в плане халявы :-) Не смотря на пандемию COVID-19 завтра пойду забирать очередную партию чипов от NXP :-) Еще 15 штук МК на благо отечественной фундаментальной науки и моего хобби :-)

2 all
Переписал я сейчас блок работы с I2C с учетом приобретенных знаний. Все завелось с пол-тыка. Не виснет. Завтра буду тестировать со включенной GPS на улице :-)

Всем спасибо за советы и поддержку!

_________________
Ёж птица гордая, пока не пнешь - не полетит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: 14 апр 2020, 05:13 
Старожил

Зарегистрирован: 28 сен 2018, 00:25
Сообщения: 317
Мде. Не просто так RTFM FIRST!..
Я обычно хоть первый раз, но читаю полностью весь раздел (и аппноты) про нужную периферию просто чтобы знать где что описано и какие плюшки есть, даже то что как я думаю мне в текущей задаче не пригодится.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: 14 апр 2020, 11:39 
Старожил

Зарегистрирован: 02 дек 2010, 13:52
Сообщения: 5160
Откуда: п. Борок, Ярославская область
2 cubot
Ну это правильно. Просто "многа букаф" и "ниасилил". С аппнотами по-сложнее, т.к. они в основном ориентированы на конкретную проблему, а не просто абстрактно показывают как использовать тот или иной модуль (это я касательно Kinetis). И весь код в аппнотах рассчитан на тот или иной SDK разных версий. Если надо baremetal (а именно это мне и надо, т.к. задача научиться использовать МК "в железе") - то добро пожаловать в Reference Manual. А Ref-Man - это очень много чтива, которое уложить в голове за короткое время достаточно сложно.

_________________
Ёж птица гордая, пока не пнешь - не полетит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: 14 апр 2020, 12:23 
Старожил

Зарегистрирован: 28 сен 2018, 00:25
Сообщения: 317
VivalzarD писал(а):
2 cubot
Ну это правильно. Просто "многа букаф" и "ниасилил".

Да, есть такое. Но после нескольких таких вот инцидентов как у тебя - это проходит. )) Т.к. уже точно знаешь в каких размеров гемор это вот "многа букаф, ниасилил" выливается..
Цитата:
С аппнотами по-сложнее, т.к. они в основном ориентированы на конкретную проблему, а не просто абстрактно показывают как использовать тот или иной модуль (это я касательно Kinetis). И весь код в аппнотах рассчитан на тот или иной SDK разных версий.

ну если на сдк - то да, можно и пропустить, но гденить может и важный ньюанс быть освещен..
Цитата:
Если надо baremetal (а именно это мне и надо, т.к. задача научиться использовать МК "в железе") - то добро пожаловать в Reference Manual. А Ref-Man - это очень много чтива, которое уложить в голове за короткое время достаточно сложно.

Я обычно первый раз даже не пытаюсь все усвоить - беглое (но внимательное) ознакомление с возможностями и особенностями. Зато потом когда ковыряешься с задачей, вспоминается что что-то такое похожее уже было в другом месте, и все ключевые слова для поиска уже знаешь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: 14 апр 2020, 14:17 
Старожил

Зарегистрирован: 02 дек 2010, 13:52
Сообщения: 5160
Откуда: п. Борок, Ярославская область
2 cubot
Век живи - век учись (с)
Дорогу осилит идущий (с)
Под лежачий камень вода не течет (с)

Теперь еще немного опыта и набитых шишек добавилось :-) Не сказать чтобы это очень уж хорошо, но хуже когда и этого нету :-) Буду теперь читать Ref-man-ы вдумчиво, во всяком случае буду стараться это делать.

_________________
Ёж птица гордая, пока не пнешь - не полетит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: 14 апр 2020, 23:58 
Старожил
Аватара пользователя

Зарегистрирован: 13 дек 2010, 23:15
Сообщения: 2331
Откуда: Киев
Народ, подскажите пожалуйста.
Вот есть классическая простейшая схема развязки 2х источников питания (например батарея, сеть) с помощью 2х диодов.
Вопрос, если в одном из плечей стоит DC-DC, можно ли использовать в качестве развязки его диод? В смысле как-то так:
Изображение
Спасибо


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: 15 апр 2020, 01:15 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 7069
Если boost с диодом, а не синхронный, то - почему бы и нет. Но учтите, на Vout всегда будет напряжение, и при заблокированном rt9266.
PыSы
Если под "правой" ветвью питания понимается еще и прикручивание зарядки на "В", то учтите, что в вашей картинке приоритет имеет boost, а не "правая" ветвь питания (если boost 5V).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: 15 апр 2020, 02:02 
Старожил
Аватара пользователя

Зарегистрирован: 13 дек 2010, 23:15
Сообщения: 2331
Откуда: Киев
Спасибо, да не подумал что правая ветвь может оказаться меньше, чем питание с boost. Хотя меня больше интересует кейс, подали питание с usb, и вынули батарейку. Но мне что-то не нравится что dc-dc при этом тоже включён "со входа".
Поставлюка я ещё один шотки и не буду экспериментировать, токи все равно не большие.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: 15 апр 2020, 03:21 
Старожил

Зарегистрирован: 02 дек 2010, 13:52
Сообщения: 5160
Откуда: п. Борок, Ярославская область
Народ, снова у меня лыжи не едут...
Теперь задача с указателями в си... вернее с указателем на массив строк разной длины... блин... В общем менюшки я делаю. И сами менюшки объявлены вот так:
Код:
const char *nav_points_items[] __attribute__ ((section(".data.$RAM2"))) = {"Назад","Идти к точке","Изменить","Удалить"};
#define pm_items (sizeof(nav_points_items)/sizeof(nav_points_items[0]))

const char *nav_menu_items[] __attribute__ ((section(".data.$RAM2"))) = {"Направление","Карта","Спутники","Точки","Настройки"};
#define nm_items (sizeof(nav_menu_items)/sizeof(nav_menu_items[0]))


Вот если я напишу вот так:
Код:
sprintf(s,"%d. %s", item_num, nav_menu_items[item_num]);

то оно работает без проблем. Но мне надо как-то так хитро объявить переменную, чтобы можно было написать так:
Код:
menu = nav_menu_items;
sprintf(s,"%d. %s", item_num, menu[item_num]);

Это чтобы одной подпрограммой рисовать разные менюшки. И именно тут у меня затык. Я объявил:
Код:
char **menu;

и оно так как надо не работает...

К ночи мозг уже не кашеварит, в гугле уже кучу инфы посмотрел про массивы, указатели и строки в си, но примера под свои нужды так и не нашел. А из того что нашел - ума уже не хватает сформулировать что-то рабочее.

P.S. По сути что мне требуется - это указатель на массив указателей (каждый из которых указывает на строку). Но вот что-то оно никак не заводится... На ассемблере AVR это было существенно проще...

upd:
Пардон, разобрался сам. Все работает так как надо и объявлял я правильно:
Код:
char **menu;

Просто видимо где-то еще косяк был (не пойму только где).

_________________
Ёж птица гордая, пока не пнешь - не полетит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: 25 апр 2020, 20:48 
Здравствуйте!

Зарегистрирован: 25 апр 2020, 16:04
Сообщения: 1
есть ли mosfet , кто знает , с Rg<<100 mOhm, дело в том, что mosfet на кремнии имеет обычно встроенное сопротивление на затворе Rg или Rgi от 0.8 до 15 Ohm/ типа демфер


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: 25 апр 2020, 21:17 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 7069
Можете озвучить задачу, когда требуется "Rg<<100 mOhm"?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: 04 май 2020, 16:40 
Старожил

Зарегистрирован: 19 мар 2011, 05:05
Сообщения: 2975
смотрю на даташит fram памяти.
https://datasheet.lcsc.com/szlcsc/FUJIT ... C38647.pdf

интересуют пины hold и wp - зачем вообще плодятся эти сущности и в каких ситуациях их полезно привязывать к чипу, а не жестко сажать на землю/питание? (если правильно понял, для одного SPI на линии CS - на землю, HOLD и WP - к питанию?)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: 04 май 2020, 18:23 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4344
Откуда: г. Липецк
HOLD, возможно неудачно обозвали, это аналог OE (output enable), а WP (write protect). OE применяют при каскадировании, WP от шаловливых ручек.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 20810 ]  На страницу Пред.  1 ... 820, 821, 822, 823, 824, 825, 826 ... 833  След.


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB