Попробовал, проверил на Wiring не получится читать шину потому как минимальное время функции pulseIn 10мкс , а нам нужно 7мкс
Попробовал, проверил на Wiring не получится читать шину потому как минимальное время функции pulseIn 10мкс , а нам нужно 7мкс
Похоже идет конфликт логических адресов двух чейнджеров. Можно попробовать поменять в адаптере логический адрес чейнджера с 63 на 43 или просто отключить регистрацию виртуального чейнджера (это проще). Кстати второй вариант просто проверить, поставив неправильный адрес головы и чейнджера, тогда виртуальный чейнджер не сможет зарегистрироваться и штатный сможет нормально работать. От адаптера, что требуется только считывание тача и кнопок или звук через чейнджер тоже планируется заводить?
За лог спасибо, только нужен еще момент регистрации камеры в системе. Но его можно я попозже попрошу, я сегодня попробую RGB на приусе активировать. Еще вопрос, а TV у Вас есть на машине? Думаю как проще NTSC вход будет активировать, какое устройство проще эмулировать.
Все-таки Wiring - это только дополнительные библиотеки для удобства программирования и никто не мешает реализовать эти функции на обычном C. Думаю можно написать на С библиотеку для arduino, которая будет читать и писать в шину, а всю остальную обработку можно уже и на Wiring делать. Вчера развел sheild плату для драйвера, сегодня если успею ее соберу и попробую что-нибудь написать.
Думаю что лучше написать функцию read_frame на ассемблере
Как я уже писал, с адресами играться пробовал (менял их через терминал) результата не было... То ли МК их не меняет, то ли причина не в этом... Звук естественно нужен, как же я буду КарПС слушать
В Си не силен, сможете мне прошивку сварганить с другим адресом ченжера? Ну и еще одну вообще без его регистрации? Для теста?
К стати опрос устройств и регистрация происходит только при запуске системы? если допустим через 5 секунд подключить контролер к шине он подрубит доп ченжер или нет? Заранее спасибо!
ТВ имеется, если надо могу скинуть лог его включения
Вот прошивка без регистрации avclan-mini-noreg.rar. Просто заблокировал отправку любых команд в шину. Логический адрес поменять сложнее он там во всех командах прописан, постараюсь сделать завтра - послезавтра. Еще уменьшил буфер до 300 символов, при 350 портятся внутренние переменные (заметил на адресе головы и чейнджера).
Если подключить контроллер к шине и включить его, он зарегистрирует чейнджер. Контроллер регистрируется при включении (контроллера, голова при этом уже давно может работать) или по команде головы.
Вообще нужен лог не только команды включения но и регистрации всех устройств. Кстати куда у Вас подключен TX+, ТХ-? Сегодня с другом активировали все-таки RGB вход на приусе без навигации. Активировали при помощи навигации с другой машины. TX+, TX- подключали к 28ми контактному разъему монитора и к разъему чейджера. В обоих случаях адаптер показывал только широковещательные сообщения от головы. Такое чувство, что голова не на все свои порты TX+, TX- шлет все соообщения.
Ждем с нетерпением!
Спасиб за прошивку! С ней ченжер ведет себя адекватно, значит дело в "кривом" адресе... Если не сложно чиркни под мои адреса Голова 110, ченжер, любой отличный от того что у тебя
Сегодня провел небольшой анализ, вычислить пока удалось в куче хлама, расход и одометр, правда одометр скорей всего только младшие байты...
< d 1C6 110 0700E55FDC0FBA80 - одометр, используются байты 0FBA, измерение идет в десятках километра. Старший байт пока не найден...
< d 1C6 110 0700E55FD8020780 - расход горючки, используются байты 0207, при работе только электро двигателя значение FFFE, далее чем меньше число тем больше расход. К какому то знаменателю чтоб перевести в нормальные единицы пока не пришел, надо кататься изучать...
Что-то не получается у меня драйвер новый запустить. На выходе RX постоянно висит логическая 1. Спаял вроде все правильно. Даже схему в протеусе смоделировал, правда там только MAX487 есть в библиотеке, но тоже вроде RS485 драйвер. В общем не выходит.
Написал вот такую программку для arduino
По идее она должна мигать светодиодом при приходе команда в шине да 1 и 0 в com-порт писать. Сможешь проверить у тебя она что-нибудь выдавать будет.Код:int ledPin = 13; // LED connected to digital pin 13 // pin 7 arduino, TX #define DATAOUT_DDR DDRD #define DATAOUT_PORT PORTD #define DATAOUT_PIN PIND #define DATAOUT 7 // pin 8 arduino, RX #define DATAIN_DDR DDRB #define DATAIN_PORT PORTB #define DATAIN_PIN PINB #define DATAIN 0 // инвертируем сигнал #define INPUT_IS_SET (bit_is_clear(DATAIN_PIN, DATAIN)) #define INPUT_IS_CLEAR (bit_is_set(DATAIN_PIN, DATAIN)) void setup(){ pinMode(ledPin, OUTPUT); // sets the digital pin as output // AVCLan TX+/TX- read line INPUT DATAIN_DDR &= ~(1<<DATAIN); DATAIN_PORT &= ~(1<<DATAIN); // AVCLan TX+/TX- write line OUTPUT DATAOUT_DDR |= 1<<DATAOUT; DATAOUT_PORT |= 1<<DATAOUT; Serial.begin(115200); } void loop(){ while (INPUT_IS_CLEAR){ } digitalWrite(ledPin, HIGH); // sets the LED on Serial.print('1'); while (INPUT_IS_SET){ } digitalWrite(ledPin, LOW); // sets the LED on Serial.print('0'); }
Вот схема и разведенная плата драйвера:
AVCLan_sheild.rar
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)