Технический форум по робототехнике.
setar » 08 фев 2016, 14:13
затем ключевой момент - лазер вынесен для засветки вертикально вниз
forum107/topic15929-465.html#p344292Добавлено спустя 37 секунд:затем вот
forum107/topic15929-495.html#p344369Добавлено спустя 48 секунд:ну и сейчас пилю
forum107/topic15929-540.html#p346358
Dmitry__ » 08 фев 2016, 15:32
ales2k писал(а):Напряжение на постоянку +5v, не парился с включением с ноги, мне это не нужно.
SCL - D12
SDA - D10
Как в конфиге.
Debug 1(пробовал разные)
Serial аппаратный (просто текст выдает, то есть рабочий)
Тип Nano - компиляет, значит переменные установились как надо.
Случайно spi не аппаратный выставлен в конфиге? Лучше конфиги сюда залить, посмотрим.
С докой у нас все плохо

А, во, я же с этим чипом игрался, вечером попробую свои конфиги показать.
ales2k » 08 фев 2016, 15:36
Большой путь вами пройден.
Электронику в горячей зоне держать не хочу, поэтому, если получится,то все цепи управления уйдут наружу,
Снаружи у меня p328au уже трудится "сопроцессором" к основному контроллеру и довесить управление на нее никаких сложностей не вызовет.
Корпус попытаюсь сделать покомпактнее и с регулировкой фокусного расстояния (есть набор линзочек разных от указок и т.п.).
Конфиг
Потом скачал поновее, но тоже не заработало Конфиги там почти такие же, но под рукой их нет.
dccharacter » 08 фев 2016, 18:00
У меня вот тут конфигурация под нану (вроде даже запушил изменения):
https://github.com/dccharacter/RF3SensА, блин, не запушил

Попозже сделаю.
А что значит "не работает"? Видео в программу не выводит?
ales2k » 08 фев 2016, 18:24
Вообще ничего не выводит ни в одном режиме дебага.
dccharacter » 08 фев 2016, 18:29
Ну так надо траблшутить. Нана-то живая?
В дебаг_тайп_3 должно сыпать текст в консоль. Вставь там где-нибудь несколько принтлайнов ДО начала работы с датчиком.
ales2k » 08 фев 2016, 18:59
Нана живая с референсной библиотекой, даже изображение с датчика читает
dccharacter » 08 фев 2016, 19:08
А что за референсная библиотека? Ты только бблиотеку какую-то подменил или вообще прошивку другую зали и другой визуализатор?
ales2k » 08 фев 2016, 21:15
Dmitry__ » 08 фев 2016, 21:43
Превед "гит наше фсе!"
Кто следит за "Люди, мы думаем о вас"???
ales2k, не могу пока понять в чем дело. Надо пытать реформаторa, типа dccharacter-a...
Добавлено спустя 8 минут 6 секунд:Смотрю свой старый конфиг, отличия от гит:
- Код: Выделить всё • Развернуть
//pin_led
//PB5 D13
#define pin_led_bit 5
#define pin_led_DDR DDRD
#define pin_led_PORT PORTD
- Код: Выделить всё • Развернуть
//pin_led
//PB5 D13
#define pin_led_bit 5
#define pin_led_DDR DDRB
#define pin_led_PORT PORTB
Напомните, почему стало так?
dccharacter » 08 фев 2016, 21:47
привет привет
ну я вот думаю - простейший-то траблшутинг можно было сделать - светодиодом мигнуть или еще что. Что уж совсем с нуля не начинать. У меня-то все работает...
Dmitry__ » 08 фев 2016, 21:55
Нет уж, вписался? Помогай, без твоего гита я бы без вопросов помог...
dccharacter писал(а): У меня-то все работает...
Вооооооот, за это я не люблю кошек.
ales2k » 08 фев 2016, 22:56
Итак не работает этот кусок, подключение верное
while (1) {
temp_byte = ADNS_read(Pixel_Grab);Это отрабатывает
if (temp_byte & Pixel_data_valid) { тут вечный цикл
break;
}
ADNS_read() Всегда возвращает 0. что то с ним не так... будем посмотреть дальше
В то же время простейший код отрабатывает идеально
//-------------------------------------------------------
#define SDIO 12 //значения ставил как у вас и переключал физику, тоже работает.
#define SCLK 10 //
//-------------------------------------------------------
byte DriverRead(byte address)
{
pinMode (SDIO, OUTPUT);
for (byte i=128; i >0 ; i >>= 1)
{
digitalWrite (SCLK, LOW);
delayMicroseconds(10);
digitalWrite (SDIO, (address & i) != 0 ? HIGH : LOW);
delayMicroseconds(10);
digitalWrite (SCLK, HIGH);
delayMicroseconds(10);
}
delayMicroseconds(120);
pinMode (SDIO, INPUT);
byte res = 0;
for (byte i=128; i >0 ; i >>= 1)
{
digitalWrite (SCLK, LOW);
delayMicroseconds(10);
digitalWrite (SCLK, HIGH);
delayMicroseconds(10);
if( digitalRead (SDIO) == HIGH )
{
res |= i;
}
}
delayMicroseconds(100);
return res;
}
//-------------------------------------------------------
void DriverWrite(byte address, byte data)
{
address |= 0x80;
pinMode (SDIO, OUTPUT);
for (byte i = 128; i > 0 ; i >>= 1)
{
digitalWrite (SCLK, LOW);
delayMicroseconds(10);
digitalWrite (SDIO, (address & i) != 0 ? HIGH : LOW);
delayMicroseconds(10);
digitalWrite (SCLK, HIGH);
delayMicroseconds(10);
}
delayMicroseconds(120);
for (byte i = 128; i > 0 ; i >>= 1)
{
digitalWrite (SCLK, LOW);
delayMicroseconds(10);
digitalWrite (SDIO, (data & i) != 0 ? HIGH : LOW);
delayMicroseconds(10);
digitalWrite (SCLK, HIGH);
delayMicroseconds(10);
}
delayMicroseconds(100);
}
//-------------------------------------------------------
void DriverInit()
{
pinMode(SCLK, OUTPUT);
pinMode(SDIO, OUTPUT);
digitalWrite(SCLK, HIGH);
delayMicroseconds(5);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH);
delay(1025);
DriverWrite(0x00, 0x01);
delay(3000);
}
//-------------------------------------------------------
int DriverReadFrame(byte *arr, int len)
{
byte *pos=arr;
byte *uBound=arr+len;
unsigned long timeout = millis() + 1000;
byte val;
DriverWrite(0x08, 0x2A);
while( millis() < timeout && pos < uBound)
{
val = DriverRead(0x08);
//Only bother with the next bit if the pixel data is valid.
if( !(val & 64) )
{
continue;
}
//If we encounter a start-of-field indicator, and the cursor isn't at the first pixel,
//then stop. ('Cause the last pixel was the end of the frame.)
if( ( val & 128 ) && ( pos != arr) )
{
break;
}
*pos = val & 63;
pos++;
}
return (pos-arr);
}
//-------------------------------------------------------
void setup()
{
Serial.begin(57600);
DriverInit();
}
//-------------------------------------------------------
void loop()
{/*
byte x = DriverRead(0x02);
byte y = DriverRead(0x03);
if(x || y)
{
Serial.print("X:");
Serial.print(x,DEC);
Serial.print(" Y:");
Serial.println(y,DEC);
}*/
if (Serial.available() > 0)
{
byte c = Serial.read();
if (c == 'F')
{
byte tmp[324];
int len = DriverReadFrame(tmp,324);
int kk=0;
for(int i=0;i<324;i++)
{
Serial.print(tmp[i]);Serial.print(" ");
kk++;
if (kk==18){Serial.println();kk=0;}
}
Serial.println();Serial.println();
Serial.println(len);
}
}
}
Dmitry__ » 09 фев 2016, 01:27
Так, вижу ошибку. Если ты пины физически подключал так:
- Код: Выделить всё • Развернуть
#define SDIO 12 //значения ставил как у вас и переключал физику, тоже работает.
#define SCLK 10 //
то в твоем board_ArduinoNano.h:
- Код: Выделить всё • Развернуть
//pin_nClock (SCK)
//PB4 D12
#define pin_nClock_bit 4
#define pin_nClock_DDR DDRB
#define pin_nClock_PORT PORTB
//MOSI
//PB3 D11
#define pin_SDIO_bit 3
#define pin_SDIO_DDR DDRB
#define pin_SDIO_PORT PORTB
#define pin_SDIO_PORT_IN PINB
Т.е. SDIO должен быть на D11, а SCLK на D12
Добавлено спустя 7 минут 58 секунд:Я все понял, надо схему в док добавить для ардуины нано. Слишком круто все меняется...
dccharacter » 09 фев 2016, 02:23
Я наглухо запутался в гите. Сначала не пушились мои ветки в мой репозиторий. Оказалось, надо сделать git push --all origin -u. Теперь, чтобы достать ветки из репозитория, я, оказывается должен локально создать ветку для каждой ветки в репе и вручную установить трекинг. Серьезно? Это что за ппц такой?
Добавлено спустя 23 минуты:
У меня че-то стало требовать определения функций типа void ADNS_reset(void); Не пойму - я ж собирал уже этот проект этим же мейкфайлом. Че изменилось-то? У нас же не было никаких деклараций никогда, правильно?