Jak na HEX debug I2C ?

Odpovědět
Uživatelský avatar
Caster
Příspěvky: 380
Registrován: 11 zář 2019, 09:02
Reputation: 0

Jak na HEX debug I2C ?

Příspěvek od Caster » 03 bře 2020, 12:10

Před portováním programu na jednočipový mikroprocesor ATtiny202 potřebuji vyzkoušet, jaké HEX byty se po I2C posílají tam a zpět do GPS modulu ZOE-M8Q (u-blox), včetně potvrzení UBX-ACK-ACK či nepotvrzení UBX-ACK-NAK přijatého příkazu a načtení vlastních dat. Zkouším to pomocí aktivace debug a krátkým programem pro Arduino. Nevím ale, jaké parametry mám předat funkci sendCommand(ubxPacket outgoingUBX, uint16_t maxWait) z knihovny SparkFun_Ublox_Arduino_Library.h

Z GPSky potřebuji načíst souřadnice pomocí UBX příkazu do paměti (proměnná Reply).

Kód: Vybrat vše

#include <Wire.h> //Needed for I2C to GPS

#include "SparkFun_Ublox_Arduino_Library.h" //Click here to get the library: http://librarymanager/All#SparkFun_Ublox_GPS
SFE_UBLOX_GPS myGPS;

//Compile a UBX data packet to send to GPS
uint8_t Command[] = {0xB5, 0x62, 0x01, 0x02, 0x00, 0x00, 0x03, 0x0A}; // UBX-NAV-POSLLH
uint32_t len = sizeof(Command) / sizeof(uint8_t);
uint8_t Reply[36];

void setup()
{
  Serial.begin(115200);
  Serial.println("SparkFun Ublox I2C Command Test\n");

  Wire.begin();

  myGPS.enableDebugging();

  if (myGPS.begin() == false)
  {
    Serial.println(F("Ublox GPS not detected at default I2C address. Please check wiring. Freezing."));
    while (1);
  }
}

void loop()
{
  //  myGPS.checkUblox(); //See if new data is available. Process bytes as they come in.

  if (myGPS.isConnected() == true)
  {
    Serial.println(F("I2C Connected")); // Just for test
  }

  myGPS.sendCommand(ubxPacket outgoingUBX, uint16_t maxWait); // CO SEM PŘEDAT ?

  delay(250); // To let some time for processing
}

Uživatelský avatar
Caster
Příspěvky: 380
Registrován: 11 zář 2019, 09:02
Reputation: 0

Re: Jak na HEX debug I2C ?

Příspěvek od Caster » 03 bře 2020, 18:32

Co si člověk neudělá... ;-)

Kód: Vybrat vše

#include <Wire.h> //Needed for I2C to GPS

#include "SparkFun_Ublox_Arduino_Library.h" //Click here to get the library: http://librarymanager/All#SparkFun_Ublox_GPS
SFE_UBLOX_GPS myGPS;

void setup()
{
  Serial.begin(115200);
  Serial.println("SparkFun Ublox I2C Command Test\n");

  Wire.begin();

  myGPS.enableDebugging();

  if (myGPS.begin() == false)
  {
    Serial.println(F("Ublox GPS not detected at default I2C address. Please check wiring. Freezing."));
    while (1);
  }
}

void loop()
{
  //  myGPS.checkUblox(); //See if new data is available. Process bytes as they come in.

  //These are pointed at from within the ubxPacket
  uint8_t payloadAck[2];
//  uint8_t payloadCfg[MAX_PAYLOAD_SIZE];
  uint8_t payloadCfg[16];

  // Init the packet structures and init them with pointers to the payloadAck and payloadCfg arrays
  ubxPacket packetAck = {0, 0, 0, 0, 0, payloadAck, 0, 0, false};
  ubxPacket packetCfg = {0, 0, 0, 0, 0, payloadCfg, 0, 0, false};

  // UBX-NAV-STATUS Class 0x01 ID 0x03, str. 324 v manuálu GPS
  packetCfg.cls = 1;
  packetCfg.id = 3;
  packetCfg.len = 0;

  myGPS.sendCommand(packetCfg, 1100);	// Odpověď (data) z GPS na příkaz by měla přijít do 1 100 ms

  delay(250); // Nebudeme tlačit na pilu a zkoušíme se ptát, zda již GPS připravilo pro načtení data každých 250 ms
}

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 6 hostů