Форум ModelldepO  

Вернуться   Форум ModelldepO > Моделизм > Электрика и DCC > Arduino
Ответ
 
Опции темы Опции просмотра
Старый 01.10.2017, 22:10   #126
xu56857
Московский модуль
 
Аватар для xu56857
 
Регистрация: 02.02.2015
Адрес: Москва
Сообщений: 941
Сказал(а) 'не согласен(а)'!: 9
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 3,980
Поблагодарили 3,306 раз(а) в 637 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (3321)
По умолчанию

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

Может также как то ?
xu56857 на форуме  
Вверх
Пользователь сказал cпасибо:
Старый 01.10.2017, 22:16   #127
shalex
Местный
 
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,858
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,648
Поблагодарили 3,274 раз(а) в 1,172 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
1 Всего
Репутация: репутация неоспорима (3285)
По умолчанию

Цитата:
Сообщение от xu56857 Посмотреть сообщение
Не знаю, можно ли сравнить, у меня на стрелочном пульте при включении и загрузки программы сначала опрашиваются тумблера и отправляются команды по адресам чтобы стрелки перевелись в соответствии с положением тумблеров.
А если рельсы в этот момент отключены, что произойдет?

Случилось ЧП, отрубилось питание на рельсах, на шину выдана команда PWR_OFF. Потом перевели тумблер, а потом включили питание и дали команду PWR_ON.

Собственно уже добавил в код проверку. И если питание отключено, то отправка не идет, стоит в очереди. Какое-то время можно щелкать тумблерами, но если долго, то прога зависнет. Надо делать проверку на переполнение и если оно было, то при по команде PWR_ON буфер чистить и отправлять вообще все что, есть.
shalex вне форума  
Вверх
Старый 01.10.2017, 22:25   #128
xu56857
Московский модуль
 
Аватар для xu56857
 
Регистрация: 02.02.2015
Адрес: Москва
Сообщений: 941
Сказал(а) 'не согласен(а)'!: 9
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 3,980
Поблагодарили 3,306 раз(а) в 637 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (3321)
По умолчанию

Цитата:
Сообщение от shalex Посмотреть сообщение
А если рельсы в этот момент отключены
Будет все хорошо )) , декодеры имею отдельное питание и команды тоже идут по отдельному проводу.
xu56857 на форуме  
Вверх
Пользователь сказал cпасибо:
Старый 01.10.2017, 22:33   #129
shalex
Местный
 
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,858
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,648
Поблагодарили 3,274 раз(а) в 1,172 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
1 Всего
Репутация: репутация неоспорима (3285)
По умолчанию

Цитата:
Сообщение от xu56857 Посмотреть сообщение
команды тоже идут по отдельному проводу.
В-смысле напрямую? Без всяких шин?
shalex вне форума  
Вверх
Старый 01.10.2017, 22:56   #130
Alexmit
Местный
 
Регистрация: 29.06.2010
Адрес: Москва
Сообщений: 2,837
Сказал(а) 'не согласен(а)'!: 6
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 972
Поблагодарили 2,652 раз(а) в 1,569 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
1 Всего
Репутация: репутация неоспорима (2678)
По умолчанию

Цитата:
Сообщение от shalex Посмотреть сообщение
В-смысле напрямую? Без всяких шин?
Там отдельная DCC шина. #201
Цитата:
Сообщение от shalex Посмотреть сообщение
Появился вопрос - а что именно должен уметь делать "тумблер" в качестве входного датчика?
Отправка датчика ОС - как база.
Основная задача - положение стрелки.
Цитата:
Сообщение от shalex Посмотреть сообщение
И что делать если тумблер переключили в момент когда рельсы "обесточены"? Оставить в буфере и отправить потом, когда рельсы включатся?
И какая тут логическая связь. Особенно на локонете. Сообщение отправили, станция поймала.
Для того локонет и делали чтоб от рельсов не зависеть.
Alexmit вне форума  
Вверх
Пользователь сказал cпасибо:
Старый 01.10.2017, 23:21   #131
shalex
Местный
 
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,858
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,648
Поблагодарили 3,274 раз(а) в 1,172 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
1 Всего
Репутация: репутация неоспорима (3285)
По умолчанию

Цитата:
Сообщение от Alexmit Посмотреть сообщение
И какая тут логическая связь. Особенно на локонете.
Возможно просто не пробовал. А КС потом отработает все эти события, интересно? Датчики и стрелки.
shalex вне форума  
Вверх
Старый 01.10.2017, 23:34   #132
Alexmit
Местный
 
Регистрация: 29.06.2010
Адрес: Москва
Сообщений: 2,837
Сказал(а) 'не согласен(а)'!: 6
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 972
Поблагодарили 2,652 раз(а) в 1,569 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
1 Всего
Репутация: репутация неоспорима (2678)
По умолчанию

Цитата:
Сообщение от shalex Посмотреть сообщение
А КС потом отработает все эти события, интересно? Датчики и стрелки.
Датчики она точно не отрабатывает, она их дальше в компьютер гонит.
А вот стрелочные команды надо проверить. И то это актуально для ситуации когда надо управлять стрелками по DCC.
Alexmit вне форума  
Вверх
Пользователь сказал cпасибо:
Старый 01.10.2017, 23:56   #133
shalex
Местный
 
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,858
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,648
Поблагодарили 3,274 раз(а) в 1,172 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
1 Всего
Репутация: репутация неоспорима (3285)
По умолчанию

Цитата:
Сообщение от Alexmit Посмотреть сообщение
А вот стрелочные команды надо проверить. И то это актуально для ситуации когда надо управлять стрелками по DCC.
Т.е. я так понял не волноваться, КС примет стрелочную команду по локонету, даже если рельсы выключены. Хотя если не примет, то можно и допилить это дело. Пусть потом стрелками дергает, отрабатывая переключения тумблера.
shalex вне форума  
Вверх
Старый 02.10.2017, 02:45   #134
Eprinter
Заглянувший
 
Аватар для Eprinter
 
Регистрация: 27.02.2017
Адрес: Нашенский
Сообщений: 147
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 302
Поблагодарили 439 раз(а) в 97 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: - очень-очень хороший человек (439)
По умолчанию

Цитата:
Сообщение от shalex Посмотреть сообщение
нужно ли добавлять возможность перевода стрелки по заданному адресу(что-то включать по стрелочному адресу)?
Упс, на заметил ещё пачку сообщений
Не совсем в тему попал, удаляю
Eprinter вне форума  
Вверх
Пользователь сказал cпасибо:
Старый 02.10.2017, 15:00   #135
Garri
Местный
 
Аватар для Garri
 
Регистрация: 22.07.2014
Адрес: Санкт Петербург
Сообщений: 1,431
Сказал(а) 'не согласен(а)'!: 18
Сказали 'не согласен'! 6 раз(а) в 5 сообщениях
Сказал(а) спасибо: 2,955
Поблагодарили 1,495 раз(а) в 715 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: обеспечил(а) себе прекрасное будущее (1506)
По умолчанию

Цитата:
Сообщение от shalex Посмотреть сообщение
Пожалуйста, в чем именно сложность?
В изготовлении платы, в домашних условиях явно не сделать качественно, только заказать партию.
Garri вне форума  
Вверх
Пользователь сказал cпасибо:
Старый 02.10.2017, 15:48   #136
shalex
Местный
 
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,858
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,648
Поблагодарили 3,274 раз(а) в 1,172 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
1 Всего
Репутация: репутация неоспорима (3285)
По умолчанию

согласен, для дом. условий надо переходить на навесные компоненты и одностороннюю плату. Но мне проще заказать, если тестовый вариант на макетке заработает. В данном случае все компоненты "главной" платы, да и все остальные протестированы в ЛУТе. Тут главная запара будет с софтом.
shalex вне форума  
Вверх
Пользователь сказал cпасибо:
Старый 02.10.2017, 22:55   #137
shalex
Местный
 
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,858
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,648
Поблагодарили 3,274 раз(а) в 1,172 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
1 Всего
Репутация: репутация неоспорима (3285)
По умолчанию

Пока успехи такие: создан черновой вариант кода, на базе предыдущих разработок.
К сожалению, управление 32 сервами уже просто не помещается (реализация плавности перехода между состояниями) плюс пока непонятно как detach делать на модуле PCA9685

Что поместилось:
- опрашивать и в случае изменений отправлять статусы датчиков 24 шт, адрес начала серии настраивается в CV
- программная задержка на отправку "свободен", что фильтрует плохой контакт и вообще полезно
- плюс при сработке датчика можно отправить либо датчик, либо стрелку либо и и то и другое(задается в CV)

- управляемые по стрелочным адреса 32 каналама PWM, но только для просто переключения между 2 уровнями PWM_HIGH и PWM_LOW (уровни задаются в CV, первый адрес тоже)

- управление КЗ и автореверс
- отправка датчика КЗ и команды Power Off при КЗ
- индикация режимов светодиодами
- традиционное чтение/запись CV по Loconet
- режим программирования с индикацией

Пока можно сэкономить 24 байта на CV настройки режима режима сработки датчика, если принять за правило, что если есть адрес стрелки в нужном CV, то отправлять еще и стрелочную команду, помимо "датчиковой".


Код:
Скетч использует 15462 байт (50%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 1573 байт (76%) динамической памяти, оставляя 475 байт для локальных переменных. Максимум: 2048 байт.
Недостаточно памяти, программа может работать нестабильно.
При этом на "память для локальных" очень покушаются две динамически "разбухаемые" очереди LN и I2C команд.
shalex вне форума  
Вверх
3 пользователя(ей) сказали cпасибо:
Старый 02.10.2017, 23:11   #138
Alexmit
Местный
 
Регистрация: 29.06.2010
Адрес: Москва
Сообщений: 2,837
Сказал(а) 'не согласен(а)'!: 6
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 972
Поблагодарили 2,652 раз(а) в 1,569 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
1 Всего
Репутация: репутация неоспорима (2678)
По умолчанию

Цитата:
Сообщение от shalex Посмотреть сообщение
К сожалению, управление 32 сервами уже просто не помещается (реализация плавности перехода между состояниями) плюс пока непонятно как detach делать на модуле PCA9685
Я же уже писал #40
Цитата:
Сообщение от shalex Посмотреть сообщение
- управляемые по стрелочным адреса 32 каналама PWM, но только для просто переключения между 2 уровнями PWM_HIGH и PWM_LOW (уровни задаются в CV, первый адрес тоже)
Про это тоже #86
Цитата:
Сообщение от shalex Посмотреть сообщение
Пока можно сэкономить 24 байта на CV настройки режима режима сработки датчика, если принять за правило, что если есть адрес стрелки в нужном CV, то отправлять еще и стрелочную команду, помимо "датчиковой".
По моему это будет мина замедленного действия. Я бы стрелочные команды убрал совсем.
Другое дело, что на основе схемы и кода можно будет сделать отдельный пульт.
Alexmit вне форума  
Вверх
3 пользователя(ей) сказали cпасибо:
Старый 02.10.2017, 23:44   #139
shalex
Местный
 
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,858
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,648
Поблагодарили 3,274 раз(а) в 1,172 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
1 Всего
Репутация: репутация неоспорима (3285)
По умолчанию

Цитата:
Сообщение от Alexmit Посмотреть сообщение
По моему это будет мина замедленного действия. Я бы стрелочные команды убрал совсем.
Другое дело, что на основе схемы и кода можно будет сделать отдельный пульт
Тогда оставлю CV для режима и пульт можно "сделать" только с помощью настроек CV. Ну и тумблеры подключить.

Цитата:
Сообщение от Alexmit Посмотреть сообщение
Про это тоже #86
Ну почему напрасно PCA9685 - 32 канала освещения уже хорошо. Немного допилить - и для двухцветных светофоров постоянного свечения можно использовать, как тот декодер по ссылке.

Цитата:
Сообщение от Alexmit Посмотреть сообщение
Я же уже писал #40
То, что нужно? спасибо большое!


...

В-общем "выкинул" весь отладочный текст и вывод в "сериал и теперь:
Код:
Скетч использует 14374 байт (46%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 1353 байт (66%) динамической памяти, оставляя 695 байт для локальных переменных. Максимум: 2048 байт.
Плюс теперь при старте два буфера команд LN и I2C проверяют - а хватит им обоим памяти. LN - 30 команд, I2C- 20 команд и еще остается целых 258 байт памяти (за один цикл выполняется по команде из каждого буфера).

Так что памяти еще немного есть, можно попробовать прикрутить плавный перевод PWM. Хотя много накладных расходов памяти, но можно попробовать.
shalex вне форума  
Вверх
2 пользователя(ей) сказали cпасибо:
Старый 03.10.2017, 02:41   #140
Eprinter
Заглянувший
 
Аватар для Eprinter
 
Регистрация: 27.02.2017
Адрес: Нашенский
Сообщений: 147
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 302
Поблагодарили 439 раз(а) в 97 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: - очень-очень хороший человек (439)
По умолчанию

Цитата:
Сообщение от shalex Посмотреть сообщение
К сожалению, управление 32 сервами уже просто не помещается
Я так понимаю, программа пишется в среде Ардуино?
Если да, то со временем (и при желании) можно будет переписать на "чистом" Си, или даже на Асме, тогда всё поместится )))
Eprinter вне форума  
Вверх
Пользователь сказал cпасибо:
Старый 03.10.2017, 08:09   #141
AleksSF
Пользователь
 
Аватар для AleksSF
 
Регистрация: 23.06.2016
Адрес: Санкт-Петербург
Сообщений: 925
Сказал(а) 'не согласен(а)'!: 25
Сказали 'не согласен'! 11 раз(а) в 11 сообщениях
Сказал(а) спасибо: 1,321
Поблагодарили 606 раз(а) в 318 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: - это имя известно всем (618)
По умолчанию

Цитата:
Сообщение от shalex Посмотреть сообщение
пока непонятно как detach делать на модуле PCA9685
Вообще то я пробовал управлять сервами без detach, никакого дребезга серв не было.
AleksSF вне форума  
Вверх
Пользователь сказал cпасибо:
Старый 03.10.2017, 08:57   #142
laba
Местный
 
Аватар для laba
 
Регистрация: 06.03.2009
Адрес: Питер
Сообщений: 3,693
Сказал(а) 'не согласен(а)'!: 10
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 6,942
Поблагодарили 4,844 раз(а) в 1,822 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: репутация неоспорима (5127)
По умолчанию

Цитата:
Сообщение от AleksSF Посмотреть сообщение
Вообще то я пробовал управлять сервами без detach, никакого дребезга серв не было.
ИМХОЭто если нагрузки на них нет. А когда серва, из-за нагрузки не дойдёт до нужного положения потенциометра, то тут и появится жужание.
__________________
HO, цифра, OpenDCC, S-88N, OpenCar, BiDiB
С приветом из подземки!!!
laba вне форума  
Вверх
2 пользователя(ей) сказали cпасибо:
Старый 03.10.2017, 13:00   #143
shalex
Местный
 
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,858
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,648
Поблагодарили 3,274 раз(а) в 1,172 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
1 Всего
Репутация: репутация неоспорима (3285)
По умолчанию

Цитата:
Сообщение от Eprinter Посмотреть сообщение
Я так понимаю, программа пишется в среде Ардуино?
Да, прога пишется на C++, который стандартный для Ардуино.
Очень много, да почти весь функционал, вынесен в библиотеку и оформлен в виде объектов. Один объект - на одну функцию(например
В основном же скетче, выполняется связывание всех компонентов воедино. Например, ниже обработчик сработок от ОС, который поддерживает три режима - отправку сенсора, отправку стрелочной команды или все вместе:
Код:
...
void notifyFBSensor(uint8_t index, uint8_t State){
  Serial.print("U FB:");
  Serial.print(index);
  Serial.print(" s:");
  Serial.println(State);
  switch (lncv[CV_FB_MODE_CH0 + index]) {
    case FB_MODE_FB_ONLY:
      CmdQueue.PushCmd(CMD_FEEDBACK, lncv[CV_ADDR + index], State, 0);
      break;
    case FB_MODE_TR_ONLY:
      CmdQueue.PushCmd(CMD_TURNOUT, lncv[CV_TRN_ADDR_CH0 + index], State, 0);
      break;      
    case FB_MODE_FB_TR:
      CmdQueue.PushCmd(CMD_FEEDBACK, lncv[CV_ADDR + index], State, 0);
      CmdQueue.PushCmd(CMD_TURNOUT, lncv[CV_TRN_ADDR_CH0 + index], State, 0);
    default:
      break;
  }
 ...
}


---------- Сообщение добавлено в 13:00 ---------- Предыдущие сообщение было в 12:56 ----------

Цитата:
Сообщение от Eprinter Посмотреть сообщение
Если да, то со временем (и при желании) можно будет переписать на "чистом" Си, или даже на Асме, тогда всё поместится )))
Этого как раз хочется избежать - переписывания.
shalex вне форума  
Вверх
2 пользователя(ей) сказали cпасибо:
Старый 03.10.2017, 17:09   #144
Eprinter
Заглянувший
 
Аватар для Eprinter
 
Регистрация: 27.02.2017
Адрес: Нашенский
Сообщений: 147
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 302
Поблагодарили 439 раз(а) в 97 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: - очень-очень хороший человек (439)
По умолчанию

Цитата:
Сообщение от shalex Посмотреть сообщение
Да, прога пишется на C++, который стандартный для Ардуино.
Это меняет дело. Если бы брались какие-то стандартные подпрограммы с просторов инета, тогда можно было бы со временем их оптимизировать. А так получается только ассемблер поможет впихнуть невпихиваемое.

оффтопик
Eprinter вне форума  
Вверх
Старый 03.10.2017, 17:23   #145
shalex
Местный
 
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,858
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,648
Поблагодарили 3,274 раз(а) в 1,172 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
1 Всего
Репутация: репутация неоспорима (3285)
По умолчанию

Цитата:
Сообщение от Eprinter Посмотреть сообщение
какие-то стандартные подпрограммы с просторов инета
А там, на просторах, особо ничего приличного нет из "стандартного" для применения в декодерах. Открытый код, который публикуют некоторые ардуинщики, иногда лучше просто сразу пропустить мимо, чтобы не терять время, т.к. судя по коду - даже не надо тестировать, чтобы понять, что работать не будет или будет, но с дикими ограничениями.

Собственно мне нравится, как написана библиотека Loconet - код выглядит очень неплохо. Ее и использую.
Вот, собственно, из стандартного - только несколько библиотек, чтобы "велосипеды" не плодить. Все остальное (библиотека классов) для моего проекта написано мной и с нуля. Может быть чутка взято из моих же предыдущих разработок. При этом я отдаю себе отчет, что мой код тоже не идеален, канеш.

Например, вот список подключенных модулей в основном скетче.
Первые четыре - "стандартные", а остальное - самописное:
Код:
#include <Wire.h>
#include <LocoNet.h>
#include <EEPROMex.h>
#include <MemoryFree.h>

#include <cmdqueue.h>
#include <shortctrl.h>
#include <dccctrl.h>
#include <sensors.h>
#include <prgctrl.h>
#include <i2cqueue.h>
#include <I2CPwrCtrl.h>
#include <fbmodes.h>

Последний раз редактировалось shalex; 03.10.2017 в 19:38.
shalex вне форума  
Вверх
3 пользователя(ей) сказали cпасибо:
Старый 04.10.2017, 00:23   #146
shalex
Местный
 
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,858
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,648
Поблагодарили 3,274 раз(а) в 1,172 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
1 Всего
Репутация: репутация неоспорима (3285)
По умолчанию

Очередной промежуточный итог...

самое главное - добавил для PWM режим плавного перевода из крайних состояний. Попробовал в отладке - вроде работает. На самой медленной скорости "1" одна серва переводится примерно 10 сек, десять серв примерно столько же, на 30 сотых позже. Нормально, в-общем. Правда тестировал без серв и плат PCA, закомментировав обработку ошибок инициализации I2C. Когда будет реальная отправка команд, самая медленная скорость сервы может стать еще медленнее и более того, зависеть от кол-ва плат Возможно и очень не сильно, все таки редко одновременно переводится много серв. На 1-2 будет совсем не заметно.

Все это удалось благодаря отказу от "штатной" библиотеки с реализацией очереди и написанию свои объектов очереди FIFO. На этом сэкономил память и теперь под буферы команд сразу бронируется память, поэтому без всяких сюрпризов переполнения. Дополнительно в обработчик команд I2C добавил опцию - теперь команды можно обрабатывать пачками регулируемого размера.

Алгоритмы тестирования запускаю цифрами через сериал-порт. Легко можно имитировать команды с пульта. Например, на команду в виде цифры "0" навесил одновременный перевод 10 стрелок Видимо скоро придется писать протокол на сериал-порт, чтобы уже по-серьезному нагружать, например из "терминала" какого нить запуская тестовые скрипты.

Код:
Скетч использует 13390 байт (43%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 1598 байт (78%) динамической памяти, оставляя 450 байт для локальных переменных. Максимум: 2048 байт.
Недостаточно памяти, программа может работать нестабильно.
Памяти на грани, но вроде пока хватает. В коде отсутствуют локальные переменные в виде больших массивов. Но не помешает еще раз проверить библиотеку локонета на этот же предмет.
shalex вне форума  
Вверх
2 пользователя(ей) сказали cпасибо:
Старый 04.10.2017, 08:19   #147
Qvan22
Заглянувший
 
Регистрация: 26.01.2013
Адрес: Минск
Сообщений: 204
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 1 раз в 1 сообщении
Сказал(а) спасибо: 456
Поблагодарили 454 раз(а) в 135 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
0 Всего
Репутация: - луч света в тёмном царстве (454)
По умолчанию

Цитата:
Сообщение от shalex Посмотреть сообщение
Памяти на грани, но вроде пока хватает. В коде отсутствуют локальные переменные в виде больших массивов. Но не помешает еще раз проверить библиотеку локонета на этот же предмет.
Создается впечатление, что ваше устройство уже выросло из ардуино нано, может уже имеет смысл рассмотреть вариант перехода на другие микроконтроллеры? Та же мега позволит избавится от сдвиговых регистров, а дополнительные серийные порты дадут возможность отлаживать программу прямо на макете или к ним можно будет подключать полноценные платы расширения...

А вот модули уже другая песня, там обычно простая рельсовая схема, и маленькое устройство на 4 сервы и 6-8 датчиков будет в самый раз. Посмотрите на пример на MiniMax, или то же T-Trak, почти везде одна ардуино нано перекроет все потребности в электронике, даже без плат расширения...
Qvan22 вне форума  
Вверх
2 пользователя(ей) сказали cпасибо:
Старый 04.10.2017, 11:29   #148
shalex
Местный
 
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,858
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,648
Поблагодарили 3,274 раз(а) в 1,172 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
1 Всего
Репутация: репутация неоспорима (3285)
По умолчанию

Цитата:
Сообщение от Qvan22 Посмотреть сообщение
А вот модули уже другая песня, там обычно простая рельсовая схема, и маленькое устройство на 4 сервы и 6-8 датчиков будет в самый раз.
Согласен, на это уже есть планы - мини-бустер. Текущий вариант устройства сгодится для домашнего макета или сильно напичканного модуля (станционного, например), где много путей, стрелок, зданий с освещением и т.д.

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

---------- Сообщение добавлено в 11:29 ---------- Предыдущие сообщение было в 11:27 ----------

Цитата:
Сообщение от Qvan22 Посмотреть сообщение
Создается впечатление, что ваше устройство уже выросло из ардуино нано, может уже имеет смысл рассмотреть вариант перехода на другие микроконтроллеры?
Пока рано! Еще осталось почти 400 байтов памяти, а значит можно и реализацию светофоров добавить
shalex вне форума  
Вверх
Старый 04.10.2017, 12:00   #149
shalex
Местный
 
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,858
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,648
Поблагодарили 3,274 раз(а) в 1,172 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
1 Всего
Репутация: репутация неоспорима (3285)
По умолчанию

Хотя на самом деле все не так оптимистично. Стрелочные адреса сейчас хранятся в формате byte, а значит возможна нумерация только с 1 до 255 Часть памяти может уйти на хранение длинных адресов, чтобы нумерация адресов была с 1 до 65535.

Плюс надо добавить реализацию светофоров, хотя бы простейших - с двумя огнями, управляемых по одному-двум стрелочным адресам. Поэтому есть вопрос - какие вообще типы светофоров чаще всего встречаются на макетах/модулях?

p.s. беглый поиск показал, что для РЖД надо 5 огней на светофор.

Последний раз редактировалось shalex; 04.10.2017 в 13:21.
shalex вне форума  
Вверх
Старый 04.10.2017, 14:12   #150
Alexmit
Местный
 
Регистрация: 29.06.2010
Адрес: Москва
Сообщений: 2,837
Сказал(а) 'не согласен(а)'!: 6
Сказали 'не согласен'! 2 раз(а) в 2 сообщениях
Сказал(а) спасибо: 972
Поблагодарили 2,652 раз(а) в 1,569 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
1 Всего
Репутация: репутация неоспорима (2678)
По умолчанию

Цитата:
Сообщение от shalex Посмотреть сообщение
Поэтому есть вопрос - какие вообще типы светофоров чаще всего встречаются на макетах/модулях?
Первые кандидаты это выходные на два огня и маневровые тоже два огня.
Модули с входным светофором только в планах, но потребность уже есть.
Плюс сильно зависит от того, у кого какая тематика. Поэтому это отдельная серьёзная тема.
Плюс не забывайте про размер модуля. Не так много на нём можно уместить.
Так же учитываем конструкцию светофора. По хорошему нужна будет плата с ключами.
Т.ч. пока имеет смысл ограничится 2 огнями.
Alexmit вне форума  
Вверх
Пользователь сказал cпасибо:
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
фото-детектор местной занятости. Tankist Электрика и DCC 55 03.04.2023 18:28
Детектор занятости блок-участков CD1 shabans79 Цифровая аппаратура Modelldepo 160 21.03.2023 21:19
Детектор занятости для шины s88 от LDT Alex_S Электрика и DCC 13 13.01.2015 13:36
Детектор занятости блок-участков CD1 kutepoff Цифровая аппаратура Modelldepo 41 19.07.2013 10:39
Детектор занятости pandrey Цифровая аппаратура Modelldepo 1 01.12.2010 21:30


Текущее время: 12:10. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Copyright © ModelldepO.ru 2006 -