![]()  | 
	
| 		
			
			 | 
		#11 | 
| 
			
			
			
			 Пользователь 
			![]() Регистрация: 16.03.2009 
				
				Возраст: 41 
				
Город: Baku 
Регион: другой - для добавления сообщить ab 
Машина: 2011\Opel Insignia 
					Сообщений: 45
				 
				
				![]()  | 
	
	
	
	
		
			
			 У меня все это нормально работает.  Срежте дорожку которая терминирует резистор на 120 ом. Гже он есть на вики у сиидсьудио. 
		
	
		
		
		
		
		
	
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#12 | 
| 
			
			
			
			 Новый Пользователь 
			![]() Регистрация: 20.02.2015 
				
				Возраст: 44 
				
Регион: 77, 97, 99, 177 
Машина: Passat b6 
					Сообщений: 11
				 
				
				![]()  | 
	
	
	
	
		
			
			 На этом шилде (sparkfun, а не seedstudio, я указал в первом сообщении) нет этого резистора в принципе. Эти два шилда не совсем идентичны 
		
	
		
		
		
		
		
	
	Вроде нано ещё где-то валялась ... И сама Мега32 ... Не покупать же ещё одну плату. Попробую наваять из меги32 Хотя не верю, что причина в этом  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#13 | 
| 
			
			
			
			 Пользователь 
			![]() Регистрация: 16.03.2009 
				
				Возраст: 41 
				
Город: Baku 
Регион: другой - для добавления сообщить ab 
Машина: 2011\Opel Insignia 
					Сообщений: 45
				 
				
				![]()  | 
	
	
	
	
		
			
			 Тогда сорри,  у меня от сиидстудио 
		
	
		
		
		
		
		
	
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#14 | 
| 
			
			
			
			 Новый Пользователь 
			![]() Регистрация: 20.02.2015 
				
				Возраст: 44 
				
Регион: 77, 97, 99, 177 
Машина: Passat b6 
					Сообщений: 11
				 
				
				![]()  | 
	
	
	
	
		
			
			 А работает с мегой? 
		
	
		
		
		
		
		
	
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#15 | 
| 
			
			
			
			 Старший Пользователь 
			![]() Регистрация: 12.01.2014 
				
				Возраст: 42 
				
Город: Москва 
Регион: 77, 97, 99, 177 
Машина: Skoda Superb II 
					Сообщений: 473
				 
				
				![]() ![]() ![]() ![]() ![]() ![]()  | 
	
	
	
	
		
			
			 У меня с терминирующим резистором вообще ничего не работало, а тут сначала работает, а потом нет. 
		
	
		
		
		
		
			
				__________________ 
		
		
		
		
	
	Skoda SamSony (закрыт) Skoda Superb 2012 Nexus 7 (Завершен ввиду смерти планшета)  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#16 | 
| 
			
			
			
			 Пользователь 
			![]() Регистрация: 16.03.2009 
				
				Возраст: 41 
				
Город: Baku 
Регион: другой - для добавления сообщить ab 
Машина: 2011\Opel Insignia 
					Сообщений: 45
				 
				
				![]()  | 
	
	
	
	
		
			
			 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#17 | |
| 
			
			
			
			 Старший Пользователь 
			![]() Регистрация: 03.10.2006 
				
				Возраст: 52 
				
Город: Moscow 
Регион: 77, 97, 99, 177 
Машина: Nissan Elgrand 
					Сообщений: 246
				 
				
				![]()  | 
	
	
	
	
		
			
			 Цитата: 
	
 Осциллографом смотрел?  | 
|
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#18 | 
| 
			
			
			
			 Новый Пользователь 
			![]() Регистрация: 20.02.2015 
				
				Возраст: 44 
				
Регион: 77, 97, 99, 177 
Машина: Passat b6 
					Сообщений: 11
				 
				
				![]()  | 
	
	
	
	
		
			
			 Шина продолжает работать, шилд не видит данные. Чтобы увидел, нужно его обесточить и вытащить ключ зажигания. Потом включить шилд и вставить ключ. Если сначала вставить ключ, а потом включить шилд - ничего не примет. Можно ещё вместо ключа нажать на кнопки ключа, тогда шилд тоже принимает пакеты (6 штук). Причём для кнопок открытия и закрытия - разные 
		
	
		
		
		
		
		
	
	Осцилом (USB) посмотрел, как смог. Данные бегают  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#19 | 
| 
			
			
			
			 Старший Пользователь 
			![]() Регистрация: 03.10.2006 
				
				Возраст: 52 
				
Город: Moscow 
Регион: 77, 97, 99, 177 
Машина: Nissan Elgrand 
					Сообщений: 246
				 
				
				![]()  | 
	
	
	
	
		
			
			 А можно взглянуть на код прошивки? 
		
	
		
		
		
		
		
	
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#20 | 
| 
			
			
			
			 Новый Пользователь 
			![]() Регистрация: 20.02.2015 
				
				Возраст: 44 
				
Регион: 77, 97, 99, 177 
Машина: Passat b6 
					Сообщений: 11
				 
				
				![]()  | 
	
	
	
	
		
			
			 Библиотека почти стандартная - я добавил только скорость 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);
    }
}
 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
![]()  | 
	
	
		
| Метки | 
| arduino, canbus | 
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
		
  | 
	
		 |