Перейти к содержанию
    

kilkennycat

Участник
  • Постов

    7
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о kilkennycat

  • День рождения 13.01.1973

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  1. https://mipt.ru/drec/upload/73e/vorobushkov...arpgkpldnzz.pdf - может, поможет, куда "копать". http://www.awrcorp.com/ru - симуляторы, где можно посмотреть, как все будет http://caxapa.ru/lib/emc_immunity.html - эту статью перечитываю, когда собираюсь что-нить защищенное разводить. Просто и доступно.
  2. Суть: Имеем кучу дефайнов, вида: #define a 0x01 #define b 0x05 #define c 0x0A Когда их мало, не так страшно. А вот много - уже не запомнить. Но если пойти таким путем: struct { unsigned char a; /* help */ unsigned char b; unsigned char c; } uuu = {0x01,0x05,0x0A} то далее можно использовать в программе uuu.a, причем, установка точки после uuu вызывает список всех элементов, со справкой (ежели справка есть). Удобно. Очень. Но совершенно расточительно по ресурсам, ибо вся структура сохраняется как константы, и дальнейшее ее использование - вызов. Enum тоже позволяет после точки вызвать список всех элементов: typedef enum { a = 0x01, b = 0x05, c = 0x0A } uuu; но использование в дальнейшем uuu.a среда позволяет, а компилятор - нет. Вот и вопрос: возможно ли в MPLAB X XC8 что такое сделать, что совместит удобство разработки как со структурами (то есть вызов точкой списка элементов) с функционалом дефайнов (то есть с подстановкой значений)? нашел небольшое решение: структуру объявить константой. В этом случае код становится несколько меньше, озу не тратится.
  3. Спасибо за ответы. Воспользуюсь вторым, так как: не люблю тратить время на большое количество форумов; данный форум более симпатичен, чем easyelectronics.ru.
  4. Если что-то сделал, возможно могущее и другим пригодиться, то куда выложить? И хотелось бы развернутый ответ - алгоритм - туда, код - туда, софт - туда... впрочем, по софту - это ясно, а вот к примеру накорякал я на днях связь между оптическим датчиком мыши и pic18, отлаженно, обдуманно и повторяемо. Для профи ценности, конечно, не имеет, для начинающего - вполне...
  5. Я ставлю резистор по входу согласно рекомендациям помехозащищенности, т.е. если расстояние достаточно велико, с целью же защиты от ошибки на этапе разработки - никогда. Ее вероятность достаточно низка и вполне укладывается в накладные расходы.
  6. Спасибо за ответ. Просто мне казалось, что логика типа 0 - это ноль, все что больше - 1.
  7. Приветствую! потребовалось перебрать байт по-битово, отправляя на бит порта. написал в теле цикла: if (a &(1<<i)) // a - перебираемый байт, i - счетчик SDIOdata = 1; else SDIOdata = 0; работает, но... как программисту неконтроллеров, сразу захотелось оптимизации и результат: SDIOdata = (a &(1<<i)); не работает. шел дальше: SDIOdata = ((a &(1<<i)) != 0); работает. эадумался, присвоил биту порта 0х80 и 0х81 - в первом случае прилетает на ногу порта 0, во втором 1 в итоге: SDIOdata = (a>>i); и вопрос: если я устанавливаю бит порта числом более 1, правильно ли я понимаю, что бит порта примет значение младшего бита этого числа? Это общая практика, или особенность компилятора С18?
×
×
  • Создать...