roboforum.ru

Технический форум по робототехнике.

Датчик касания оптический, триангуляция

Обсуждение технологии печати на 3D принтерах. Самостоятельное изготовление и приобретение. RepRap и его последователи.

Re: Датчик касания оптический, триангуляция

Сообщение dccharacter » 16 дек 2015, 07:05

shutter надо читать зараз, иначе читается мусор. Но перепиливать неохота, потом

Добавлено спустя 2 минуты 13 секунд:
Dmitry__ писал(а):Ну почему нельзя? Реализовывай и на компе декодировку slip. Будет твой массив чики-пуки.
Потому что на стороне дуни периодически приходится пихать в массив два байта вместо одного, а размер жестко заданный

Добавлено спустя 1 минуту 59 секунд:
Dmitry__ писал(а):Мой вариант легко масштабируется, захочу я завтра вместе с массивом отсылать все регистры, просто увеличу на передающей и принимающей стороне размер массива и все.

Мой вариант тоже масштабируется. Ты только завтра захочешь, а он уже сегодня отсылает :-)
Вложения
squal.jpg
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Датчик касания оптический, триангуляция

Сообщение Dmitry__ » 16 дек 2015, 07:23

dccharacter писал(а):shutter надо читать зараз, иначе читается мусор. Но перепиливать неохота, потом

Ну в пдф сказано сначала h байт, потом l байт читать, я так и делаю. На приемной его надо клеить нормально: h-байт * 256 + l-байт

dccharacter писал(а):Потому что на стороне дуни периодически приходится пихать в массив два байта вместо одного, а размер жестко заданный

Так ты slip реализовывай не в массиве. На передающей стороне получил фиксир. кадр отправил плавающим slip-ом. На приемной стороне принимаешь декодером плавающий slip, заполняешь фиксир. кадр.
dccharacter писал(а):Мой вариант тоже масштабируется. Ты только завтра захочешь, а он уже сегодня отсылает

Молодец :) С левой или правой стороны хорошо бы читались, чтоб глаз от картинки не отрывать во время просмотра других данных.
Я так и не понял, что было и как победил однокадровость? Подстройка "Wait response, msec:" запускает поток? Сколько кадров в сек. дает твоя пзс?
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Датчик касания оптический, триангуляция

Сообщение dccharacter » 16 дек 2015, 08:24

Dmitry__ писал(а):Ну в пдф сказано сначала h байт, потом l байт читать, я так и делаю. На приемной его надо клеить нормально: h-байт * 256 + l-байт

Извините, погорячился. Там же нет bulk read

Добавлено спустя 6 минут 33 секунды:
Dmitry__ писал(а):Так ты slip реализовывай не в массиве. На передающей стороне получил фиксир. кадр отправил плавающим slip-ом. На приемной стороне принимаешь декодером плавающий slip, заполняешь фиксир. кадр.

Туплю уже. Я же именно так и сделал :lol:

Добавлено спустя 39 минут 29 секунд:
Блин, какое же уродство это ардуино
Попытался перенести функцию на другую ногу и все, погряз в дефайнах навсегда, нихрена не работает :-(
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Датчик касания оптический, триангуляция

Сообщение Madf » 16 дек 2015, 12:04

Плавно тема перешла в "микро камера". :D
Поглядев на вас, тоже слюна потекла, взял себе тоже парочку.
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Re: Датчик касания оптический, триангуляция

Сообщение dccharacter » 16 дек 2015, 12:49

Я запилил структуру и начал код растаскивать по файлам (очень меня расстроило, что я тупо не смог поменять пин на дуне)
В итоге компилится и заливается в дуню, но какая-то дурь происходил и на delay() все подвисает...
Вложения
ADNS.zip
(5.87 КиБ) Скачиваний: 0
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Датчик касания оптический, триангуляция

Сообщение Dmitry__ » 16 дек 2015, 15:18

dccharacter писал(а):Попытался перенести функцию на другую ногу и все, погряз в дефайнах навсегда, нихрена не работает

Конкретный пример можно? Где не получилось? С дефайнами как раз просто перенести ногу. У каждого пина есть набор параметров: бит (маска в байте), порт настройки, порт ввода и порт вывода. Если тебе, например, надо pin_nCS перенести в другое место, которое сейчас: pin_nCS_bit = 2, порт настройки pin_nCS_DDR = DDRB, вывода pin_nCS_PORT = PORTB. А надо перенести на PD3, то получаем: бит 3, порт настройки DDRD, вывода PORTD. Порт ввода на pin_nCS выкидываем, ибо он не перенастраивается на ввод как двунаправленный pin_SDIO. А сами дефайны работы с пином не трогаем, они сами создадут одну инструкцию контроллера из дефайнов определения. Эти не трогаем:
Код: Выделить всёРазвернуть
#define   pin_nCS_Mode_OUTPUT      pin_nCS_DDR         |= (1<<pin_nCS_bit)
#define   pin_nCS_LOW            pin_nCS_PORT      &=~(1<<pin_nCS_bit)
#define   pin_nCS_HIGH         pin_nCS_PORT      |= (1<<pin_nCS_bit)


Твой код:
Код: Выделить всёРазвернуть
void SPI_nCS_HIGH(void) {
    pin_nCS_HIGH;
}

Вот прикинь, что ты делаешь. Ты одну инструкцию контроллера "pin_nCS_HIGH" засунул в функцию, которая откомпилится в call контроллера. Т.е. вместо одной инструкции установки бита, ты вызываешь подпрограмму, контроллер кладет в стек адрес возврата, переходит на call, там выполняет одну инструкцию, а потом по return забирает адрес возврата из стека и возвращается в программу. Т.е. вместо 2-х машинных тактов установки бита, получаем: call +4, set bit +2, return +4. А дергать pin_nCS нам надо на максимальной скорости контроллера. И я не понимаю улучшения написания: SPI_nCS_HIGH(); вместо SPI_nCS_HIGH;. Собрано все худшее в одном месте. Хорош быдлокодить :)

Добавлено спустя 2 минуты 35 секунд:
Раскидать 2 файла исходников на 13 файлов, меня убило совсем.
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Датчик касания оптический, триангуляция

Сообщение dccharacter » 16 дек 2015, 19:23

Dmitry__ писал(а):Конкретный пример можно? Где не получилось?

Ха, если б я знал, я б тебе сказал, что не так. Про дефайны и дерганье ногами все понятно - я ж ну не совсем дерево :-). Короче сначала была проблема (с самого начала) со светодиодом (кажись у тебя 9 нога по дефолту под него) - не дергался и все. Ну я потыркался чуток и просто параллельно стал показывать статус лапой 8 через родные функции дуни. А потом я решил перенести клок с 13 ноги на 10-ю что ли, и сломалось вообще все, причем как - непонятно, ноги продолжали дергаться (осциллом смотрел), а данные на комп уходить перестали.

Добавлено спустя 1 минуту 2 секунды:
Dmitry__ писал(а):Вот прикинь, что ты делаешь.

Ну я не специально :-( Я не настоящий электрик :-(

Добавлено спустя 1 минуту 3 секунды:
Dmitry__ писал(а):Раскидать 2 файла исходников на 13 файлов, меня убило совсем.

Попробуй добавить драйвер под ПИК и под СТМ в свою прогу, а потом в мою (мою сначала допилить надо, там все костылями пока обставлено) :-)

Добавлено спустя 2 минуты 43 секунды:
Но пока, за те 10 минут, что я успел поиграться с датчиком прежде чем все сломалось, у меня есть ощущение, что maxPixel - это дорога в никуда. Мне пока понравился shutter - очень хорошо его скорее всего получится комбинировать с minPixel. Короче, если я когда нибудь своего франкинштейна запущу, то будем экспериментить
И да, ты прав - запустить голову в стол - раз плюнуть.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Датчик касания оптический, триангуляция

Сообщение Dmitry__ » 16 дек 2015, 20:04

dccharacter писал(а): Короче сначала была проблема (с самого начала) со светодиодом (кажись у тебя 9 нога по дефолту под него) - не дергался и все.

Я на дуине нано вообще не проверял лед, забиндил и забыл. Основные проверки были с тинькой. В иде ардуино я столкнулся с тем, что неправильно отрабатываются #ifdef, #ifndef. Стал все переводить на #if defined(...). Для тестов с тинькой при вкл. flg_serial_debug отключил светодиод (мало пинов). Т.е. он отрабатывается в никуда :). Если #if defined(...) тоже некорректно работает в иде, то может отработать ветка откл. леда и у тебя, посмотри может тут собака порылась:
Код: Выделить всёРазвернуть
#if defined(flg_serial_debug) && defined(__AVR_ATtiny85__)
   #define   pin_led_Mode_OUTPUT      1
   #define   pin_led_HIGH         1
   #define   pin_led_LOW            1
   #define   pin_led_Toggle         1
#else
   #define   pin_led_Mode_OUTPUT      pin_led_DDR         |= (1<<pin_led_bit)
   #define   pin_led_HIGH         pin_led_PORT      &=~(1<<pin_led_bit)
   #define   pin_led_LOW            pin_led_PORT      |=(1<<pin_led_bit)
   #define   pin_led_Toggle         pin_led_PORT      ^=(1<<pin_led_bit)
#endif

dccharacter писал(а):Мне пока понравился shutter - очень хорошо его скорее всего получится комбинировать с minPixel

Аналогичные мысли, я вообще ушел в глубокие раздумья, мне надо переспать со всеми этими мыслями, а то баракуда ручки свои потирает :)
dccharacter писал(а):И да, ты прав - запустить голову в стол - раз плюнуть.

У меня принтер уже давно не принтер, тестовый станок датчика. Координата "z" раз 10 выскакивала из крепежа, а одну шпильку привода "z" как-то стало сильно колбасить. Когда-нибудь я оторву все эти датчики от него, настрою стол по часовому индикатору и дам принтеру жевать его любимый пластик :D

Добавлено спустя 2 минуты 42 секунды:
dccharacter писал(а):Но пока, за те 10 минут, что я успел поиграться с датчиком прежде чем все сломалось

Он физически сломался или логически? Тебе дать мой рабочий исходник? :)

Добавлено спустя 10 минут 8 секунд:
Madf писал(а):Поглядев на вас, тоже слюна потекла, взял себе тоже парочку.

Ты чего? :shock: За эти деньги на блошином рынке можно купить штук 5 пзс в виде мышек по 30рэ.
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Датчик касания оптический, триангуляция

Сообщение dccharacter » 16 дек 2015, 20:13

Мне те же датчики едут с ебая, жду в январе. Просто повезло мышу найти с 2610. Если пожгу - все, аля улю

Добавлено спустя 1 минуту 28 секунд:
Твой рабочий исходник у меня в гите и в первом сообщении, так что не надо :-)
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Датчик касания оптический, триангуляция

Сообщение dccharacter » 17 дек 2015, 03:48

Взял твой исходник снова, и че-т какой-то мусор рандомный на картинке :-(
В смысле картинка есть, но процентов 20 пикселей серые, рандомно (или почти рандомно) перемещающиеся по экрану. Отловил на том, что с частотой герца 2 значения maxPixel и вот этих вот всех вот этих регистров становится отрицательным (небось 0xFF)

Добавлено спустя 4 минуты 45 секунд:
Скорость УАРТА снижал, на аппаратный SPI переходил, все та же фигня

Добавлено спустя 3 минуты 17 секунд:
У тебя ошибка, кстати. ADNS_reset зовется как макрос, а жто функция
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Датчик касания оптический, триангуляция

Сообщение Dmitry__ » 17 дек 2015, 04:28

Скриншот давай. В ПК проге менял чего-нибудь? Я так в создании палитры накосячил, вся картинка была из 2-х градаций. А еще там есть глюк, не его ли ты словил со своим украшательством? :)
Если "#define MaskBitData" сделать не цифрами 64, 128, а как положено: 2^6, 2^7, то тупой кьют не умеет это правильно считать. И хоть ты там все обвесь скобками приоритетов. Признавайся, украшатель ты наш :roll:

Добавлено спустя 7 минут 32 секунды:
Я понимаю, что отвечать на вопросы не круто :), но я настырный, собрал все вопросы в кучу с последних 2-х страниц.

Ты в вендах? Каких?
Я так и не понял, что было и как победил однокадровость?
Подстройка "Wait response, msec:" запускает поток?
Сколько кадров в сек. дает твоя пзс?
В каких трусах ты ходишь? (тест на "прочитал") :D
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Датчик касания оптический, триангуляция

Сообщение dccharacter » 17 дек 2015, 05:54

Win7 x64
Однокадровость победил response.clear() при получении байта окончания фрейма (помнишь, у меня SLIP?)
хз, сколко кадров, пока не занимался, тут основной функционал не пашет пока
Прочитал

Добавлено спустя 3 минуты 8 секунд:
А еще щас с дитем ходили в обсерваторию
Видел Андромеду и Ороион (М31 и М42)
:Yahoo!: <- Дите попросила вставить смайлик

Добавлено спустя 14 минут 27 секунд:
"#define MaskBitData" не трогал

Добавлено спустя 16 минут 31 секунду:
Еще у тебя при debug == 1 в начале цикла идет запись в конфигурационный регистр нахрена-то. Я это убрал (пишу always on однократно, в сетапе) и избавился от проблемы, показанной на скриншоте с ресетом фрейма
Вложения
screen.jpg
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Датчик касания оптический, триангуляция

Сообщение Dmitry__ » 17 дек 2015, 06:22

dccharacter писал(а):Однокадровость победил response.clear() при получении байта окончания фрейма (помнишь, у меня SLIP?)

Т.е. мой исходник нетронутый у тебя не заработал? Даже если крутить "Wait response, msec:" ?
dccharacter писал(а):хз, сколко кадров, пока не занимался, тут основной функционал не пашет пока

Так по обновлению картинки понятно, или по миганию светодиода tx, если есть такой. Примерную цифру скажи, плюс-минус трамвайная остановка.
dccharacter писал(а):А еще щас с дитем ходили в обсерваторию

Сейчас ходил? Т.е. в 5 утра? :shock:
dccharacter писал(а):Еще у тебя при debug == 1 в начале цикла идет запись в конфигурационный регистр нахрена-то. Я это убрал (пишу always on однократно, в сетапе)

Вот это у меня и не работало в сетапе, не включался режим "Always awake", только при многократной записи в основном цикле сработал "Always awake". Можно понять по яркости лазера. При вкл. этого режима, лазер должен гореть на полную яркость. Если этот режим не включится, то пзс будет тупить кадры и сильно понижать чутье. Что очень смахивает по картинке. Смещение по столбам у меня тоже есть, правда только на 1 столбик. Это из-за некорректного spi, я как-то добивался полностью нормальной картинки вставками задержек в разные места, но уменьшалась сильно скорость. Еще бывают редкие смещения всей картинки на один столбик. Пока забил на это. На моих прошлых видео картинка полностью корректная.
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Датчик касания оптический, триангуляция

Сообщение dccharacter » 17 дек 2015, 06:27

А еще я нифига не понимаю, как тебя работает чтение
Каждое чтение должно увеличивать счетчик пикселей. А ты там гоняешь read, пока флаг "валидные данные" не увидел. Но после каждого же рида должен увеличиваться счетчик. КАК? ПОЧЕМУ ОН НЕ УВЕЛИЧИВАЕТСЯ?
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Датчик касания оптический, триангуляция

Сообщение Dmitry__ » 17 дек 2015, 06:33

dccharacter писал(а):КАК? ПОЧЕМУ ОН НЕ УВЕЛИЧИВАЕТСЯ?

Патамучта он его увеличивает только при валидном состоянии, а читать этот регистр ты можешь быстрее чем его заполняет dsp.
Ты можешь вернуть в основной цикл запись "Always awake" и сравнить картинку?
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Пред.След.

Вернуться в 3D печать

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 41