гравер
Пн 27 марта 2017 г. 1:41
Не уверен, был ли это лучшим форумом для моего вопроса; Может быть, "библиотеки и оборудование" были бы лучше?
(Синяя таблетка, IDE 1.8.0, Windows 7 OS) Я не мог найти ничего в часто задаваемых вопросах или форуме, которые, кажется, решают это. Вот как это началось...
Я вкладывал последние штрихи на свой код. После загрузки я отключаю сериал с TTL и подключаю плату к высокой текущей плате драйвера, измените две программные шунты/ремешки/шорты, чтобы Boot0 и Boot1 были низкими. Код обычно работает, когда он будет включен. Он перестал сохранять код. Поэтому я использовал другой компьютер, и код был сохранен, и все работали хорошо. После еще 3 циклов компиляции и загрузки, он начал делать то же самое. После удаления питания, Shunt Set Boot0 до минимума, STM32 был мертв. Я предполагаю, что код загружается в оперативную память, а затем запускается оттуда. Но я никогда ничего не менял в своей IDE; Все, что я изменил, это код в моей программе.
Я помню, что некоторые в моем STM32 путешествуют, я прочитал что -то о высоком Boot1 (логично 1) загрузит код, а затем запускается с оперативной памяти. Не мог найти это в моем ноутбуке, хотя. Я пробовал 4 других синих таблеток (купленных в разное время), но они не сохраняют код. Какой вид исключает позицию Boot1. Все синие таблетки работали правильно раньше.
Я попробовал версию 1.8.2, а потом это даже не скомпилировалось, но это был я. Я не запускал менеджер доски для загрузки плат STM32. (Роджер Кларк....Просто чтобы вы знаете, некоторые из нас читают часто задаваемые вопросы. ) У кого -нибудь есть идеи, что случилось? Не уверен, что это связано, но моя установка использовала «портатив» 1.8.0. IDE. У меня были IDE и папка для моих программ в моей «Drop Box», которая позволила мне работать на любом из моих 3 компьютеров. С тех пор я пробовал все 4 компьютера в доме, все Win 7 Home Premium 64bit 64bit. UCS просто не сохраняет код. ??
(Синяя таблетка, IDE 1.8.0, Windows 7 OS) Я не мог найти ничего в часто задаваемых вопросах или форуме, которые, кажется, решают это. Вот как это началось...
Я вкладывал последние штрихи на свой код. После загрузки я отключаю сериал с TTL и подключаю плату к высокой текущей плате драйвера, измените две программные шунты/ремешки/шорты, чтобы Boot0 и Boot1 были низкими. Код обычно работает, когда он будет включен. Он перестал сохранять код. Поэтому я использовал другой компьютер, и код был сохранен, и все работали хорошо. После еще 3 циклов компиляции и загрузки, он начал делать то же самое. После удаления питания, Shunt Set Boot0 до минимума, STM32 был мертв. Я предполагаю, что код загружается в оперативную память, а затем запускается оттуда. Но я никогда ничего не менял в своей IDE; Все, что я изменил, это код в моей программе.
Я помню, что некоторые в моем STM32 путешествуют, я прочитал что -то о высоком Boot1 (логично 1) загрузит код, а затем запускается с оперативной памяти. Не мог найти это в моем ноутбуке, хотя. Я пробовал 4 других синих таблеток (купленных в разное время), но они не сохраняют код. Какой вид исключает позицию Boot1. Все синие таблетки работали правильно раньше.
Я попробовал версию 1.8.2, а потом это даже не скомпилировалось, но это был я. Я не запускал менеджер доски для загрузки плат STM32. (Роджер Кларк....Просто чтобы вы знаете, некоторые из нас читают часто задаваемые вопросы. ) У кого -нибудь есть идеи, что случилось? Не уверен, что это связано, но моя установка использовала «портатив» 1.8.0. IDE. У меня были IDE и папка для моих программ в моей «Drop Box», которая позволила мне работать на любом из моих 3 компьютеров. С тех пор я пробовал все 4 компьютера в доме, все Win 7 Home Premium 64bit 64bit. UCS просто не сохраняет код. ??
гравер
Пн 27 марта 2017 г. 1:48
Мне придется посмотреть, будет ли прикрепление батареи к VBAT сохранить код. Не лучшее решение, но это может провести меня до тех пор, пока я не смогу решить проблему. Видел что -то об этом в «Re: Guide:« Я новичок здесь - какая доска мне стоит купить?"
гравер
Пн 27 марта 2017 г., 3:27
Я еще не исправил проблему, но у меня есть......Я нашел достаточно информации, чтобы подключить свой ST-Link V2. Я могу скачать свой код через ST-Link, и он сохраняет код. Однако....Я не уверен, как получить выход из серийного.печать. Даже использование USB -серийного модуля, который появляется (в моей системе как COM59) Ничто не отображается на мониторе. Мне придется подумать/найти еще немного. ST-Link, кажется, работает достаточно хорошо. Теперь просто нужно выяснить, как использовать его в полной мере для отладки.
Стивестронг
Пн 27 марта 2017 г. 8:29
Серийная карта зависит от метода загрузки следующим образом:
[*] Bootloader & ST-Link:
Serial = Usbeserial
Serial1 = usart1
Serial2 = usart2
Serial3 = usart3
[*] Сериал:
Serial = USART1
Serial1 = usart2
Serial2 = usart3
Видеть http: // www.STM32duino.com/viewtopic.PHP ... 462#P25373.
[*] Bootloader & ST-Link:
Serial = Usbeserial
Serial1 = usart1
Serial2 = usart2
Serial3 = usart3
[*] Сериал:
Serial = USART1
Serial1 = usart2
Serial2 = usart3
Видеть http: // www.STM32duino.com/viewtopic.PHP ... 462#P25373.
Эдогальдо
Пн 27 марта 2017 г. 8:47 утра
Еще один совет: даже если вы загружаете с Serial, Framework STM32Duino предполагает, что у вас установлен загрузочный загрузчик, на самом деле он компилирует и загружает эскиз для адреса 0x08002000.
Если у вас нет загрузчика, то в следующем перезапуске MCU ничего не найдет на 0x08000000 и, следовательно, не запустит ваш эскиз..
Извините, я дважды проверил и с помощью последовательной загрузки код скомпилирован для адреса по телефону 0x08000000, поэтому, пожалуйста, игнорируйте то, что я написал..
Если у вас нет загрузчика, то в следующем перезапуске MCU ничего не найдет на 0x08000000 и, следовательно, не запустит ваш эскиз..
Извините, я дважды проверил и с помощью последовательной загрузки код скомпилирован для адреса по телефону 0x08000000, поэтому, пожалуйста, игнорируйте то, что я написал..
гравер
Пн 27 марта 2017 г. 15:13
@edogaldo Спасибо, что нашли время ответить. Для меня код компилируется для 0x08000000 как для серийного, так и для ST-Link.
Изменение сериала. для серийного1. позаботился о мониторе. Это небольшая боль, чтобы переключаться между Com1 (ST-Link) и COM59 (серийный монитор), но она работает. Спасибо за помощь!
Поскольку удобно использовать 4-булавский заголовок в конце синей таблетки, я, вероятно, буду использовать ST Link для программирования. Мне придется сделать поиск, чтобы увидеть, что я могу сделать со ST-Link. Прошло много времени с тех пор, как я использовал лед. С тех пор, как я начал использовать Arduino, у меня не было ничего для отладки, кроме серийного монитора.
Поскольку я могу в конечном итоге использовать как «USB-сериал», так и «ST-Link» для программирования, я собираюсь настроить свой код как код как
#define Serial Serial1. // или сериал.
Сериал.Печать станет серийным.Печать, которая станет последовательной.Печать или сериал1.Печать на основе оператора #Define. Таким образом, я могу изменить код, изменив сериал #Define на сериал. или serial1. Или есть лучший способ сделать это?
Изменение сериала. для серийного1. позаботился о мониторе. Это небольшая боль, чтобы переключаться между Com1 (ST-Link) и COM59 (серийный монитор), но она работает. Спасибо за помощь!
Поскольку удобно использовать 4-булавский заголовок в конце синей таблетки, я, вероятно, буду использовать ST Link для программирования. Мне придется сделать поиск, чтобы увидеть, что я могу сделать со ST-Link. Прошло много времени с тех пор, как я использовал лед. С тех пор, как я начал использовать Arduino, у меня не было ничего для отладки, кроме серийного монитора.
Поскольку я могу в конечном итоге использовать как «USB-сериал», так и «ST-Link» для программирования, я собираюсь настроить свой код как код как
#define Serial Serial1. // или сериал.
Сериал.Печать станет серийным.Печать, которая станет последовательной.Печать или сериал1.Печать на основе оператора #Define. Таким образом, я могу изменить код, изменив сериал #Define на сериал. или serial1. Или есть лучший способ сделать это?
гравер
Пн 27 марта 2017 г. 15:19
Я использую загрузчик, который появился на синей таблетке. Будет ли STM32duino-Bootloader от https: // github.com/rogerclarkmelbourne/ ... загрузчик Исправьте проблему, которая была у меня при загрузке кода через USB на сериал?
гравер
Пн 27 марта 2017 г. 16:11
Ну, после игры с
#define PRINT_INFO
#define SERIAL Serial //or Serial1 if using the st-link
гравер
Вт 28 марта 2017 г. 1:32 утра
Ну, это вернулось к тому, что делал раньше. Он загружается в оперативную память и уходит после велосипедного мощности или нажатия сброса. То же самое с использованием ST-Link или USB для серийного TTL. Я готов кричать!
гравер
Вт 28 марта 2017 г. 2:16 утра
Настроен для загрузки ST-Link. ST-Link на com1
Это код, который я использовал для тестирования на штифты PWM. Под кодом вывод компиляции.
Я потратил более 30 часов на это. Я готов бросить все STM32 в мусор.
Я не вижу ничего, что красное флаг!
Это код, который я использовал для тестирования на штифты PWM. Под кодом вывод компиляции.
Я потратил более 30 часов на это. Я готов бросить все STM32 в мусор.
Я не вижу ничего, что красное флаг!
#define MAX_LEVEL 65535
//+++++++++++++++++++++++++++++++++++++++++++++++++setup++++++++++++++++++++++++++++++
void setup() {
for(int i=0;i<=31;i++)
{
pinMode(i,PWM);
pwmWrite(i,0);
}
}//------------------end of setup--------------
//+++++++++++++++++++++++++++++++++++++++++++++++ main loop() +++++++++++++++++++++++++++++
void loop() {
for(int index=0;index<=31;index++)
{
for(int level=0;level<=MAX_LEVEL;level += 50)
{
pwmWrite(index, level);
delay(1);
}//end of increase level
for(int level = MAX_LEVEL; level >= 0;level -= 50)
{
pwmWrite(index, level);
delay(1);
}//end of decrease level
pwmWrite(index, 0);
}//end of index loop
}//------------------------------------end of main loop ----------------------------------------------
Стивестронг
Вт 28 марта 2017 г. 8:54 утра
Grassm написал:
//+++++++++++++++++++++++++++++++++++++++++++++++++setup++++++++++++++++++++++++++++++
void setup() {
for(int i=0;i<=31;i++)
{
pinMode(i,PWM);
pwmWrite(i,0);
}
}//------------------end of setup--------------
гравер
Вт 28 марта 2017 г. 16:46
Привет, Стив,
Тогда как последовательно переходить через булавки?
Тогда как последовательно переходить через булавки?
Эдогальдо
Вт 28 марта 2017 г. 16:52
Grassm написал:Привет, Стив,
Тогда как последовательно переходить через булавки?
Тогда как последовательно переходить через булавки?
гравер
Вторник 28 марта 2017 г. 18:08
Привет, Стив,
Я никогда не помню ничего об этом массиве. Это не значит, что я никогда не видел этого; Я просто не помню этого. В 66 лет я забыл быстрее, чем могу научиться.
Я изменил свой код и добился некоторого прогресса. То, как я обращался/настраивал выводы, вызывало проблемы.
Похоже, я могу обратиться к булавкам по имени целочисленного целого числа в цифровом режиме, и все в порядке, но не нравится при выполнении ШИМ.
У меня есть некоторое тестирование, и если все это соберется, я опубликую то, что найду.
еще раз спасибо. Я действительно могу тебе!
Я никогда не помню ничего об этом массиве. Это не значит, что я никогда не видел этого; Я просто не помню этого. В 66 лет я забыл быстрее, чем могу научиться.
Я изменил свой код и добился некоторого прогресса. То, как я обращался/настраивал выводы, вызывало проблемы.
Похоже, я могу обратиться к булавкам по имени целочисленного целого числа в цифровом режиме, и все в порядке, но не нравится при выполнении ШИМ.
У меня есть некоторое тестирование, и если все это соберется, я опубликую то, что найду.
еще раз спасибо. Я действительно могу тебе!
гравер
Вт 28 марта 2017 г., 21:52
@edogaldo и stevestestrong не понимали, что вы оба помогли с названием PIN -кода. Спасибо вам обоим.
После того, как я полностью протестирован, я помежу это как решенное и приведя к результатам.
После того, как я полностью протестирован, я помежу это как решенное и приведя к результатам.
гравер
Ср 29 марта 2017 г., 4:07
Большое спасибо Эдогальдо и Стивесструнгу за их помощь.
Решено:
Я обращался к булавкам, используя массив, который содержал номер PIN -кода в том порядке, в котором я их хотел. Я бы сделал бы pwmwrite (1, значение).
Решено:
Я обращался к булавкам, используя массив, который содержал номер PIN -кода в том порядке, в котором я их хотел. Я бы сделал бы pwmwrite (1, значение).
// A8, A11, B1, B0, A7, A6, A3, A2, A1, A0, B6, B7
int ledPin[] = { 8, 11, 17, 16, 7, 6, 3, 2, 1, 0, 22, 23 }; //organize all PWM pins best layout order.
гравер
Пт 31 марта 2017 г. 2:56 утра
Ну, может быть, я говорил слишком рано. Я использовал аналоговую запись (Boardpwmpins [index], значение). Когда я переоделся на PWMWrite (Boudpwmpins [index], значение); Код пропустит первый и последний пин -код доски.CCP объявил массив. После некоторого царапины головы, резервного копирования до последнего знания хорошей кодовой версии и изменяя небольшие детали за раз, оказывается, что если я использую аналоговую запись (boardpwmpins [index], значение), тогда он больше не пропускает 1 -е и последнее штифт массива. Когда я говорю, Skip, я имею в виду, что UC обрабатывает оператор, но подключенный к ним пин/светодиод не отвечает. Я проверял это несколько раз. Моя Сент-Линк перестала работать Итак, я вернулся к использованию USB для серийного TTL. Используя серийный монитор (который испортит контакты A9 и A10), я распечатал номер индекса в Bordpwmpin [] и значение из массива. Эти печатные выходы всегда были правильными и всегда одинаковыми.
Итак, я не уверен, что происходит, но это кажется ошибкой. Может быть, мой код. Программа (Hate the Word Sketch) имеет основную вкладку (с основной циклом и настройкой) вместе с 12 другими вкладками для разных последовательностей. Я не использую .c или что -нибудь, так что это становится .Ино.
На фоне: прошло много времени с тех пор, как я запрограммировал в Turbo C (1996), и я не смог получить .c или .Расширения файлов CCP для работы. У меня было обучение по программированию, но это был Гулд Сел в 1988 году. У меня тоже был Паскаль. Никогда не имел повесы. Большая часть остальной части моего программирования была в ASM86. Если кто -то хочет посмотреть на мой код, я могу застегнуть каталог и отправить его. Или я мог бы вырезать и вставить все это в кодовые кронштейны.
Я пошел с STM32, потому что мне нужно было больше штифтов ШИМ, чем Nano или Mini предоставляют.
Программа предназначена для большой световой планки для парада. Так что это не важно. Только последовательность Рыцаря -Райдера нуждалась в ШИМ для зацепленных светодиодов.
Итак, я не уверен, что происходит, но это кажется ошибкой. Может быть, мой код. Программа (Hate the Word Sketch) имеет основную вкладку (с основной циклом и настройкой) вместе с 12 другими вкладками для разных последовательностей. Я не использую .c или что -нибудь, так что это становится .Ино.
На фоне: прошло много времени с тех пор, как я запрограммировал в Turbo C (1996), и я не смог получить .c или .Расширения файлов CCP для работы. У меня было обучение по программированию, но это был Гулд Сел в 1988 году. У меня тоже был Паскаль. Никогда не имел повесы. Большая часть остальной части моего программирования была в ASM86. Если кто -то хочет посмотреть на мой код, я могу застегнуть каталог и отправить его. Или я мог бы вырезать и вставить все это в кодовые кронштейны.
Я пошел с STM32, потому что мне нужно было больше штифтов ШИМ, чем Nano или Mini предоставляют.
Программа предназначена для большой световой планки для парада. Так что это не важно. Только последовательность Рыцаря -Райдера нуждалась в ШИМ для зацепленных светодиодов.
Стивестронг
Пт 31 марта 2017 г. 7:20 утра
Вы можете опубликовать код на GitHub, чтобы он был записан для бесконечности
Затем мы можем посмотреть на это.
Затем мы можем посмотреть на это.
Эдогальдо
Пт 31 марта 2017 г. 10:50 утра
Grassm написал:Ну, может быть, я говорил слишком рано. Я использовал аналоговую запись (Boardpwmpins [index], значение). Когда я переоделся на PWMWrite (Boudpwmpins [index], значение); [...]
гравер
SAT 01 апреля 2017 12:26
@ Эдогальдо да, я знаю об этих двух различиях. Я все еще буду играть с этим; Мне не нравится не понимать, что происходит. Вот почему я так люблю сборку; Я могу контролировать почти все! Я сделал инициализированные выводы, прежде чем использовать заявления PWMWrite (,). Если я не использую оператор Analogwrite (,) на всех контактах хотя бы один раз, некоторые из них не работают так, как они должны, когда я использую Pwmwrite (). Как я уже сказал. У меня есть Segger J-Link. Теперь мне действительно нужно в этом.
@stevestrong: я никогда не писал на Github, но я посмотрю на него. Это не значит, что кто -то собирается заработать деньги из этого кода. Позвольте мне просмотреть код еще пару раз, а потом я посмотрю, что я должен сделать, чтобы опубликовать его.
Еще раз спасибо вам обоим за вашу помощь. Нет ничего хуже, чем быть в одиночестве с проблемой.
Ваше здоровье!
@stevestrong: я никогда не писал на Github, но я посмотрю на него. Это не значит, что кто -то собирается заработать деньги из этого кода. Позвольте мне просмотреть код еще пару раз, а потом я посмотрю, что я должен сделать, чтобы опубликовать его.
Еще раз спасибо вам обоим за вашу помощь. Нет ничего хуже, чем быть в одиночестве с проблемой.
Ваше здоровье!
гравер
SAT 01 апреля 2017 г. 3:14
ОК, Стив, я думаю, что у меня есть правильно настроить на GitHub. https: // github.com/Grassm/светодиодный свет-шпилочный сериал
Первый раз, чтобы я сделал что -то не так; дайте мне знать. Видео тоже работает.
еще раз спасибо!
Первый раз, чтобы я сделал что -то не так; дайте мне знать. Видео тоже работает.
еще раз спасибо!
ZMEMW16
SAT 01 апреля 2017 3:22
Я надеюсь, что у вас была защита глаз на
гравер
SAT 01 апреля 2017 3:34
zmemw16 я не смотрю прямо на это!
ZMEMW16
SAT 01 апреля 2017 3:41
Это было достаточно плохо для камеры, я тоже мигал, а также несколько точек
Эдогальдо
SAT 01 апреля 2017 г., 6:20 утра
Grassm написал:ОК, Стив, я думаю, что у меня есть правильно настроить на GitHub. https: // github.com/Grassm/светодиодный свет-шпилочный сериал
Первый раз, чтобы я сделал что -то не так; дайте мне знать. Видео тоже работает.
еще раз спасибо!
Первый раз, чтобы я сделал что -то не так; дайте мне знать. Видео тоже работает.
еще раз спасибо!
Стивестронг
SAT 01 апреля 2017 г. 9:26 утра
Правильная последовательность инициализации штифта должна выглядеть так (как также упомянул Эдогальдо):
for (index =FIRST_LED; index<= LAST_LED; index++)
{
pinMode(boardPWMPins[index], PWM );
pwmWrite(boardPWMPins[index],0);
}
гравер
SAT 01 апреля 2017 14:12
Эдольдаго и Стивестронг:
Я всегда поражаюсь, как я могу посмотреть на что -то по крайней мере 100 раз и не видеть это!
Я вернулся к тому, когда я конвертировал из аналога в pwmwrite, и это было все время.
Я всегда поражаюсь, как я могу посмотреть на что -то по крайней мере 100 раз и не видеть это!
Я вернулся к тому, когда я конвертировал из аналога в pwmwrite, и это было все время.
for (inDex =FIRST_LED; inDex<= LAST_LED; inDex++)
{
pinMode(inDex, PWM );
pwmWrite(boardPWMPins[inDex],0);
#ifdef PRINT_INFO
SERIAL.println( boardPWMPins[inDex] );
#endif
}
гравер
SAT 01 апреля 2017 14:25
Стив,
Я все еще смущен вашим комментарием: Стивестронг написал:
Тем не менее, индексация массива по -прежнему опасна, потому что Last_Led может быть (случайно) выше, чем SizeOf (BORDPWMPINS []). Как бы вы закодировали петлю для индекса var? Я не спорю с тобой; Я серьезно хочу учиться! Я хорошо знаю, я тоже не самый острый в сарае! Какой лучший способ сделать эту инициализацию PIN -кода?
...и не уверен в правильном способе использования форума »Цитата."Мне пришлось вручную поместить тест в цитату, но оно заканчивается в реальной цитате. Ваш появляется на линии с большой кавычками.
Я все еще смущен вашим комментарием: Стивестронг написал:
Тем не менее, индексация массива по -прежнему опасна, потому что Last_Led может быть (случайно) выше, чем SizeOf (BORDPWMPINS []). Как бы вы закодировали петлю для индекса var? Я не спорю с тобой; Я серьезно хочу учиться! Я хорошо знаю, я тоже не самый острый в сарае! Какой лучший способ сделать эту инициализацию PIN -кода?
...и не уверен в правильном способе использования форума »Цитата."Мне пришлось вручную поместить тест в цитату, но оно заканчивается в реальной цитате. Ваш появляется на линии с большой кавычками.
Стивестронг
SAT 01 апреля 2017 14:34
- Как процитировать? Нажмите знака кавычки, который вы хотите цитировать (вверху справа).
Или введите:
Или введите:
[quote="stevestrong"] bla bla [/quote]
гравер
SAT 01 апреля 2017 г. 15:01
Ааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааа! Старый размер. Очевидно, что я не использую достаточно. и имеет смысл. По моему мнению (где я довольно часто ошибаюсь), моя мысль заключалась в том, что «чужой код не может знать, сколько светодиодов или элементов в моем массиве. И, если они изменят свой код, делая его меньше, чем мне нужно, это сломает мой код. Ну, это сломает мой код в любом случае. Итак, да, я вижу вашу точку зрения и согласен. Sizeof () - это способ сделать это.
Теперь, если бы мне понадобилось только 10 из 12 булавок, было бы лучше кодировать это как
Теперь, если бы мне понадобилось только 10 из 12 булавок, было бы лучше кодировать это как
for (index=0; index<=sizeof(boardPWMPins[])/sizeof(uint8_t)); index++)
{
if( index > sizeof(boardPWMPins[]) Serial.println( "index exceeds array size")
else
{
pinMode(boardPWMPins[index], PWM );
pwmWrite(boardPWMPins[index],0);
}
}
Стивестронг
SAT 01 апреля 2017 г., 8:40 вечера
Если индекс вашего условия всегда будет меньше, чем размер.