ARV

Members
  • Content count

    2030
  • Joined

  • Last visited

  • Days Won

    8

ARV last won the day on April 19

ARV had the most liked content!

Community Reputation

624 Очень хороший

2 Followers

Информация

  • Пол
    Мужчина
  • Город
    Новочеркасск

Электроника

  • Стаж в электронике
    Более 20 лет
  • Сфера радиоэлектроники
    Микроконтроллеры, цифровая электроника

Recent Profile Visitors

  1. Вся беда этой темы в том, что пруфы рекурсивны: для доказательств первой терии придумана вторая, для доказательств второй - третья, а третья незыблемо подтверждает существование первой. Так что пруфами он вас завалит, не переживайте, у него "статей" и "книг" на все случаи жизни заготовлено. Только от таких пруфов толку ноль.
  2. Давайте как-то отделять мух от котлет. Слово "должен" неприменимо ни к компилятору, ни к анализатору, ни к чему бы то нибыло еще, кроме программиста. Много статических анализаторов в знаете, которые применяются в среде любителе МК? По-моему, не стоит притягивать за уши все, что кажется правильным и красивым. Опять обобщаете? Все мои программы делают то, что я задумал - этого вам достаточно? И среди них крайне мало таких, чтобы умещались "на одну страницу". Опять... Кому надо? Программисту-профессионалу, у которого в KPI указано, что отсутствие warning в компиляции дает плюс в карму - да, надо. А МНЕ, например, надо ли избавляться от всех-всех-всех warning-ов? Например, от самого ндоедливого "в операторе switch не все комбинации переменной отслеживаются" (т.е. про отсутствие метки default)? Ну и вообще говоря, ошибок в неверном использовании макросов нет от слова вообще...
  3. Да, макросы повышают быстродействие, ведь требования к SPI обычно "чем быстрее, тем лучше". А do-while - это кошерная перестраховка на всякий случай. Во многих случаях можно и без этого, и данный случай как раз такой, просто делаю по привычке. Обычно do-while актуально для макросов, состоящих из нескольких операторов, и в данном случае не дает никаких преимуществ, т.к. оператор один.
  4. потому что данные data и mask 16-битные, а функцию вы определили с 8-битным параметром. и вообще, я рассчитывал, что SDO будет макросом, которому в общем-то плевать на разрядность... Такое вообще нельзя реализовать на языке Си - это вы насмотрелись "кода" на недосишном языке CVAVR. Если сильно-сильно хочется именно подобной записи, то придется попариться со структурами и указателями... Но я вам не буду этого советовать - у вас и так проблем хватает. А вот это самая что ни на есть кошерная запись для Си. Именно так и правильно манипулировать битами. #define SDO(x) do{ if(x) P1OUT |= BIT5; else P1OUT &= ~BIT5; } while(0) #define SDI() (P1IN & BIT7) #define SCK(x) do{ if(x) P1OUT |= BIT6; else P1OUT &= ~BIT6; } while(0) Как-то так всего-навсего... Я не знаком с вашей платформой, но для SDI по-моему нельзя использовать порт вывода P1OUT... я написал P1IN, хотя не уверен, что это правильно...
  5. Подбросим камень вверх - он упадет. Почему? Такова его природа, ведь если подбросить вверх птицу - она улетит. Вывод: все вокруг ведет себя согласно его природе. Как вам такое утверждение и доказательство?
  6. Ага. Вслед за приходом озарения обычно приезжают санитары или менты - в зависимости от источника прихода.
  7. Думают, думают. Сила тока имеет в числе прочих и буквальный физический смысл в том числе и вследствии электромагнетизма: притягивание-отталкивание проводников с током, применяемое в амперметрах. А вот уметь мыслить совершенно новыми категориями (причем сразу множеством таких категорий) могут не только лишь все, мало кто может. Но их обычно лечат, и потом они могут занимать должности без большой ответственности, чем помогают обществу.
  8. Фраза неверна. Правильная фразадолжна быть такой: "вы не умеете мыслить так, как я". И слава богу, что большинство здорОво.
  9. Так и с темной материей в таком случае все нормально - опыты не проводились В области неизученного все терии равны более-менее
  10. Вообще говоря, программный SPI настолько элементарен, что просто не заслуживает какого-либо обсуждения. // маска последнего выводимого бита #define LAST_BIT (1<<10) // макрос SDI() переделать так, чтобы он возвращал bool-уровень на пине uint16_t spi_io(uint16_t data){ uint16_t result = 0; for(uint16_t mask = 1; mask <= LAST_BIT; mask <<= 1){ SDO(data & mask); SCL(1); result |= SDI() ? mask : 0; SCL(0); } return result; } Вам лишь надо уточнить, в том ли направлении в моём коде идет сдвиг и в нужном ли режиме устанавливается SCK.