JCW
Сб 31 октября 2015 г. 10:09
Я использую BMP для загрузки и просмотра выхода последовательного порта этого эскиза (протестирован с помощью Generic F103T и F103R):
if(dfuActive(&USBD_Device) == 0) {
loops--;
}
ZMEMW16
Сб 31 октября 2015 г. 10:41
Какая линия заканчивает вы установили?
не могли бы вы попробовать с задержкой (100)
время с 1000 мс
секунды +секунд*168 +/- 1 мсек (округление?)
Накладные расходы «ln» части Println составляет 168 мс??
Стивен
не могли бы вы попробовать с задержкой (100)
время с 1000 мс
секунды +секунд*168 +/- 1 мсек (округление?)
Накладные расходы «ln» части Println составляет 168 мс??
Стивен
JCW
Сб 31 октября 2015 г. 10:57 утра
Я не установил никаких окончаний (могу ли я?).
Я, наверное, должен ясли, что я только изменил первый println для печати. Таким образом, первая строка отличается, но остальная часть теста одинакова для обоих случаев, println используется внутри цикла, и все же время отличается от времени.
Я, наверное, должен ясли, что я только изменил первый println для печати. Таким образом, первая строка отличается, но остальная часть теста одинакова для обоих случаев, println используется внутри цикла, и все же время отличается от времени.
JCW
Сб 31 октября 2015 г. 11:15
С задержкой петли 100 мс я получаю:
ECHO "MAGIC" > \\.\com155:
ZMEMW16
Сб 31 октября 2015 г. 12:13
@JCW
Я не установил никаких окончаний (могу ли я?).
В правом нижнем углу окна последовательного монитора находится ящик для выбора линии
Этот вывод выглядит как счет*(100+17)
Оригинальный вывод теперь выглядит как 10*count*(100 + 17)
Так что есть «делать что -то» на цикле 100 мс/часы/прерывание?
Стивен
Этот вывод выглядит как счет*(100+17)
Оригинальный вывод теперь выглядит как 10*count*(100 + 17)
Так что есть «делать что -то» на цикле 100 мс/часы/прерывание?
Стивен
JCW
Сб 31 октября 2015 г. 13:00
Ах, но я не использую IDE, я использую серийную мостику BMP.
FWIW, это ничем не отличается от режима Serial Monitor - Line установлен на «Newline».
В любом случае, я не вижу, как получение / отображение конца может повлиять на это.
Загадочный...
FWIW, это ничем не отличается от режима Serial Monitor - Line установлен на «Newline».
В любом случае, я не вижу, как получение / отображение конца может повлиять на это.
Загадочный...
ZMEMW16
Сб 31 октября 2015 г. 13:13
В любом случае, я не вижу, как получение / отображение конца может повлиять на это.
и я нет
Ах, но я не использую IDE, я использую серийную мостику BMP Настоящая версия BMP или Rick Kimballs на «таблетке»?
У меня были его вывод на серийный монитор из целей PA9/PA10; Если это «серийное мостовое»?
Может, я думаю о полу-хостинге?
Так что есть «делать что -то» на цикле 100 мс/часы/прерывание? Так что есть «сделать что -то, что нужно 17 мс.» На цикле 100 мс?
Стивен
и я нет
Ах, но я не использую IDE, я использую серийную мостику BMP Настоящая версия BMP или Rick Kimballs на «таблетке»?
У меня были его вывод на серийный монитор из целей PA9/PA10; Если это «серийное мостовое»?
Может, я думаю о полу-хостинге?
Так что есть «делать что -то» на цикле 100 мс/часы/прерывание? Так что есть «сделать что -то, что нужно 17 мс.» На цикле 100 мс?
Стивен
JCW
Сб 31 октября 2015 г. 13:39
Я использую «Уродливую доску» (я думаю, имя Роджера) с Ebay, с прошивкой Rick JC66.
Мой блок работает хорошо, как SWD, так и серийные мостики (Real Uart, а не полугодий).
Я думаю, что мой первый вопрос был бы другим: почему время отличается в курсе, с такой же Код, когда единственная разница в настройке, вызов для печати VS Println?
Мой блок работает хорошо, как SWD, так и серийные мостики (Real Uart, а не полугодий).
Я думаю, что мой первый вопрос был бы другим: почему время отличается в курсе, с такой же Код, когда единственная разница в настройке, вызов для печати VS Println?
ZMEMW16
Сб 31 октября 2015 г. 13:46
Что происходит с первым снятым печати/println?
SRP
SRP
JCW
Сб 31 октября 2015 г. 13:56
Ах, хороший момент! Вернуться к 0/1001/2002/3003. Добавьте Println в настройке, и дополнительные задержки возвращаются.
Ничего не происходит между setup () и loop (): https: // github.com/rogerclarkmelbourne/ ... E/Main.CPP
Ничего не происходит между setup () и loop (): https: // github.com/rogerclarkmelbourne/ ... E/Main.CPP
JCW
Сб 31 октября 2015 г. 14:05
Может быть, это связано с USB в конце концов (прерывает?). Я использую последнюю 100% немодифицированную проверку Arduino-STM32.
Но причина, по которой я вообще попал сюда, заключалась в том, что я не могу появиться сериал USB - мой сериал привязан к USART.
У меня раньше работал сериал USB на той же доске (это Hy-TinyStm103, PA0 активен D+ подтягивание).
Я использую F103T, который был скопирован и настроен из F103C. Но обратите внимание, что то же самое происходит, если я выбрал F103R.
17% в течение 100 мс и 1000 мс - это подсказка. Должен быть какой -то прерывание питания циклов процессора.
Но почему разница в Loop () с однострочным изменением в настройке ()?
Может быть полезно, если кто -то другой сможет воспроизвести эту проблему на USART. Или USB, в этом отношении.
Но причина, по которой я вообще попал сюда, заключалась в том, что я не могу появиться сериал USB - мой сериал привязан к USART.
У меня раньше работал сериал USB на той же доске (это Hy-TinyStm103, PA0 активен D+ подтягивание).
Я использую F103T, который был скопирован и настроен из F103C. Но обратите внимание, что то же самое происходит, если я выбрал F103R.
17% в течение 100 мс и 1000 мс - это подсказка. Должен быть какой -то прерывание питания циклов процессора.
Но почему разница в Loop () с однострочным изменением в настройке ()?
Может быть полезно, если кто -то другой сможет воспроизвести эту проблему на USART. Или USB, в этом отношении.
JCW
Сб 31 октября 2015 г. 14:10
Все, о чем я могу придумать, это изменение размера кода, запускающее Heisenbug, в результате чего водитель USB начинает стрелять, возможно,.
ZMEMW16
Сб 31 октября 2015 г. 14:31
О, это количество*(1000+1)
Не могли бы вы попробовать 100 & 10000 без настройки печати/println?
Мне интересно, станет ли 10000 10017 *** РЕДАКТИРОВАТЬ 17% - 1700 DOH!
«Bell Going Ting Ting» - это как -то связано с USB Serial Serial Mlow Down и/или Buffer Size?
Что у нас есть в миксе, это BMP и его код. что он использует ST (?) & opencm3 libs и т. Д. Может быть, в настройке системных часов что -то есть, и мы недостаточно знаем о коде BMP
SRP
Не могли бы вы попробовать 100 & 10000 без настройки печати/println?
Мне интересно, станет ли 10000 10017 *** РЕДАКТИРОВАТЬ 17% - 1700 DOH!
«Bell Going Ting Ting» - это как -то связано с USB Serial Serial Mlow Down и/или Buffer Size?
Что у нас есть в миксе, это BMP и его код. что он использует ST (?) & opencm3 libs и т. Д. Может быть, в настройке системных часов что -то есть, и мы недостаточно знаем о коде BMP
SRP
Рик Кимбалл
Сб 31 октября 2015 г. 15:01
JCW написал:Может быть полезно, если кто -то другой сможет воспроизвести эту проблему на USART. Или USB, в этом отношении.
JCW
Сб 31 октября 2015 г. 15:03
Мы можем исключить BMP, IMO. Он сообщает о сериале с доски на мой экран, как и Serial Monitor в IDE.
Это не может повлиять на то, что делает целевая доска, он просто передает персонажей мне, независимо от задержек времени.
100 мс, без настройки печати: 0/100/200/301/401/501/602/702/802/903/1003
10000 мс, без настройки печати: 0/10006/20014/30021/40028/50035
В некотором смысле это правдоподобно: немного накладных расходов на петлю.
Но опять же, это не. Часы Millis () излечены из прерывания Systick, я предполагаю, что.
Таким образом, даже с µC, занятым с другими прерываниями, он не должен терять время.
Не говоря уже о том, что на 17% потеря:
10000 мс, с настройкой Println: 0/11674/23348/35023/46697/58371
Это не может повлиять на то, что делает целевая доска, он просто передает персонажей мне, независимо от задержек времени.
100 мс, без настройки печати: 0/100/200/301/401/501/602/702/802/903/1003
10000 мс, без настройки печати: 0/10006/20014/30021/40028/50035
В некотором смысле это правдоподобно: немного накладных расходов на петлю.
Но опять же, это не. Часы Millis () излечены из прерывания Systick, я предполагаю, что.
Таким образом, даже с µC, занятым с другими прерываниями, он не должен терять время.
Не говоря уже о том, что на 17% потеря:
10000 мс, с настройкой Println: 0/11674/23348/35023/46697/58371
JCW
Сб 31 октября 2015 г. 15:11
Спасибо, Рик.
Может быть, ваша проблема как -то связана с вашим портом платформы STM32F103T? Сначала тоже думал. Но то же самое происходит, когда я строю для F103R.
Я только что попробовал на доске Olimex-P103. То же самое 17% Миллис () Странность.
Загрузить через BMP, серийный заголовок на ext через FTDI UART.
Гремлины!
Может быть, ваша проблема как -то связана с вашим портом платформы STM32F103T? Сначала тоже думал. Но то же самое происходит, когда я строю для F103R.
Я только что попробовал на доске Olimex-P103. То же самое 17% Миллис () Странность.
Загрузить через BMP, серийный заголовок на ext через FTDI UART.
Гремлины!
ZMEMW16
Сб 31 октября 2015 г. 15:18
@Rick - стоит задать вопрос?
@Rick - всегда стоит задать неправильный или глупый вопрос, хотя? Иногда они делятся
где ты взял hy-tinystm103? Aliexpress ничего не дает & eBay дает моторные части
Что происходит с охраняемым первым проходом Print/Println в цикле E.глин.
@Rick - всегда стоит задать неправильный или глупый вопрос, хотя? Иногда они делятся
где ты взял hy-tinystm103? Aliexpress ничего не дает & eBay дает моторные части
Что происходит с охраняемым первым проходом Print/Println в цикле E.глин.
void setup_vcc_sensor() {
adc_reg_map *regs = ADC1->regs;
regs->CR2 |= ADC_CR2_TSEREFE; // enable VREFINT and temp sensor
regs->SMPR1 = ADC_SMPR1_SMP17; // sample rate for VREFINT ADC channel
}
JCW
Сб 31 октября 2015 г. 15:21
ОК, одна часть решенной головоломки - задержка () не делает то, что я ожидал, она проходит велосипедное питание вместо того, чтобы проверять истекшее время, отслеживаемое прерыванием Systick: https: // github.com/rogerclarkmelbourne/ ... Стр.#L36-L45
Что должно сделать задержка (), это зачитываем Millis (), а затем простаивает петля до тех пор, пока не пройдут миллисекунды. Тогда на это не повлияет активность прерывания на заднем плане.
Итак, теперь остается вопрос: что ест 17% µc циклов в одном случае, а почему не в другом?
РЕДАКТИРОВАТЬ: Вот исправление - https: // github.com/jcw/arduino_stm32/co ... B9D3A4649B
(Обратите внимание, что для отслеживания 17% накладных расходов вы не должны применять это изменение)
Что должно сделать задержка (), это зачитываем Millis (), а затем простаивает петля до тех пор, пока не пройдут миллисекунды. Тогда на это не повлияет активность прерывания на заднем плане.
Итак, теперь остается вопрос: что ест 17% µc циклов в одном случае, а почему не в другом?
РЕДАКТИРОВАТЬ: Вот исправление - https: // github.com/jcw/arduino_stm32/co ... B9D3A4649B
(Обратите внимание, что для отслеживания 17% накладных расходов вы не должны применять это изменение)
JCW
Сб 31 октября 2015 г. 15:44
где ты взял hy-tinystm103?
Хех - http: // www.HOTMCU.com/stm32f103tb-arm-c ... P-222.HTML
Что происходит с охраняемым первым проходом Print/Println в цикле E.глин. Я все еще получаю 17% дополнительных накладных расходов.
Я также переместил Begin () на настройку и изменил строку Println на int println. Нет изменений. Сумасшедший, я знаю.
Это либо что -то нелепое, смотрящее мне прямо в лицо, либо очень важная ошибка, жаждая поймать :)
Я буду придерживаться P103 с F103R, чтобы исключить H/ W или варианты.
Редактировать - У этого тоже есть замедление:
Что происходит с охраняемым первым проходом Print/Println в цикле E.глин. Я все еще получаю 17% дополнительных накладных расходов.
Я также переместил Begin () на настройку и изменил строку Println на int println. Нет изменений. Сумасшедший, я знаю.
Это либо что -то нелепое, смотрящее мне прямо в лицо, либо очень важная ошибка, жаждая поймать :)
Я буду придерживаться P103 с F103R, чтобы исключить H/ W или варианты.
Редактировать - У этого тоже есть замедление:
// Reading Vdd and Temperature Sensor
// Pito 8/2016
// Temperature sensor at ADC16, VREFINT at ADC17
// BluePill and Maple Mini
void setup_vdd_tempr_sensor() {
adc_reg_map *regs = ADC1->regs;
regs->CR2 |= ADC_CR2_TSEREFE; // enable VREFINT and Temperature sensor
// sample rate for VREFINT ADC channel and for Temperature sensor
regs->SMPR1 |= (0b111 << 18); // sample rate temperature
regs->SMPR1 |= (0b111 << 21); // sample rate vrefint
adc_calibrate(ADC1);
}
void setup(){
setup_vdd_tempr_sensor();
Serial.begin(115200);
delay(1);
}
void loop() {
float tempr, vdd;
// reading Vdd by utilising the internal 1.20V VREF
vdd = 1.20 * 4096.0 / adc_read(ADC1, 17);
// following 1.43 and 0.0043 parameters come from F103 datasheet - ch. 5.9.13
// and need to be calibrated for every chip (large fab parameters variance)
tempr = (1.43 - (vdd / 4096.0 * adc_read(ADC1, 16))) / 0.0043 + 25.0;
Serial.print("Vdd= ");
Serial.print(vdd);
Serial.println(" V");
Serial.print("Temp= ");
Serial.print(tempr);
Serial.println(" C");
delay(500);
}
ZMEMW16
Сб 31 октября 2015 г. 15:50
Следующая глупость, разделите задержку и между Capture Millis () на INT, захватите миллисы () до & После печати всех этих INT распечатайте эту разницу
SRP
SRP
JCW
Сб 31 октября 2015 г. 15:59
Я не уверен, что это скажет нам. Аномалия задержки / миллиса была решена.
Есть что -то, что ест 17% циклов. Иногда. Мерфи и Гейзенберг в одном.
Я на некоторое время позволю этому жареный. Может быть.
Посмотрю, почему я не вижу серийного устройства USB в своих эскизах. Может это связано. Кто знает?
Есть что -то, что ест 17% циклов. Иногда. Мерфи и Гейзенберг в одном.
Я на некоторое время позволю этому жареный. Может быть.
Посмотрю, почему я не вижу серийного устройства USB в своих эскизах. Может это связано. Кто знает?
Рик Кимбалл
Сб 31 октября 2015 г. 16:03
Если вы включили USB -серийные вещи, это будет жевать циклы, которые повлияют на количество процессора, доступного для цикла подсчета задержки. Я бы проверил другие части кода, чтобы увидеть, ожидает ли код Libmaple в состоянии работать без включенного таймера Systick. Может быть, они используют его в местах, которые работают до инициализированного обработчика Systick?
-рик
[Edit1] Удалило плохое предложение кода [/edit1]
-рик
[Edit1] Удалило плохое предложение кода [/edit1]
JCW
Сб 31 октября 2015 г. 16:13
Спасибо. Вот что я мог найти о порядке init: https: // github.com/rogerclarkmelbourne/ ... PP#L65-L76
Рик Кимбалл
Сб 31 октября 2015 г. 16:26
Просмотр оригинального либмапла
https: // github.com/leaflabs/libmaple/bl ... h_time.CPP
Похоже, что код был там с самого начала. * Мне было интересно, было ли это изменение STM32Duino, и не похоже, что это было *
Похоже, что некоторые люди решили свернуть свои собственные:
https: // github.com/leaflabs/libmaple/bl ... Проволока.H#L54
хм ..
-рик
https: // github.com/leaflabs/libmaple/bl ... h_time.CPP
Похоже, что код был там с самого начала. * Мне было интересно, было ли это изменение STM32Duino, и не похоже, что это было *
Похоже, что некоторые люди решили свернуть свои собственные:
https: // github.com/leaflabs/libmaple/bl ... Проволока.H#L54
хм ..
-рик
JCW
Сб 31 октября 2015 г., 17:12
Похоже, что некоторые люди решили бросить свои собственные
Не редкость, даже в OSS-Land :)
Это могло бы назвать «dower_us ()», который существует именно для этой цели: спиновая петля для очень коротких задержек.
Это могло бы назвать «dower_us ()», который существует именно для этой цели: спиновая петля для очень коротких задержек.
Стивестронг
Ср. 04 ноября 2015 г., 16:26
Я бы подумал только в переполнении буфера TX.
Если вы напечатаете "[Hello]" Это 7 Chars Long. Плюс еще 2 конец строки (\ n + \ r) делает 9 chars.
Если размер буфера TX составляет 8 байтов, то для самой последней строки, заканчивающей чар, SW время ожидания, чтобы освободить буферное пространство для одного чара.
Имеет ли это смысл?
Попробуйте печатать "Привет" (без скобков).
Если вы напечатаете "[Hello]" Это 7 Chars Long. Плюс еще 2 конец строки (\ n + \ r) делает 9 chars.
Если размер буфера TX составляет 8 байтов, то для самой последней строки, заканчивающей чар, SW время ожидания, чтобы освободить буферное пространство для одного чара.
Имеет ли это смысл?
Попробуйте печатать "Привет" (без скобков).
JCW
Чт, 5 ноября 2015 г., 12:20 утра
Когда нет println () в setup (), времена 0/1002/2005/3007.
Когда у Println есть даже пустая строка в качестве Arg, Times 0/1169/2339/3508.
Зарегистрированное использование данных не изменяется, только размер кода, но три println без ARG в порядке, в то время как один Println («») не является, а прежние генерируют больше кода.
Еще один данных: если я называю печать ISO Println в setup (), я могу печатать большие строки, не видя дополнительных задержек. Может быть, есть что-то особенное с обработкой новой линии?
Я не слишком обеспокоен.Т.м. Поскольку эскиз действительно работает, просто что -то начинает увеличивать 17% циклов процессора без четкой причины, что определенно является причиной для беспокойства, если мы не сможем это объяснить.
Обновлять - Обратите внимание, что с PR#131 теперь объединен в филиал Dev, таймер больше не будет показывать Эти задержки (но, я ожидаю, будет продолжаться 17% -ная велосипеда). Таким образом, чтобы исследовать это, вы не должны бежать из филиала «разработки» в GitHub.
Обновление № 2 - Похоже, это центральный код для написания персонажей в USB: https: // github.com/rogerclarkmelbourne/ ... #L107-L136 - Это нетривиально, но я не могу придумать ни одной причины, почему это приведет к быстрому увольнению или что-то в этом роде или что-то в этом роде.
Когда у Println есть даже пустая строка в качестве Arg, Times 0/1169/2339/3508.
Зарегистрированное использование данных не изменяется, только размер кода, но три println без ARG в порядке, в то время как один Println («») не является, а прежние генерируют больше кода.
Еще один данных: если я называю печать ISO Println в setup (), я могу печатать большие строки, не видя дополнительных задержек. Может быть, есть что-то особенное с обработкой новой линии?
Я не слишком обеспокоен.Т.м. Поскольку эскиз действительно работает, просто что -то начинает увеличивать 17% циклов процессора без четкой причины, что определенно является причиной для беспокойства, если мы не сможем это объяснить.
Обновлять - Обратите внимание, что с PR#131 теперь объединен в филиал Dev, таймер больше не будет показывать Эти задержки (но, я ожидаю, будет продолжаться 17% -ная велосипеда). Таким образом, чтобы исследовать это, вы не должны бежать из филиала «разработки» в GitHub.
Обновление № 2 - Похоже, это центральный код для написания персонажей в USB: https: // github.com/rogerclarkmelbourne/ ... #L107-L136 - Это нетривиально, но я не могу придумать ни одной причины, почему это приведет к быстрому увольнению или что-то в этом роде или что-то в этом роде.
JCW
Чт 5 ноября 2015 г. 12:45
Ага!
Если я прокомментирую этот код: https: // github.com/rogerclarkmelbourne/ ... #L129-L134 - Тогда все работает, как и ожидалось, больше не замедляется. Этот пустой, в то время как петля может быть намеком, хотя я не могу сказать, что я понимать Почему это изменение работает. Может отправить 2 чарса (\ r \ n), я.эн. Линия, заканчивающаяся от вызова Println, имеет значение - в этом конкретном состоянии?
Пустой, короткий, длинный... Все работает. Даже отправка тысяч персонажей все еще работает, поэтому я не уверен, что делает этот тест. Может быть, код должен сравниваться с более старыми версиями, и что -то осталось или изменилось случайно?
Мое предложение было бы: давайте прокомментируем это и сделаем это изменением в филиале разработки.
Если я прокомментирую этот код: https: // github.com/rogerclarkmelbourne/ ... #L129-L134 - Тогда все работает, как и ожидалось, больше не замедляется. Этот пустой, в то время как петля может быть намеком, хотя я не могу сказать, что я понимать Почему это изменение работает. Может отправить 2 чарса (\ r \ n), я.эн. Линия, заканчивающаяся от вызова Println, имеет значение - в этом конкретном состоянии?
Пустой, короткий, длинный... Все работает. Даже отправка тысяч персонажей все еще работает, поэтому я не уверен, что делает этот тест. Может быть, код должен сравниваться с более старыми версиями, и что -то осталось или изменилось случайно?
Мое предложение было бы: давайте прокомментируем это и сделаем это изменением в филиале разработки.
Rogerclark
Чт, 05 ноября 2015 г., 2:20 утра
Вы могли бы попробовать посмотреть в репонгах Leadlabs/Libmaple.
Были некоторые изменения / исправления ошибок, которые они применили после того, как мы серьезно отклонились от их кода около года назад.
Я пытался вручную обновить любой код, где они делали исправления ошибок, примерно до апреля 2015 года, но я, возможно, пропустил некоторые исправления.
Однако я подозреваю, что это ошибка, которую никто не заметил.
Были некоторые изменения / исправления ошибок, которые они применили после того, как мы серьезно отклонились от их кода около года назад.
Я пытался вручную обновить любой код, где они делали исправления ошибок, примерно до апреля 2015 года, но я, возможно, пропустил некоторые исправления.
Однако я подозреваю, что это ошибка, которую никто не заметил.
JCW
Чт 5 ноября 2015 г. 8:06 утра
Rogerclark написал:Вы могли бы попробовать посмотреть в репонгах Leadlabs/Libmaple.
Rogerclark
Чт 5 ноября 2015 г. 8:42 утра
Спасибо
Я втяну этот пиар в филиал разработки, когда у меня будет время.
Я втяну этот пиар в филиал разработки, когда у меня будет время.