PCCar.ru - Ваш автомобильный компьютер

Вернуться   PCCar.ru - Ваш автомобильный компьютер > MP3Car ТехИнфа > Общение с машиной

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2015, 22:52   #11
Farman
Пользователь
 
Регистрация: 16.03.2009
Возраст: 40
Город: Baku
Регион: другой - для добавления сообщить ab
Машина: 2011\Opel Insignia
Сообщений: 45
Farman is on a distinguished road
По умолчанию

У меня все это нормально работает. Срежте дорожку которая терминирует резистор на 120 ом. Гже он есть на вики у сиидсьудио.
Farman вне форума   Ответить с цитированием
Старый 21.02.2015, 23:21   #12
Jiraffa
Новый Пользователь
 
Регистрация: 20.02.2015
Возраст: 43
Регион: 77, 97, 99, 177
Машина: Passat b6
Сообщений: 11
Jiraffa is on a distinguished road
По умолчанию

На этом шилде (sparkfun, а не seedstudio, я указал в первом сообщении) нет этого резистора в принципе. Эти два шилда не совсем идентичны

Вроде нано ещё где-то валялась ... И сама Мега32 ... Не покупать же ещё одну плату.
Попробую наваять из меги32
Хотя не верю, что причина в этом
Jiraffa вне форума   Ответить с цитированием
Старый 21.02.2015, 23:43   #13
Farman
Пользователь
 
Регистрация: 16.03.2009
Возраст: 40
Город: Baku
Регион: другой - для добавления сообщить ab
Машина: 2011\Opel Insignia
Сообщений: 45
Farman is on a distinguished road
По умолчанию

Тогда сорри, у меня от сиидстудио
Farman вне форума   Ответить с цитированием
Старый 21.02.2015, 23:48   #14
Jiraffa
Новый Пользователь
 
Регистрация: 20.02.2015
Возраст: 43
Регион: 77, 97, 99, 177
Машина: Passat b6
Сообщений: 11
Jiraffa is on a distinguished road
По умолчанию

А работает с мегой?
Jiraffa вне форума   Ответить с цитированием
Старый 22.02.2015, 12:58   #15
cherkasoff
Старший Пользователь
 
Регистрация: 12.01.2014
Возраст: 41
Город: Москва
Регион: 77, 97, 99, 177
Машина: Skoda Superb II
Сообщений: 473
cherkasoff is a glorious beacon of lightcherkasoff is a glorious beacon of lightcherkasoff is a glorious beacon of lightcherkasoff is a glorious beacon of lightcherkasoff is a glorious beacon of lightcherkasoff is a glorious beacon of light
По умолчанию

Цитата:
Сообщение от Farman Посмотреть сообщение
У меня все это нормально работает. Срежте дорожку которая терминирует резистор на 120 ом. Гже он есть на вики у сиидсьудио.
У меня с терминирующим резистором вообще ничего не работало, а тут сначала работает, а потом нет.
cherkasoff вне форума   Ответить с цитированием
Старый 22.02.2015, 21:39   #16
Farman
Пользователь
 
Регистрация: 16.03.2009
Возраст: 40
Город: Baku
Регион: другой - для добавления сообщить ab
Машина: 2011\Opel Insignia
Сообщений: 45
Farman is on a distinguished road
По умолчанию

Цитата:
Сообщение от Jiraffa Посмотреть сообщение
А работает с мегой?
С мегой и нано нормально работает. Но я щас перешел на элдуино. Там и лин есть, правда поеа не достучались до него.
Farman вне форума   Ответить с цитированием
Старый 23.02.2015, 07:05   #17
Glouck
Старший Пользователь
 
Регистрация: 03.10.2006
Возраст: 51
Город: Moscow
Регион: 77, 97, 99, 177
Машина: Nissan Elgrand
Сообщений: 246
Glouck will become famous soon enough
По умолчанию

Цитата:
Сообщение от Jiraffa Посмотреть сообщение
Вставляю ключ зажигания, приходят две посылки и ..... всё. После этого, чтобы ещё что-то получить необходимо сбросить питание с ардуины и шилда и вытащить ключ.
Т.е. шина продолжает работать (периферия в машине, которая сидит на этой шине), но шилд не видит данные? Или вся шина ложится после этого?
Осциллографом смотрел?
Glouck вне форума   Ответить с цитированием
Старый 23.02.2015, 09:23   #18
Jiraffa
Новый Пользователь
 
Регистрация: 20.02.2015
Возраст: 43
Регион: 77, 97, 99, 177
Машина: Passat b6
Сообщений: 11
Jiraffa is on a distinguished road
По умолчанию

Шина продолжает работать, шилд не видит данные. Чтобы увидел, нужно его обесточить и вытащить ключ зажигания. Потом включить шилд и вставить ключ. Если сначала вставить ключ, а потом включить шилд - ничего не примет. Можно ещё вместо ключа нажать на кнопки ключа, тогда шилд тоже принимает пакеты (6 штук). Причём для кнопок открытия и закрытия - разные

Осцилом (USB) посмотрел, как смог. Данные бегают
Jiraffa вне форума   Ответить с цитированием
Старый 23.02.2015, 23:33   #19
Glouck
Старший Пользователь
 
Регистрация: 03.10.2006
Возраст: 51
Город: Moscow
Регион: 77, 97, 99, 177
Машина: Nissan Elgrand
Сообщений: 246
Glouck will become famous soon enough
По умолчанию

А можно взглянуть на код прошивки?
Glouck вне форума   Ответить с цитированием
Старый 24.02.2015, 11:45   #20
Jiraffa
Новый Пользователь
 
Регистрация: 20.02.2015
Возраст: 43
Регион: 77, 97, 99, 177
Машина: Passat b6
Сообщений: 11
Jiraffa is on a distinguished road
По умолчанию

Библиотека почти стандартная - я добавил только скорость 83.333 для мерса (там несколько таких скоростей - экспериментировал, на 3м варианте приём стабильный)
Скетч содержит элементы для вывода информации на I2C дисплей и использование джойстика, но я их почти сразу заремил и оставил только консоль.

Попробовал сейчас на столе ещё с elm327 его скрестить. От elm'a пакеты приходят. Но тоже только один раз. т.е. запускаю elm на автоопределение протокола и шилд принимает пару пакетов (на соот-ей текущей выбранной скорости). elm ничего не находит, что и понятно, и отключается. Запускаю сканирование ещё раз - и шилд уже ничего не принимает. Помогает reset.

Код скетча (он же есть и в архиве)
Код:
// demo: CAN-BUS Shield, receive data
#include "mcp_can.h"
#include <SPI.h>
#include <stdio.h>
//#include <LiquidCrystal_I2C.h>
//#include <Wire.h>

#define INT8U unsigned char

/*"Joystick" Init*/
#define UP     A1    /*Analog Pin 1*/
#define DOWN   A3    /*Analog Pin 3*/
#define LEFT   A5    /*Analog Pin 5*/
#define RIGHT  A2    /*Analog Pin 2*/
#define CLICK  A4    /*Analog Pin 4*/
#define JSP    0  /*Joystick Pressed*/
#define JSNP   1  /*Joystick Not Pressed*/

/*Status LED's*/
#ifndef LED_2
int LED_2 = 8;
#endif
#ifndef LED_3
int LED_3 = 7;
#endif

//LiquidCrystal_I2C lcd(0x27,20,4);  // set address of lcd to 0x27 and count of char to 20, of rows to 4 (20х4)

INT8U Flag_Recv = 0;
INT8U len = 0;
INT8U buf[16];
char str[20];
INT8U speedCAN;
int speedCANtext;
int countPckg = 0;
//char speedInput;

//Timer 2 - blinking LED
unsigned int toggle = 0;  //used to keep the state of the LED
unsigned int count = 0;   //used to keep count of how many interrupts were fired

//Timer2 Overflow Interrupt Vector, called every 1ms
ISR(TIMER2_OVF_vect) {
  count++;               //Increments the interrupt counter
  if(count > 999){
    toggle = !toggle;    //toggles the LED state
    count = 0;           //Resets the interrupt counter
  }
  digitalWrite(LED_3,toggle);
  TCNT2 = 130;           //Reset Timer to 130 out of 255
  TIFR2 = 0x00;          //Timer2 INT Flag Reg: Clear Timer Overflow Flag
};  

/*
void init_LCD (void) 
{
  lcd.init();                     // инициализация LCD 
  lcd.backlight();                // включаем подсветку
  lcd.clear();                    // очистка дисплея
  lcd.setCursor(0, 0);
}
*/
void init_JoyStick(void)
{
  pinMode(UP,INPUT);
  pinMode(DOWN,INPUT);
  pinMode(LEFT,INPUT);
  pinMode(RIGHT,INPUT);
  pinMode(CLICK,INPUT);
  digitalWrite(UP, HIGH);  //enabled input pull-up resistor
  digitalWrite(DOWN, HIGH);  //enabled input pull-up resistor
  digitalWrite(LEFT, HIGH);  //enabled input pull-up resistor
  digitalWrite(RIGHT, HIGH);  //enabled input pull-up resistor
  digitalWrite(CLICK, HIGH);  //enabled input pull-up resistor
}

void init_Status_LED(void)
{
  pinMode(LED_2, OUTPUT);//communication LED
  pinMode(LED_3, OUTPUT); //Status LED 
  digitalWrite(LED_2,LOW);
  digitalWrite(LED_3,LOW);
}

void init_CAN(void)
{
  if (CAN.begin(speedCAN) == 0)                 // init can bus at baudrate
  {
/*    lcd.clear();
    lcd.print ("CAN init on "); 
    lcd.print (speedCANtext); 
    lcd.print ("KBPS"); 
*/    Serial.print("CAN init on ");
    Serial.print(speedCANtext);
    Serial.println("KBPS");
  } else
  {
/*    lcd.clear();
    lcd.print ("CAN init FAIL"); 
*/    Serial.println("CAN init FAIL");
  }
}

void select_CAN_speed(void)
{
      int speedInput = Serial.read ();
      switch (speedInput)
      {
        case '1':    
          speedCAN = CAN_83_1KBPS;
          speedCANtext = 831;
          break;
        case '2':    
          speedCAN = CAN_83_2KBPS;
          speedCANtext = 832;
          break;
        case '3':    
          speedCAN = CAN_83_3KBPS;
          speedCANtext = 833;
          break;
        case '4':    
          speedCAN = CAN_83_4KBPS;
          speedCANtext = 834;
          break;
        case '5':    
          speedCAN = CAN_83_5KBPS;
          speedCANtext = 835;
          break;
        case '6':    
          speedCAN = CAN_500KBPS;
          speedCANtext = 500;
          break;
        case '7':    
          speedCAN = CAN_100KBPS;
          speedCANtext = 100;
          break;
        case '8':    
          speedCAN = CAN_125KBPS;
          speedCANtext = 125;
          break;
        default:
          Serial.println ("Speed error");
          speedCANtext = -1;
      }
}

void setup()
{
  Serial.begin(115200);
//  init_LCD();
//  init_JoyStick();
  init_Status_LED();

  //Setup Timer2 to fire every 1ms
  TCCR2B = 0x00;        //Disbale Timer2 while we set it up
  TCNT2  = 130;         //Reset Timer Count to 130 out of 255
  TIFR2  = 0x00;        //Timer2 INT Flag Reg: Clear Timer Overflow Flag
  TIMSK2 = 0x01;        //Timer2 INT Reg: Timer2 Overflow Interrupt Enable
  TCCR2A = 0x00;        //Timer2 Control Reg A: Normal port operation, Wave Gen Mode normal
  TCCR2B = 0x05;        //Timer2 Control Reg B: Timer Prescaler set to 128

//for use with mega2560
  pinMode(10, OUTPUT);    
  digitalWrite(10, HIGH);
  pinMode(11, INPUT);    
  digitalWrite(11, LOW);
  pinMode(12, INPUT);    
  digitalWrite(12, LOW);
  pinMode(13, INPUT);    
  digitalWrite(13, LOW);

//  lcd.print ("Press Joy to start"); 
//  Serial.println("Press Joy to start...");

  Serial.println("Enter CAN-BUS speed:");
  Serial.println("1 - 83.333 (1)");
  Serial.println("2 - 83.333 (2)");
  Serial.println("3 - 83.333 (3)");
  Serial.println("4 - 83.333 (4)");
  Serial.println("5 - 83.333 (5)");
  Serial.println("6 - 500");
  Serial.println("7 - 100");
  Serial.println("8 - 125");
  speedCANtext = -1;
  while (speedCANtext < 0)
  {
    if (Serial.available() > 0) 
    {
      select_CAN_speed();
    } 
   }

/*  
//  while (digitalRead(CLICK));
  while (1) 
  {
    if(!digitalRead(DOWN))
    {
      speedCAN = CAN_83_1KBPS;
      speedCANtext = 831;
      break;
    }  else if(!digitalRead(UP))
    {
      speedCAN = CAN_83_2KBPS;
      speedCANtext = 832;
      break;
    } else if(!digitalRead(LEFT))
    {
      speedCAN = CAN_500KBPS;
      speedCANtext = 500;
      break;
    } else if(!digitalRead(RIGHT))
    {
      speedCAN = CAN_100KBPS;
      speedCANtext = 100;
      break;
    }
    
  }
*/  
  init_CAN ();
  attachInterrupt(0, MCP2515_ISR, FALLING); // start interrupt
}

void MCP2515_ISR()
{
     Flag_Recv = 1;
      digitalWrite(LED_2,HIGH);
}

void loop()
{
//    digitalWrite(LED_3,HIGH);
    if(Flag_Recv)                   // check if get data
    {
      Flag_Recv = 0;                // clear flag
      ++countPckg;                  // count of packages
      CAN.readMsgBuf(&len, buf);    // read data,  len: data length, buf: data buf
      Serial.print(countPckg);
//      Serial.println(": CAN_BUS GET DATA!");
/*      lcd.setCursor(0, 1);
      lcd.print (countPckg); 
      lcd.print (": CANBUS GET DATA"); 
*/      Serial.print(": data len = ");
      Serial.print(len, HEX);
      Serial.print("\t");
      for(int i = 0; i<len; i++)    // print the data
      {
        Serial.print(buf[i], HEX);
        Serial.print("\t");
      }
      Serial.println();
      digitalWrite(LED_2,LOW);
    }

}
Вложения
Тип файла: zip CAN_BUS_Shield.zip (9.1 Кб, 786 просмотров)
Тип файла: zip CANbusShield.zip (2.4 Кб, 786 просмотров)
Jiraffa вне форума   Ответить с цитированием
Ответ

Метки
arduino, canbus


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

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

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



Часовой пояс GMT +4, время: 09:53.


Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot