200*200 !=....

Agrano
Offline
Зарегистрирован: 11.12.2020

Код используется для подключения ардуино к GPS модули через канлог

#include <SPI.h>
#include "mcp_can.h"

const int SPI_CS_PIN = 10;


MCP_CAN CAN(SPI_CS_PIN);

void setup()
{
    
    Serial.begin(115200);
while (CAN_OK != CAN.begin(CAN_250KBPS, MCP_8MHz))
    {
      Serial.println("CAN BUS Shield init fail");
      Serial.println(" INit CAN BUS Shield again");
      delay(100); 
      }

    Serial.println("CAN BUS Shield Init OK!");
}

    
void loop()

{
  Serial.println("In loop");
  union {
  uint64_t a;
  unsigned char b[8];
  }t;
  t.a=40000;
CAN.sendMsgBuf(0x18FEC1EE, 1, 8, t.b);

  delay(100);
}

При значениях t.a = 40000, все работает как надо но если записать 200*200 , работает не корректно, в чем проблема, извните уж за такой глупый вопрос)

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

напиши 

t.a = 200 * 200L;

Agrano
Offline
Зарегистрирован: 11.12.2020

Заработало, спасибо)

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Agrano пишет:

При значениях t.a = 40000, все работает как надо но если записать 200*200 , работает не корректно, в чем проблема, извните уж за такой глупый вопрос)

Как думаешь, какой тип у 40000?

А какой у 200?

А каково максимальное значение для того и другого типа?