Проблема с определениями MOSI, MISO и SCK

Rogerclark
Пн, 02 мая 2016 г., 7:00 утра
Ребята,

При использовании библиотеки Adafruit Max31855 (для термопалей) я столкнулся с проблемой с тем, как номера PIN -код для MOSI, MISO и SCK определены в Libmaple, что противоречит их использованию в библиотеке Adafruit.

Суть этого заключается в том, что на ядрах AVR и SAM MISO является глобальной переменной E.глин.

static const uint8_t miso;

Однако в Libmaple Miso определяется с помощью #define, я.e препроцессорный макрос.

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

Я думаю, что лучшее решение - следовать тому, что делают ядра AVR и SAM, и иметь для них VAR (хотя он будет тратить немного оперативной памяти)

Может быть способ исправить это и все еще использовать #Define, но в конечном итоге я думаю, что лучше всего делать то, что делает команда Arduino...

Следовательно, я предлагаю прокомментировать эти строки в протирке.час

void loop() { while(1) { //Set Pin0 (HIGH) GPIOB->regs->BSRR = 0b0000000000000001; //lower 16 bits //Clear Pin0 (LOW) GPIOB->regs->BRR = 0b0000000000000001; //lower 16 bits //Set Pin0 (HIGH) GPIOB->regs->BSRR = 0b0000000000000001; //lower 16 bits //Clear Pin0 (LOW) GPIOB->regs->BRR = 0b0000000000000001; //lower 16 bits } }

Werecatf
Пн, 2 мая 2016 г., 7:08
Это также то, как ESP8266 - реализация определяет MISO, MOSI и SCK. Тем не менее, они также делают это для i2c - булавок. Что -нибудь сломалось, если бы вы сделали это для i2c - тоже? Разве не было бы хорошей идеей следовать общим соглашениям, даже если мы не знаем о каких -либо проблемах с текущим подходом сейчас? Я не знаю, я здесь не отвечаю или что -то в этом роде, но лично я, вероятно, все еще выберет общую конвенцию в этом случае просто ради совместимости.

Rogerclark
Пн, 02 мая 2016 г., 7:22 утра
Я думаю, что есть определения для SCL и SDA в Wire Lib. Поэтому мне придется удалить их, но я думаю, лучше быть последовательным.

Итак, после того, как я исправил это для SPI, я исправлю его для i2c

КСТАТИ.

Вставить VAR в вариант.H действительно работает.

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

Но теперь, когда я выбрал правильную плату, похоже, что моя программа испытаний на термопару снова работает.

Так что я просто проверю его с помощью доски ILI9341 (и LIBS), и если это нормально, я изменю все варианты одинаково

ZMEMW16
Пн, 02 мая 2016 г. 12:01
Некоторые я видел пост о определении I2Cand, почти уверен, что ответил на эту ветку.

http: // www.STM32duino.com/viewtopic.PHP ... i2c+определить

Обсуждает, должен ли пользователь редактировать или даже если пользователь должен редактировать основные файлы e.глин. Проволока.H, чтобы сделать эскиз, в частности, «SDA» & 'Scl'

Стивен

Mrburnette
Пн, 02 мая 2016 г., 12:48
У меня есть мнение, как обычно, но я не могу вспомнить, что это такое :ржу не могу:

Но...
На протяжении более 18 месяцев мы пытались повторить добро и зло от Arduino Way of Thing. Небеса или ад, я подозреваю, что мы должны постоянно продолжать по этой дороге для F1XX. Для материалов F4 гуру этой платформы, вероятно, должны прозвучить.

Луча

Martinayotte
Пн, 2 мая 2016 г., 13:19
Mrburnette написал:Для материалов F4 гуру этой платформы, вероятно, должны прозвучить.

Rogerclark
Пн, 2 мая 2016 г., 21:21
Проблема с I2C заключалась в том, что SCL и SDA определяются как обычные контакты по умолчанию для i2C, но определения не используются в конструкторе по умолчанию, поскольку конструктор напрямую использует номера PIN.

Таким образом, эта конкретная аномалия может быть легко решена в конструкторе, изменив номер PIN -кода на определенное имя.


С определением SPI, я не вижу никакой проблемы с использованием статических констановки, потому что они, надеюсь, будут составлены во флэш -.

Единственным недостатком, который я могу видеть, может быть, что доступ к этим VAR может быть немного медленнее, чем при использовании #Defines, но на практике они не используются очень часто или во времени критических мест, а также с магией современных компиляторов , не может быть никакой разницы вообще.

Рик Кимбалл
Пн, 2 мая 2016 г., 21:26
static const uint8_t переменные должны оказаться в .раздел Родата или превратил непосредственно в непосредственную постоянную. Они не должны оказаться в баране. Преимущество использования статического const uint8_t против определения состоит в том, что вы сможете увидеть значение в GDB.

Rogerclark
Пн, 2 мая 2016 г., 21:39
Рик,

Спасибо. Я надеялся, что они не окажутся в баране

На данный момент я поместил новые VARS в вариант.H, но другие возможные места - это доска.h, но ни один, если бы тогда не имел в них, раньше.
доска.H имеет много определений и вариантов.H был довольно пуст и из того, что я помню, вариант.H был добавлен для совместимости с более поздними версиями IDE.

Может быть возможно переместить все содержимое платы.H в вариант.H и удалите один файл (как кажется, дублирование того, какой вариант.H делает с какой доской.H делает), но я не уверен, что еще нужно изменить

Редактировать

Похоже, я могу переместить все определено с платы.H в вариант.H и вещи все еще компилируются в порядке.

Но я сделаю еще несколько тестирования, чтобы подтвердить.

Rogerclark
Вторник 3 мая 2016 г. 10:27
Я сделал первый набор изменений, чтобы все варианты объявили
#include #include #include Adafruit_SSD1306 display; void setup() { pinMode(LED_BUILTIN, OUTPUT); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //this line is sufficient to trigger described effect display.display(); } void loop() { digitalWrite(LED_BUILTIN, LOW); delay(100); digitalWrite(LED_BUILTIN, HIGH); delay(500); }

Стевех
Ср. 04 мая 2016 г., 6:31
Ясность! Хороший!

Я столкнулся с доской о известности, которая называлась SPI Signals Dout, DIN. В отношении какого конца ссылки?

Чтобы сделать это однозначным, термины были установлены Моси и Мисо.

Концзакп
Солнце 17 июля 2016 г. 13:54
У меня проблема с этими определениями. Я получаю ошибку компиляции для библиотечного сенсорного экрана STM, как описано здесь -> http: // www.STM32duino.com/viewtopic.PHP ... 019#P16019

Не могли бы вы проверить это ?

Martinayotte
Солнце 17 июля 2016 г. 14:28
Проблема, описанная в другом потоке, не связана с определениями терминов, описанных здесь.
Mosi = Master Out, раб в
Мисо = Мастер в, раб.

Серийная скорость USB ?