- Столько полезной информации...2023-07-03
-
- Поздравляю! Спасибо! - Nikolay_Po(10.08.2023 18:07)
- Збсь! Гемор со статусами, это не к И2Ц, а к индикатору? mse homjak(57 знак., 09.08.2023 17:41)
- запись байта адреса слейва на шину синхронно, запись буфера команд или данных через dmа асинхронно. закрытие обмена в обработчике окончания передачи dma. klen(320 знак., 10.08.2023 09:40)
- Да, похоже мне на этот камушек смотреть пока нестоит... - Cкpипaч(09.08.2023 10:21)
- Пробел ((( - Kpoк(11.08.2023 17:49)
- не стоит делать такой пессимистичный вывод. пока что я пропахал - оказалось лишь особенностью. в i2c+dma я уперся рогом но проломил стенку. причины проблем три - я периодически мыслю шаблонно(главный косяк), второе - документация так себе, некоторые критические вещи даже не упомянуты, и наконец - примеры разработчика - они тупо нерабочие некоторые. на данный момент i2c я заставил работать как я хочу. я думаю лучше вам начинать пробывать зарание. - klen(09.08.2023 15:09)
- может, применить софтварное решение, а встроенный модуль пока не
использовать? - =L.A.=(07.08.2023 08:17)
- прекрасный тост! лучше я микросхему поменяю. сколько себя помню ни
одной реализации i2c неьыло без говнеца. не иначе как это заговор!
зачем ? - klen(07.08.2023 10:42)
- В stm32g0* модуль i2c нареканий не вызвал. Вообще в серии G перефирия поудачнее сделана. - 3m_в_oтпycкe(07.08.2023 14:24, )
- Затем чтобы не отчислять филипсу наверное - NAUT_home(07.08.2023 12:19, )
- Если называется I2C(tm), то отчислять придёцца. И пох, что не
работает. А если называется TWI, например, то хер там, дажэ если
работает. - mse homjak(07.08.2023 12:21)
- таже байда с SPI / Microwire - Alex68(07.08.2023 13:58)
- Про Microware в принципе понятно (NSC -> TI), а вот кому за
SPI башляют? Он же вроде как "свободный" интерфейс. - reZident(07.08.2023 14:58)
- моторола родитель. роялти вроде нет. но копирайт наверное есть. - Alex68(07.08.2023 15:00)
- Про Microware в принципе понятно (NSC -> TI), а вот кому за
SPI башляют? Он же вроде как "свободный" интерфейс. - reZident(07.08.2023 14:58)
- таже байда с SPI / Microwire - Alex68(07.08.2023 13:58)
- Если называется I2C(tm), то отчислять придёцца. И пох, что не
работает. А если называется TWI, например, то хер там, дажэ если
работает. - mse homjak(07.08.2023 12:21)
- я всю жизнь в 8-битниках от Зилог делал ногодрыгом (несмотря на то,
что в Z8Encore был уже аппаратный I2C). Впервые применил аппаратный
в STM32. Вот уже 7 лет на знаю забот. Может потому, что использую
только для ЕЕПРОМ? - Лaгyнoв(07.08.2023 11:32)
- Скорее всего - именно поэтому. В i2c слишком уж много краевых случаев. - LightElf(07.08.2023 15:27)
- Применял встроенный I2C модуль в PICах. Каких-либо удобств по
сравнению с софтварным решением не заметил. Может, я плохо искал? - =L.A.=(07.08.2023 10:52)
- и как использовать dma? кто биты сдвигать будет? - klen(07.08.2023 10:53)
- У вас такая скорость обмена по i2c, что без DMA никак? - LightElf(07.08.2023 15:22)
- нет, у меня не скорость, уменя фреймбуфер экрана весь обновляется с
частотой 100герц. двигать биты и писать на ноги это не работа
процессора. - klen(07.08.2023 19:53)
- Ну такое оно, интерфейс i2c. Редко кому удаётся его без глюков сделать. - LightElf(07.08.2023 21:24)
- нет, у меня не скорость, уменя фреймбуфер экрана весь обновляется с
частотой 100герц. двигать биты и писать на ноги это не работа
процессора. - klen(07.08.2023 19:53)
- У вас такая скорость обмена по i2c, что без DMA никак? - LightElf(07.08.2023 15:22)
- и как использовать dma? кто биты сдвигать будет? - klen(07.08.2023 10:53)
- прекрасный тост! лучше я микросхему поменяю. сколько себя помню ни
одной реализации i2c неьыло без говнеца. не иначе как это заговор!
зачем ? - klen(07.08.2023 10:42)
- Запускал I2C на CH32F207 - с костылем, но работает. Модуль I2C по
даташиту почти идентичен с CH32V003. Могу скинуть то, на чем
остановился. - AlexG(07.08.2023 06:59)
- да. интересно. в чем суть костыля? - klen(07.08.2023 10:42)
- Вариант, на котором я остановился, в приложенном архиве. Костыль был в том, что для корректной работы DMA мне пришлось сбрасывать модуль I2C и настраивать заново перед передачей каждого пакета. Сейчас вызов костыля в коде закоментирован, похоже он оказался не так уж нужен. Запустить и проверить сейчас не могу - ушел в отпуск, а плата осталась на работе. AlexG(1 знак., 07.08.2023 11:16, ссылка)
- да. интересно. в чем суть костыля? - klen(07.08.2023 10:42)
- Я не шатал ch32v003, но вот какая инфа насчет отладочный интерфейс должен уметь читать значения регистров но
"скрытно". К примеру у STM32 нет никакого "скрытного" чтения регистров.
Отладочный модуль сидит на тех же шинах что и процессорное ARM
ядро, флаг регистра периферала успешно прочитать может и он. Вместо
ARM ядра. Поэтому одна из скрытых волчьих ям на STM32 - это то что
просмотр регистров перифералов при отладке изменяет поведение
отлаживаемой программы. - RxTx(07.08.2023 01:31)
- на avr тоже самое. прочитал эмулятором регистр уарта и всё - битик
готовности сбросился. программа не увидит оного. - Alex68(07.08.2023 01:45)
- и как к этому принято относится? этож садомия в явном виде. - klen(07.08.2023 10:44)
- а как принято относится к дождю, урагану, цунами или трясению
Земли? "на всё воля твоя. о, Великий Будда!" - Alex68(07.08.2023 13:57)
- Грета несогласная. Дожди и ураганы - от мерзких людишек. Нынче так. SciFi(1 знак., 07.08.2023 14:03, картинка)
- Ну а как вы физически себе представляете получить содержимое
регистра, не прочитав? а прочитали, значит сбросили. Никогда нельзя
отрываться от реальной физики процессов, уходя в "абсракции".
Является ли это багом? разумеется нет, это естественное поведение
железа, а хранить для вас ещё одну копию всех регистров, чтобы вы
могли их невозбранно почитать, дорогое удовольствие. - Ralex(07.08.2023 11:15)
- вы даже на Ватсона не тяните... элементарно - если периферийный
модуль имеет общий интерфейс управления и для CPU и для отладочного
модуля - в данном случае адреса на шине apb1 и R/W операции имеют
побочные эффекты кроме знанчений аргуменов операций, ТО - от модуля
TPI/DWT/etc(всех отладочных) - тянется сигнал что это отладочное
обращение по шине!!! и модуль должен выдать или записать свой стейт
без побочных эффектов (по крайней мере выдать его ). вот так это
делается. - klen(07.08.2023 12:39)
- Да не, просто при создании периферии выводить сигнальные биты
вместе с другими битами - но без побочных эффектов. А для сброса
использовать чтение из выделенного специального регистра, по одному
регистру на бит. Не бог весть какой перерасход адресов. - =AlexD=(07.08.2023 14:02)
- Лучче просто не сбрасывать биты по чтению. Кому надо - сбросит по
записи. - LightElf(07.08.2023 15:30)
- пожалуй соглашусь. регистр - как бы RO, то есть читай сколько хош и
ничё не изменится. а если записать в него что угодно, то есть
просто сделать WR по этому адресу, то бит или битики сбрасываются
автоматически. (что именно записать не имеет значения, важен лишь
факт обращения на запись) - Alex68(07.08.2023 16:21)
- Очень удобно и правильно, когда флаги сбрасываются записью в них единички. Исключаются всякие состязания. Печально, что этот подход не используется системно. В одном модуле так, в другом сброс записью нуля, в третьем - чтением, в четвёртом - приседаниями с бубном. - LightElf(09.08.2023 13:22)
- Осталось примирить этот подход с DMA. - SciFi(07.08.2023 16:22)
- Никаких проблем. - LightElf(11.08.2023 22:03)
- "тут играем, тут не играем, тут рыбу заворачивали" - Alex68(07.08.2023 16:30)
- пожалуй соглашусь. регистр - как бы RO, то есть читай сколько хош и
ничё не изменится. а если записать в него что угодно, то есть
просто сделать WR по этому адресу, то бит или битики сбрасываются
автоматически. (что именно записать не имеет значения, важен лишь
факт обращения на запись) - Alex68(07.08.2023 16:21)
- Лучче просто не сбрасывать биты по чтению. Кому надо - сбросит по
записи. - LightElf(07.08.2023 15:30)
- "так это ж делать нада. а потом еще и верифицировать. а потом в кремнии пробовать. ну его..." - Alex68(07.08.2023 13:53)
- Да не, просто при создании периферии выводить сигнальные биты
вместе с другими битами - но без побочных эффектов. А для сброса
использовать чтение из выделенного специального регистра, по одному
регистру на бит. Не бог весть какой перерасход адресов. - =AlexD=(07.08.2023 14:02)
- Да ладно. Это косяк, очевидно же. Неудобство отладки. И причины
понятны: либо им пофиг, либо лень адаптировать периферию под
удобную отладку. Копия регистров - г-но вопрос. Самое дорогое там -
разработка. - SciFi(07.08.2023 11:28)
- Я думаю что серьезных мешающих причин три или около того: 1я это
следование архитектуре ARM, в которой они должны написать
Verilog-код периферала отвечающий требованиям шин ARM. ARM не
заложили никаких обходных шин и спецификаций на этот счет для
debug-модуля. Является ли это проблемой даже непонятно, потому что
в том что debug-модуль "видит" внутренний мир в точности также как
его видят все остальные можно найти свои плюсы хотя бы с точки
зрения упрощения проектирования RxTx(699 знак., 07.08.2023 12:17)
- у меня и было и есть множество аппаратных отладчиков-эмуляторов. и почти во всех при чтении чего-то статусного битики сбрасываются. и в доках про то написано. например читать регистры всяких таймеров отладчиком очень нежелательно. предлагается читать их в программе, записывать значения куда-то во временный регистр\ячейку памяти или еще куда-то, и уж затем это значение и глядеть отладчиком. - Alex68(07.08.2023 12:28)
- Зачем придумывать миллион оправданий? Я и так накидал достаточно:
1) им пофиг, 2) им лень. Тот, кто не хочет, ищет оправдания, а тот,
кто хочет - ищет возможности. Впрочем, я не жалуюсь, при отладке
такие чудеса бывают, что эта штука просто мельчайшая мелочь. - SciFi(07.08.2023 12:22)
- +100500. я полностью согласен - мир катится в говно, главное стало
уже даже не бабки, а бабки побыстрее, поэтому косячныйй продукт
занимает рынок первым и более дешевым. прорабатывать материал
вдумчиво не выгодно - ты неудачник, ты в пролете. пользовать
матерится? да хер на него - как жрал так и будет жрать говно. - klen(07.08.2023 12:47)
- Я хоть и пессимист, но не поддержу. Да, пару сотен лет назад
мастер-одиночка мог полжизни работать и создать совершенство,
которое было бы востребовано. Да, сегодня это невозможно, потому
что когда мастер закончит, его совершенство будет никому не нужно.
Впрочем, никто не мешает вам создавать совершенство. Кто-то
кораблики в бутылках клеит. Наверняка такие мастера и сегодня есть,
просто о них мало кто знает, потому что они никому не нужны. - SciFi(07.08.2023 12:51)
- не поддержите что? факт на миру что в моем тезисе озвучен. фактам
неважно мнение субъекта. или Вы не согласны что пользователь будет
жрать? будет! - он такой. ленивый и бестолковый. он не хочет
боротся - это трудно и опасно. поэтму будет терпеть и жрать. - klen(07.08.2023 12:56)
- это просто мизантропия, техника тут ни при чём :-) - SciFi(07.08.2023 13:00)
- она есть часть общественного тела. мизантропия сложное слово для
меня - выражайтесь проще. я в деревне вырос - и плуг тягал вместо
лошади. - klen(07.08.2023 13:03)
- Ну так и юзвери есть часть общественного тела. Такшта всё
уравновешивается :-) - SciFi(07.08.2023 13:05)
- я не пессимист но... перспектива печальна - сделать хорошо - жизни и денег нехватит, сделать плохо - внутренне не готов тратит жизнь на такое. как нибудь выкручусь - это всего лишь задача посланная вседержителдем, а неисполнимых задач не посыется - начальник не дурак - он тренер на грани фола. естественны отбор - klen(07.08.2023 13:08)
- Ну так и юзвери есть часть общественного тела. Такшта всё
уравновешивается :-) - SciFi(07.08.2023 13:05)
- она есть часть общественного тела. мизантропия сложное слово для
меня - выражайтесь проще. я в деревне вырос - и плуг тягал вместо
лошади. - klen(07.08.2023 13:03)
- это просто мизантропия, техника тут ни при чём :-) - SciFi(07.08.2023 13:00)
- "о них мало кто знает, потому что они никому не нужны." Надо бы
согласовать числительные. - Kpoк(07.08.2023 12:55)
- Деление на ноль :-) - SciFi(07.08.2023 12:56)
- делить на ноль можно. но не всемъ - Alex68(07.08.2023 13:55)
- Делить на нуль можно только нуль. - =AlexD=(07.08.2023 14:04)
- делить на ноль можно что угодно, вот только потом нужно хорошо понимать что делать с результатом. а то он могёт быть слабопредсказуемымъ. - Alex68(07.08.2023 14:48)
- делить так себе затея. одинаково херово и в жизни и в алгоритмах.
лучше прибавлять и приумножать. - klen(07.08.2023 14:26)
- После того как приумножили нужно на всех поделить, иначе никак ;-) - =AlexD=(07.08.2023 14:38)
- - Милый, тебе не кажется, что миллион лучше делить на двоих, чем на троих? - Лучше вообще не делить! - Неужели ты хочешь подарить своей Мэгги весь миллион? (из к/ф Дорогой мальчик) - Kpoк(07.08.2023 15:14)
- После того как приумножили нужно на всех поделить, иначе никак ;-) - =AlexD=(07.08.2023 14:38)
- Делить на нуль можно только нуль. - =AlexD=(07.08.2023 14:04)
- предлагаю вариант: "о них мало кто знает, потому что они мало кому
нужны" (или никто не знает - никому не нужны) - Kpoк(07.08.2023 13:18)
- есть еще - ты суслика видишь? нет? а он есть! - klen(07.08.2023 14:12)
- не вам ли знать что как раз деление на ноль, сингулярности и приводят к нарушению баланса во вселенной и как следствие движение материи. вот эти единицы людей из миллионов стада и производят это деление и дают функцию Дирака. это надежда и спасение. иначе все свиньи утопятся в море уходя в него строем в ногу. - klen(07.08.2023 12:59)
- делить на ноль можно. но не всемъ - Alex68(07.08.2023 13:55)
- Деление на ноль :-) - SciFi(07.08.2023 12:56)
- не поддержите что? факт на миру что в моем тезисе озвучен. фактам
неважно мнение субъекта. или Вы не согласны что пользователь будет
жрать? будет! - он такой. ленивый и бестолковый. он не хочет
боротся - это трудно и опасно. поэтму будет терпеть и жрать. - klen(07.08.2023 12:56)
- Я хоть и пессимист, но не поддержу. Да, пару сотен лет назад
мастер-одиночка мог полжизни работать и создать совершенство,
которое было бы востребовано. Да, сегодня это невозможно, потому
что когда мастер закончит, его совершенство будет никому не нужно.
Впрочем, никто не мешает вам создавать совершенство. Кто-то
кораблики в бутылках клеит. Наверняка такие мастера и сегодня есть,
просто о них мало кто знает, потому что они никому не нужны. - SciFi(07.08.2023 12:51)
- +100500. я полностью согласен - мир катится в говно, главное стало
уже даже не бабки, а бабки побыстрее, поэтому косячныйй продукт
занимает рынок первым и более дешевым. прорабатывать материал
вдумчиво не выгодно - ты неудачник, ты в пролете. пользовать
матерится? да хер на него - как жрал так и будет жрать говно. - klen(07.08.2023 12:47)
- Вы не забывате речь идёт о CH32, по цене рупь пучок. Там и на
кремнии вовсю экономят. Ну и я не согласен что это баг, вам копию
регистров никто не обещал, для того чтобы вам удобненько было
говнокодить "F9 - зависло - смыть-повторить". - Ralex(07.08.2023 11:47)
- Кстати, откуда взялась "копия регистров"? Не нужна она. Просто
сделать так, чтобы чтение регистров не меняло состояние периферии.
Менять его явным образом путём записи в регистры. Правда, там будут
свои заморочки с DMA, но вполне решаемые. - SciFi(07.08.2023 11:56)
- Да нет никаких проМблеММ. У АВРа всё точно так-жэ и все прекрасно
отлаживались. - mse homjak(07.08.2023 12:14)
- может и так - но я пока не понимаю что я должен деоать в коде -
чтоб было также как с отладчиком но без него. - klen(07.08.2023 12:48)
- Например, устанавливать интересный флаг ручками. Оппа, прерывание,
устанавливаем регистр данных чем-то и идём дальше. Вышли из
прерывания, ручками флаг, опять туду, опять данные опять идём
дальшэ. Так какой-нить протокол отлаживаю. Или ставить брякпойнт в
интересную точку. В общем, я не стесняюсь в срецтвах, когда чо-нить
отлаживаю. Внаглую меняю адреса-данные и флаги. Любой ЖТАХ это
позволяет. - mse homjak(07.08.2023 12:57)
- ага щазззз - регистры RO, устанавливаются аппаратурой или
сбрасываются при чтении. можно хоть обустанавливаться.. должен быть
какой путь объехать все это - я просто еще не разобрался и
подсказать некому. - klen(07.08.2023 13:02)
- Тут ХЗ. Но, помница, TWI у АВРа я отлаживал через самописный
монитор, просто читая и записывая байтики в порты. Причом, на живой
ЕЕПРОМке. И датафлэшь АТ45, ещо с двумя буферами. В те времена с
ЖТАХами было трудненько. Ну то АВР, конешно. А так, походу, только
брякпойнты после ветвлений или что там получается при чтении. Можно
ещо сперва считывать флаговый регистр и запоминать его. Собсно,
считывание и происходит, а потом кладутся маски. - mse homjak(07.08.2023 13:11)
- я уже и так и сяк, напомню, проблема выглядит на входе так - при
записи байта в регистр данных, бит txe не всегда после
устанавливается. как так может быть. сегодня буду лог анализатором
электричество смотреть в двух проводах. может байт и не высылается
вовсе изза какойто другой причины? - klen(07.08.2023 14:10)
- Ну, txe, если я думаю про СН32Ф/В, он полюбому будет торчать в "1",
если буфер СПИ на запись пустой. Пусть отлаччик хоть обчитается
весь. Я вот не упомню, чтобы в СН32 были флаги прерываний, которые
автоматически падают по чтению-заходу в прерывание, хотя и не
исключаю. - mse homjak(07.08.2023 14:23)
- не spi а i2c, не флаги прерываний, а биты состояния i2c
state-машины. - klen(07.08.2023 14:28)
- А-а... У СПИ тожэ ТХЕ флаг есть. - mse homjak(07.08.2023 14:31)
- не spi а i2c, не флаги прерываний, а биты состояния i2c
state-машины. - klen(07.08.2023 14:28)
- Ну, txe, если я думаю про СН32Ф/В, он полюбому будет торчать в "1",
если буфер СПИ на запись пустой. Пусть отлаччик хоть обчитается
весь. Я вот не упомню, чтобы в СН32 были флаги прерываний, которые
автоматически падают по чтению-заходу в прерывание, хотя и не
исключаю. - mse homjak(07.08.2023 14:23)
- я уже и так и сяк, напомню, проблема выглядит на входе так - при
записи байта в регистр данных, бит txe не всегда после
устанавливается. как так может быть. сегодня буду лог анализатором
электричество смотреть в двух проводах. может байт и не высылается
вовсе изза какойто другой причины? - klen(07.08.2023 14:10)
- Тут ХЗ. Но, помница, TWI у АВРа я отлаживал через самописный
монитор, просто читая и записывая байтики в порты. Причом, на живой
ЕЕПРОМке. И датафлэшь АТ45, ещо с двумя буферами. В те времена с
ЖТАХами было трудненько. Ну то АВР, конешно. А так, походу, только
брякпойнты после ветвлений или что там получается при чтении. Можно
ещо сперва считывать флаговый регистр и запоминать его. Собсно,
считывание и происходит, а потом кладутся маски. - mse homjak(07.08.2023 13:11)
- ага щазззз - регистры RO, устанавливаются аппаратурой или
сбрасываются при чтении. можно хоть обустанавливаться.. должен быть
какой путь объехать все это - я просто еще не разобрался и
подсказать некому. - klen(07.08.2023 13:02)
- Например, устанавливать интересный флаг ручками. Оппа, прерывание,
устанавливаем регистр данных чем-то и идём дальше. Вышли из
прерывания, ручками флаг, опять туду, опять данные опять идём
дальшэ. Так какой-нить протокол отлаживаю. Или ставить брякпойнт в
интересную точку. В общем, я не стесняюсь в срецтвах, когда чо-нить
отлаживаю. Внаглую меняю адреса-данные и флаги. Любой ЖТАХ это
позволяет. - mse homjak(07.08.2023 12:57)
- может и так - но я пока не понимаю что я должен деоать в коде -
чтоб было также как с отладчиком но без него. - klen(07.08.2023 12:48)
- Да нет никаких проМблеММ. У АВРа всё точно так-жэ и все прекрасно
отлаживались. - mse homjak(07.08.2023 12:14)
- Кстати, откуда взялась "копия регистров"? Не нужна она. Просто
сделать так, чтобы чтение регистров не меняло состояние периферии.
Менять его явным образом путём записи в регистры. Правда, там будут
свои заморочки с DMA, но вполне решаемые. - SciFi(07.08.2023 11:56)
- Я думаю что серьезных мешающих причин три или около того: 1я это
следование архитектуре ARM, в которой они должны написать
Verilog-код периферала отвечающий требованиям шин ARM. ARM не
заложили никаких обходных шин и спецификаций на этот счет для
debug-модуля. Является ли это проблемой даже непонятно, потому что
в том что debug-модуль "видит" внутренний мир в точности также как
его видят все остальные можно найти свои плюсы хотя бы с точки
зрения упрощения проектирования RxTx(699 знак., 07.08.2023 12:17)
- вы даже на Ватсона не тяните... элементарно - если периферийный
модуль имеет общий интерфейс управления и для CPU и для отладочного
модуля - в данном случае адреса на шине apb1 и R/W операции имеют
побочные эффекты кроме знанчений аргуменов операций, ТО - от модуля
TPI/DWT/etc(всех отладочных) - тянется сигнал что это отладочное
обращение по шине!!! и модуль должен выдать или записать свой стейт
без побочных эффектов (по крайней мере выдать его ). вот так это
делается. - klen(07.08.2023 12:39)
- а как принято относится к дождю, урагану, цунами или трясению
Земли? "на всё воля твоя. о, Великий Будда!" - Alex68(07.08.2023 13:57)
- и как к этому принято относится? этож садомия в явном виде. - klen(07.08.2023 10:44)
- +1 - LightElf(07.08.2023 01:39)
- на avr тоже самое. прочитал эмулятором регистр уарта и всё - битик
готовности сбросился. программа не увидит оного. - Alex68(07.08.2023 01:45)