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...
Следовательно, я предлагаю прокомментировать эти строки в протирке.час
При использовании библиотеки 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), и если это нормально, я изменю все варианты одинаково
Итак, после того, как я исправил это для 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'
Стивен
http: // www.STM32duino.com/viewtopic.PHP ... i2c+определить
Обсуждает, должен ли пользователь редактировать или даже если пользователь должен редактировать основные файлы e.глин. Проволока.H, чтобы сделать эскиз, в частности, «SDA» & 'Scl'
Стивен
Mrburnette
Пн, 02 мая 2016 г., 12:48
У меня есть мнение, как обычно, но я не могу вспомнить, что это такое
Но...
На протяжении более 18 месяцев мы пытались повторить добро и зло от Arduino Way of Thing. Небеса или ад, я подозреваю, что мы должны постоянно продолжать по этой дороге для F1XX. Для материалов F4 гуру этой платформы, вероятно, должны прозвучить.
Луча
Но...
На протяжении более 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, но на практике они не используются очень часто или во времени критических мест, а также с магией современных компиляторов , не может быть никакой разницы вообще.
Таким образом, эта конкретная аномалия может быть легко решена в конструкторе, изменив номер 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 и вещи все еще компилируются в порядке.
Но я сделаю еще несколько тестирования, чтобы подтвердить.
Спасибо. Я надеялся, что они не окажутся в баране
На данный момент я поместил новые 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. В отношении какого конца ссылки?
Чтобы сделать это однозначным, термины были установлены Моси и Мисо.
Я столкнулся с доской о известности, которая называлась 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, раб в
Мисо = Мастер в, раб.
Mosi = Master Out, раб в
Мисо = Мастер в, раб.