Андисимоны
Вт 20 ноября 2018 г. 12:56
Недавно я сделал определение платы, адаптируя код с аналогичной платы, как предполагают инструкции, но неясно, как используются определения. Основные модули PINS_ARDUINO.час и PINS_ARDUINO.в Кажется, что делает все карты.
Например, цифровые контакты D0 к DMAX перечисляются как нулевые вверх; Означает ли это, что имена PIN -код в вариант.час и вариант.в должен начать PA0, PA1 и т. Д. до PA15, затем на PB0 и т. Д.? Примеры, которые я смотрел. Как инициализация GPIO узнает порт и PIN -код, соответствующий числу, как PB6?
Я также вижу, что аналоговые контакты A0 к Amax перечислены последовательно из заданной отправной точки num_analog_first. Это может работать с ATMEGA328, но для STM это неверно, если сами выводы не пронумерованы особым образом. Например, для STM32F103 PA0-7 соответствуют IN0-7, тогда PB0-1-IN8-9, а PC0-5-в 10-15.
Конечно, этой проблемы избегается, если кто-то не использует D0-DMAX или A0 для AMAX, а имена STM32, такие как PA0 (PA_0), PB1 (PB_1), PC2 (PC_2) и т. Д. Для меня имеет смысл использовать старые имена Arduino D0-DMAX и A0-Amax, если они напечатаны как таковые на доске. Есть ли доски, которые делают это? Если это так, было бы не более надежным поместить определения d0-dmax и a0-amax в определениях платы -- вариант.час и вариант.в ?
С уважением, Энди
Например, цифровые контакты D0 к DMAX перечисляются как нулевые вверх; Означает ли это, что имена PIN -код в вариант.час и вариант.в должен начать PA0, PA1 и т. Д. до PA15, затем на PB0 и т. Д.? Примеры, которые я смотрел. Как инициализация GPIO узнает порт и PIN -код, соответствующий числу, как PB6?
Я также вижу, что аналоговые контакты A0 к Amax перечислены последовательно из заданной отправной точки num_analog_first. Это может работать с ATMEGA328, но для STM это неверно, если сами выводы не пронумерованы особым образом. Например, для STM32F103 PA0-7 соответствуют IN0-7, тогда PB0-1-IN8-9, а PC0-5-в 10-15.
Конечно, этой проблемы избегается, если кто-то не использует D0-DMAX или A0 для AMAX, а имена STM32, такие как PA0 (PA_0), PB1 (PB_1), PC2 (PC_2) и т. Д. Для меня имеет смысл использовать старые имена Arduino D0-DMAX и A0-Amax, если они напечатаны как таковые на доске. Есть ли доски, которые делают это? Если это так, было бы не более надежным поместить определения d0-dmax и a0-amax в определениях платы -- вариант.час и вариант.в ?
С уважением, Энди
fpistm
Вт 20 ноября 2018 г. 13:52
[Андисимоны - Вторник 20 ноября 2018 г. 12:56 вечера] - основные модули PINS_ARDUINO.H и PINS_ARDUINO.C, кажется, делает все картирование.Нет, это только базовое отображение Arduino Naming Ax/DX.
[Андисимоны - Вторник 20 ноября 2018 г. 12:56 вечера] - Например, цифровые контакты D0 к DMAX перечисляются как нулевые вверх; Означает ли это, что имена PIN -код в варианте.H и вариант.C должен начать PA0, PA1 и т. Д. до PA15, затем на PB0 и т. Д.? Примеры, которые я смотрел. Как инициализация GPIO узнает порт и PIN -код, соответствующий числу, как PB6?В Arduino D0 всегда равен 0. Как DigitalRead (D0) эквивалентен DigitalRead (0). Итак, dx = x.
Пин определяет в вариант.час это номер PIN -кода. Это позволяет совместимо с большинством API ARDUINO, используя номер PIN в качестве аргумента.
Таким образом, Pyn можно определить как равное DX.
Он также используется в качестве индекса для массива PinName, определенного в вариант.CPP.
Pinname - это тип, содержащий порт и контакт с GPIO.
Бывший:
PB_6 = (PortB << 4) + 0x06,
Андисимоны
Чт 22 ноября 2018 г. 22:10
Спасибо за эти пояснения.
Когда вы говорите Аналоговые булавки должны быть смежными, чтобы позволить цикл: , Я полагаю, вы имеете в виду, что они должны быть смежными где -то в Const pinname DigitalPin [] Таблица, которая была бы возможно, нет в порядке физических булавок, которые невозможно?
Таким образом, если плата помечена D0-DN, с некоторыми булавками (также или альтернативно) A0-AN, то это должно быть упорядочение Const pinname DigitalPin [] стол; Однако, если плата не так маркирована, тогда любой заказ может использоваться в Const pinname DigitalPin []?
Например, доска Diomrue отмечена именами STM32, а не именами Arduino, такими как DX и AX, поэтому обсуждение является спорным. В этом случае было бы лучше, если бы DX и AX не были определены вообще - но это не вариант на данный момент. Возможно, было бы больше смысла, если бы они были определены конкретно в вариантах?
То, как я настроил его на Diymroe, они могут быть определены неправильно, но, поскольку они не имеют значения с этой платой, пользователь никогда не будет их использовать. Я предполагаю, что PinMode, DigitalRead/Write и Analogread/Write всегда будут правильно работать с именами STM (PA1, PB2 и т. Д.), При условии, что #Defines в варианте.H Сопоставьте заказ внутри Const pinname DigitalPin []?
Я думаю, я начинаю получать это!
Когда вы говорите Аналоговые булавки должны быть смежными, чтобы позволить цикл: , Я полагаю, вы имеете в виду, что они должны быть смежными где -то в Const pinname DigitalPin [] Таблица, которая была бы возможно, нет в порядке физических булавок, которые невозможно?
Таким образом, если плата помечена D0-DN, с некоторыми булавками (также или альтернативно) A0-AN, то это должно быть упорядочение Const pinname DigitalPin [] стол; Однако, если плата не так маркирована, тогда любой заказ может использоваться в Const pinname DigitalPin []?
Например, доска Diomrue отмечена именами STM32, а не именами Arduino, такими как DX и AX, поэтому обсуждение является спорным. В этом случае было бы лучше, если бы DX и AX не были определены вообще - но это не вариант на данный момент. Возможно, было бы больше смысла, если бы они были определены конкретно в вариантах?
То, как я настроил его на Diymroe, они могут быть определены неправильно, но, поскольку они не имеют значения с этой платой, пользователь никогда не будет их использовать. Я предполагаю, что PinMode, DigitalRead/Write и Analogread/Write всегда будут правильно работать с именами STM (PA1, PB2 и т. Д.), При условии, что #Defines в варианте.H Сопоставьте заказ внутри Const pinname DigitalPin []?
Я думаю, я начинаю получать это!
fpistm
Пт 23 ноября 2018 г. 8:13
DX и AX не важны. Я не понимаю, почему ты сосредоточишься на них.
Это для совместимости Arduino, и пользователь должен использовать его или нет, это не рост размера кода.
Все API совместимы с названием PIN STM PIN.
В зависимости от варианта, чтобы определить порядок вывода единственным ограничением состоит в том, чтобы аналоговые контакты были смежными, а первая должна быть выше, чем количество аналогов, которое вы определяете.
Это для совместимости Arduino, и пользователь должен использовать его или нет, это не рост размера кода.
Все API совместимы с названием PIN STM PIN.
В зависимости от варианта, чтобы определить порядок вывода единственным ограничением состоит в том, чтобы аналоговые контакты были смежными, а первая должна быть выше, чем количество аналогов, которое вы определяете.
Беннебой
Чт 10 января 2019 г., 16:52
Извините, что Piggyback в этой теме, особенно с учетом 2 месяцев... но...
Кажется, я не могу получить аналоги, чтобы работать над двумя вариантами Genf4, к которым у меня есть доступ (Diymroe & Black407vet6)
Они предварительно зафигурированы, если включены в аналоговый PINMAP или требуется некоторая настройка PIN-кода?
Кажется, я не могу получить аналоги, чтобы работать над двумя вариантами Genf4, к которым у меня есть доступ (Diymroe & Black407vet6)
Они предварительно зафигурированы, если включены в аналоговый PINMAP или требуется некоторая настройка PIN-кода?
fpistm
Чт 10 января 2019 г., 17:16
Нет особого дела. Если они четко определены, они должны работать просто с помощью:
int sensorValue = analogRead(A0);
fpistm
Пт 11 января 2019 г., 7:57 утра
Хорошо, я сделал тест и думаю, я думаю, почему вы спросили, работает ли это.
#define Serial SerialUSB // Arduino Due, Maple
// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
}
// the loop routine runs over and over again forever:
void loop() {
// print out the value you read:
Serial.print("A0 (PA0)= "); Serial.print(analogRead(A0)); Serial.print("\t"); Serial.print(analogRead(0)); Serial.print("\t"); Serial.println(analogRead(PA0));
delay(1); // delay in between reads for stability
Serial.print("A1 (PA1)= "); Serial.print(analogRead(A1)); Serial.print("\t"); Serial.print(analogRead(1)); Serial.print("\t"); Serial.println(analogRead(PA1));
delay(1); // delay in between reads for stability
Serial.print("A2 (PA2)= "); Serial.print(analogRead(A2)); Serial.print("\t"); Serial.print(analogRead(2)); Serial.print("\t"); Serial.println(analogRead(PA2));
delay(1); // delay in between reads for stability
Serial.print("A3 (PA3)= "); Serial.print(analogRead(A3)); Serial.print("\t"); Serial.print(analogRead(3)); Serial.print("\t"); Serial.println(analogRead(PA3));
delay(1); // delay in between reads for stability
Serial.print("A4 (PA4)= "); Serial.print(analogRead(A4)); Serial.print("\t"); Serial.print(analogRead(4)); Serial.print("\t"); Serial.println(analogRead(PA4));
delay(1); // delay in between reads for stability
Serial.print("A5 (PA5)= "); Serial.print(analogRead(A5)); Serial.print("\t"); Serial.print(analogRead(5)); Serial.print("\t"); Serial.println(analogRead(PA5));
delay(1); // delay in between reads for stability
Serial.print("A6 (PB0)= "); Serial.print(analogRead(A6)); Serial.print("\t"); Serial.print(analogRead(6)); Serial.print("\t"); Serial.println(analogRead(PB0));
delay(1); // delay in between reads for stability
Serial.print("A7 (PB1)= "); Serial.print(analogRead(A7)); Serial.print("\t"); Serial.print(analogRead(7)); Serial.print("\t"); Serial.println(analogRead(PB1));
delay(1); // delay in between reads for stability
Serial.print("A8 (PC0)= "); Serial.print(analogRead(A8)); Serial.print("\t"); Serial.print(analogRead(8)); Serial.print("\t"); Serial.println(analogRead(PC0));
delay(1); // delay in between reads for stability
Serial.print("A9 (PC1)= "); Serial.print(analogRead(A9)); Serial.print("\t"); Serial.print(analogRead(9)); Serial.print("\t"); Serial.println(analogRead(PC1));
delay(1); // delay in between reads for stability
Serial.print("A10 (PC2)= "); Serial.print(analogRead(A10)); Serial.print("\t"); Serial.print(analogRead(10)); Serial.print("\t"); Serial.println(analogRead(PC2));
delay(1); // delay in between reads for stability
Serial.print("A11 (PC3)= "); Serial.print(analogRead(A11)); Serial.print("\t"); Serial.print(analogRead(11)); Serial.print("\t"); Serial.println(analogRead(PC3));
delay(1); // delay in between reads for stability
Serial.print("A12 (PC4)= "); Serial.print(analogRead(A12)); Serial.print("\t"); Serial.print(analogRead(12)); Serial.print("\t"); Serial.println(analogRead(PC4));
delay(1); // delay in between reads for stability
Serial.print("A13 (PC5)= "); Serial.print(analogRead(A13)); Serial.print("\t"); Serial.print(analogRead(13)); Serial.print("\t"); Serial.println(analogRead(PC5));
delay(1000); // delay in between reads for stability
Serial.println("#################");
}
Беннебой
Пт 11 января 2019 г. 10:42
Хорошо, спасибо, это имеет смысл.
Я буду играть с конфигурациями варианта, чтобы увидеть, смогу ли я получить правильный заказ, а затем отправьте изменения, если успешно.
Я буду играть с конфигурациями варианта, чтобы увидеть, смогу ли я получить правильный заказ, а затем отправьте изменения, если успешно.
fpistm
Пт 11 января 2019 12:26
В настоящее время я пишу эскиз для тестирования варианта когерентности. Я поделюсь этим сегодня днем.
Беннебой
Пт 11 января 2019 14:13
[fpistm - Пт 11 января 2019 12:26] - В настоящее время я пишу эскиз для тестирования варианта когерентности. Я поделюсь этим сегодня днем.Отлично, спасибо.
fpistm
Пт 11 января 2019 г., 17:00
[Беннебой - Пт 11 января 2019 г. 14:13] -Первый выстрел. Я добавлю еще немного чека.[fpistm - Пт 11 января 2019 12:26] - В настоящее время я пишу эскиз для тестирования варианта когерентности. Я поделюсь этим сегодня днем.Отлично, спасибо.
https: // Gist.GitHub.com/fpistm/93f26012 ... 6383E4F314
Беннебой
Пт 11 января 2019 г., 18:01
Хороший.
Хотя я думаю, что получение правильных рефери pxy может быть слишком большим.
Этот инструмент пока поможет, я думаю.
Хотя я думаю, что получение правильных рефери pxy может быть слишком большим.
Этот инструмент пока поможет, я думаю.
Беннебой
Солнце 13 января 2019 г. 11:54
@fpistm
Является ли ADC, настроенный на совместимость ADC только 10 бит для совместимости Arduino AVR?
Любой способ иметь полные 12 бит?
Является ли ADC, настроенный на совместимость ADC только 10 бит для совместимости Arduino AVR?
Любой способ иметь полные 12 бит?
Беннебой
Солнце 13 января 2019 12:11
Только что посмотрел на wiling_analog.в
Предположительно, мы могли бы как -то сделать _readresolution?
В настоящее время он зафиксирован в 10:
Предположительно, мы могли бы как -то сделать _readresolution?
В настоящее время он зафиксирован в 10:
static int _readResolution = 10;
Беннебой
Солнце 13 января 2019 12:24
Из того, что я могу сказать, ESP имеет код в их HAL, чтобы справиться с разрешением (до 12 бит H/W или 16 -битного S/W).
fpistm
Солнце 13 января 2019 14:18
Гул, на самом деле есть смещение, так как на самом деле это разрешение 12b:
https: // github.com/stm32duino/arduino_c ... бревно.C#L550
И определено также здесь:
https: // github.com/stm32duino/arduino_c ... Ино.H#L279
На самом деле, я думаю, это должно быть:
https: // github.com/stm32duino/arduino_c ... бревно.C#L550
И определено также здесь:
https: // github.com/stm32duino/arduino_c ... Ино.H#L279
На самом деле, я думаю, это должно быть:
static int _readResolution = ADC_RESOLUTION;
Беннебой
Солнце 13 января 2019 г. 14:45
Протестирован & Работаю, я отправлю пиар, как только смогу
fpistm
Солнце 13 января 2019 г. 15:03
Гул, на самом деле это не проблема.
https: // www.Ардуино.cc/reference/en/lan ... Esolution/
По умолчанию разрешение хорошо 10 бит.
Преобразование выполняется в 12 битах, но нанесло на карту 10.
Как упомянуто в ссылке API ARDUINO: Семейные доски Zero и MKR имеют 12-разрядные возможности АЦП, которые можно получить Изменив разрешение на 12. Это вернет значения из анализа () от 0 до 4095. Таким образом, пользователь должен явно запросить 12 бит.
https: // www.Ардуино.cc/reference/en/lan ... Esolution/
По умолчанию разрешение хорошо 10 бит.
Преобразование выполняется в 12 битах, но нанесло на карту 10.
Как упомянуто в ссылке API ARDUINO: Семейные доски Zero и MKR имеют 12-разрядные возможности АЦП, которые можно получить Изменив разрешение на 12. Это вернет значения из анализа () от 0 до 4095. Таким образом, пользователь должен явно запросить 12 бит.
// change the resolution to 12 bits
analogReadResolution(12);
Беннебой
Солнце 13 января 2019 г. 15:26
Мой плохой, спасибо, что указали на это.
Fredbox
Пт 15 февраля 2019 г., 23:26
После прочтения этой темы, я все еще запутался.
Примеры:
Примеры:
digitalWrite(PC13,0) turns on the LED on a blue pill.
digitalWrite(PC_13,0) does not.
Serial.print(PC13) prints 17.
Serial.print(PC_13) prints 45.
digitalWriteFast(PC13,0) gives a compile error
digitalWriteFast(PC_13,0) compiles but does not turn on the LED
fpistm
Сб 16 февраля 2019 г. 14:54
PXN - это пин -номер, как во всех API Arduino API.
Py_n - это тип pinname, он представляет порт GPIO и бит.
Вот почему они не имеют такой же значения.
Py_n - это тип pinname, он представляет порт GPIO и бит.
Вот почему они не имеют такой же значения.
digitalWrite(PC13,0); // turns on the LED on a blue pill. --> ok as this API use the pin number
digitalWrite(PC_13,0); // does not. --> not ok as this is the piname while it waits the pin number.
digitalWriteFast(PC13,0); // gives a compile error --> compiler wait a pinname type not a pin number so this is ok
digitalWriteFast(PC_13,0); // compiles but does not turn on the LED --> this should while the pin has been configured before using pinmode(PC13, OUTPUT);
Fredbox
Сб 16 февраля 2019 г. 16:36
Я использовал PinMode (PC_13, вывод) для тестирования DigitalWriteFast ().
Он работает, как вы описываете для PinMode (PC13, Output), за которым следует цифровая writhwrite (PC_13, x).
Было бы больше смысла, если бы pinmode () понял оба формата.
Он работает, как вы описываете для PinMode (PC13, Output), за которым следует цифровая writhwrite (PC_13, x).
Было бы больше смысла, если бы pinmode () понял оба формата.
Fredbox
Сб 16 февраля 2019 г., 17:34
Я нашел макрос в pins_arduino.H, чтобы сделать конверсию:
#define digitalPinToPinName(p) ...
fpistm
Сб 16 февраля 2019 г. 18:36
[Fredbox - Сб 16 февраля 2019 г. 16:36] -К сожалению, это нельзя было сделать, так как Pinmode - это C API и официальный API Arduino API.
Было бы больше смысла, если бы pinmode () понял оба формата.
Может быть, преобразование цифрового API в C ++ может быть решением.