Не понимаю преобразования типов переменных

#include "si5351.h"
#include "Wire.h"

Si5351 si5351;
long long mnoj = 100;
long long freq = 20000000;



volatile bool change = false;
#include "utility.h"

#include "cat-usdx.h"

void setup() {
  Serial.begin(57600);
  bool i2c_found;
  i2c_found = si5351.init(SI5351_CRYSTAL_LOAD_8PF, 0, 0);
  si5351.set_freq(freq*mnoj, SI5351_CLK0);
  si5351.update_status();
  //Command_GETFreqA();
 }
void loop() {
 serialEvent();
  if(change == true){
    freqSetToSi(freq);
    change = false;
    
     
  }
 
}

// взял с проекта USDX, протокол CAT для ts480, используется в HDSDR 
// не все функции используются в этом приёмнике
#define CATCMD_SIZE   32
#define CAT              1   // CAT-interface
volatile uint32_t rxend_event = 0;
void serialEvent();
void Command_UK(char k1, char k2);
void Command_UD();
void Command_UA(char en);
void Command_GETFreqA();
void Command_SETFreqA();
void Command_IF();
void Command_ID();
void Command_PS();
void Command_PS1();
void Command_AI();
void Command_AI0();
void Command_GetMD();
void Command_SetMD();
void Command_RX();
void Command_AG0();
void Command_XT1();
void Command_RT1();
void Command_TX0();
void Command_TX1();
void Command_TX2();
void Command_RC();
void Command_FL0();
void Command_RS();
void Command_VX(char mode);
char CATcmd[CATCMD_SIZE];
void analyseCATcmd()
{
  if((CATcmd[0] == 'F') && (CATcmd[1] == 'A') && (CATcmd[2] == ';'))
    Command_GETFreqA();
  else if((CATcmd[0] == 'F') && (CATcmd[1] == 'A') && (CATcmd[13] == ';'))
    Command_SETFreqA();
  else if((CATcmd[0] == 'I') && (CATcmd[1] == 'F') && (CATcmd[2] == ';'))
    Command_IF();
  else if((CATcmd[0] == 'I') && (CATcmd[1] == 'D') && (CATcmd[2] == ';'))
    Command_ID();
  else if((CATcmd[0] == 'P') && (CATcmd[1] == 'S') && (CATcmd[2] == ';'))
    Command_PS();
  else if((CATcmd[0] == 'P') && (CATcmd[1] == 'S') && (CATcmd[2] == '1'))
    Command_PS1();
  else if((CATcmd[0] == 'A') && (CATcmd[1] == 'I') && (CATcmd[2] == ';'))
    Command_AI();
  else if((CATcmd[0] == 'A') && (CATcmd[1] == 'I') && (CATcmd[2] == '0'))
    Command_AI0();
  else if((CATcmd[0] == 'M') && (CATcmd[1] == 'D') && (CATcmd[2] == ';'))
    Command_GetMD();
  else if((CATcmd[0] == 'M') && (CATcmd[1] == 'D') && (CATcmd[3] == ';'))
    Command_SetMD();
  else if((CATcmd[0] == 'R') && (CATcmd[1] == 'X') && (CATcmd[2] == ';'))
    Command_RX();
  else if((CATcmd[0] == 'T') && (CATcmd[1] == 'X') && (CATcmd[2] == ';'))
    Command_TX0();
  else if((CATcmd[0] == 'T') && (CATcmd[1] == 'X') && (CATcmd[2] == '0'))
    Command_TX0();
  else if((CATcmd[0] == 'T') && (CATcmd[1] == 'X') && (CATcmd[2] == '1'))
    Command_TX1();
  else if((CATcmd[0] == 'T') && (CATcmd[1] == 'X') && (CATcmd[2] == '2'))
    Command_TX2();
  else if((CATcmd[0] == 'A') && (CATcmd[1] == 'G') && (CATcmd[2] == '0'))  // add
    Command_AG0();
  else if((CATcmd[0] == 'X') && (CATcmd[1] == 'T') && (CATcmd[2] == '1'))  // add
    Command_XT1();
  else if((CATcmd[0] == 'R') && (CATcmd[1] == 'T') && (CATcmd[2] == '1'))  // add
    Command_RT1();
  else if((CATcmd[0] == 'R') && (CATcmd[1] == 'C') && (CATcmd[2] == ';'))  // add
    Command_RC();
  else if((CATcmd[0] == 'F') && (CATcmd[1] == 'L') && (CATcmd[2] == '0'))  // need?
    Command_FL0();
  else if((CATcmd[0] == 'R') && (CATcmd[1] == 'S') && (CATcmd[2] == ';'))
    Command_RS();
  else if((CATcmd[0] == 'V') && (CATcmd[1] == 'X') && (CATcmd[2] != ';'))
    Command_VX(CATcmd[2]);
  else if((CATcmd[0] == 'U') && (CATcmd[1] == 'K') && (CATcmd[4] == ';'))  // remote key press
    Command_UK(CATcmd[2], CATcmd[3]);
  else if((CATcmd[0] == 'U') && (CATcmd[1] == 'D') && (CATcmd[2] == ';'))  // display contents
    Command_UD();
  else if((CATcmd[0] == 'U') && (CATcmd[1] == 'A') && (CATcmd[3] == ';'))  // audio streaming enable/disable
    Command_UA(CATcmd[2]);
  //else {
  //Serial.print("?;");
  //}
}


volatile uint8_t cat_ptr = 0;
void serialEvent(){
  if(Serial.available()){
    rxend_event = millis() + 10;  // block display until this moment, to prevent CAT cmds that initiate display changes to interfere with the next CAT cmd e.g. Hamlib: FA00007071000;ID;
    char data = Serial.read();
    CATcmd[cat_ptr++] = data;
    if(data == ';'){
      CATcmd[cat_ptr] = '\0'; // terminate the array
      cat_ptr = 0;            // reset for next CAT command
      analyseCATcmd();
      delay(10);
    } else if(cat_ptr > (CATCMD_SIZE - 1)){ Serial.print("E;"); cat_ptr = 0; } // overrun
  }
}


void Command_UK(char k1, char k2){
//  cat_key = ((k1 - '0') << 4) | (k2 - '0');
//  if(cat_key & 0x40){ encoder_val--; cat_key &= 0x3f; }
//  if(cat_key & 0x80){ encoder_val++; cat_key &= 0x3f; }
//  char Catbuffer[16];
//  sprintf(Catbuffer, "UK%c%c;", k1, k2);
//  Serial.print(Catbuffer);
}

void Command_UD(){
//  char Catbuffer[40];
//  sprintf(Catbuffer, "UD%02u%s;", (lcd.curs) ? lcd.y*16+lcd.x : 16*2+1, lcd.text);
//  Serial.print(Catbuffer);
}

void Command_UA(char en){
//  char Catbuffer[16];
//  sprintf(Catbuffer, "UA%01u;", (_cat_streaming = (en == '1')));
//  Serial.print(Catbuffer);
//  if(_cat_streaming){ Serial.print("US"); cat_streaming = true; }
}

void Command_GETFreqA(){
  char Catbuffer[32];
  unsigned int g,m,k,h;
  uint32_t tf;

  tf=freq;
  
  g=(unsigned int)(tf/1000000000lu);
  tf-=g*1000000000lu;
  m=(unsigned int)(tf/1000000lu);
  tf-=m*1000000lu;
  k=(unsigned int)(tf/1000lu);
  tf-=k*1000lu;
  h=(unsigned int)tf;

  sprintf(Catbuffer,"FA%02u%03u",g,m);
  Serial.print(Catbuffer);
  sprintf(Catbuffer,"%03u%03u;",k,h);
  Serial.print(Catbuffer);
}

void Command_SETFreqA(){
  char Catbuffer[16];
  
  strncpy(Catbuffer,CATcmd+2,11);
  Catbuffer[11]='\0';
  //Serial.write(Catbuffer);
  freq=(long long)atol(Catbuffer);
  change=true;
  

}

void Command_IF(){
//  char Catbuffer[32];
//  unsigned int g,m,k,h;
//  uint32_t tf=0;
//	uint8_t mode =0;
//  tf=freq;
//  g=(unsigned int)(tf/1000000000lu);
//  tf-=g*1000000000lu;
//  m=(unsigned int)(tf/1000000lu);
//  tf-=m*1000000lu;
//  k=(unsigned int)(tf/1000lu);
//  tf-=k*1000lu;
//  h=(unsigned int)tf;
//
//  sprintf(Catbuffer,"IF%02u%03u%03u%03u",g,m,k,h);
//  Serial.print(Catbuffer);
//  sprintf(Catbuffer,"00000+000000");
//  Serial.print(Catbuffer);
//  sprintf(Catbuffer,"0000");
//  Serial.print(Catbuffer);
//  Serial.print(mode + 1);
//  sprintf(Catbuffer,"0000000;");
//  Serial.print(Catbuffer);
}
void Command_AI(){
//  Serial.print("AI0;");
}

void Command_AG0(){
//  Serial.print("AG0;");
}

void Command_XT1(){
//  Serial.print("XT1;");
}

void Command_RT1(){
//  Serial.print("RT1;");
}
void Command_RC(){
//  rit = 0;
//  Serial.print("RC;");
}
void Command_FL0(){
//  Serial.print("FL0;");
}
void Command_GetMD(){
//	uint8_t mode =0;
//  Serial.print("MD");
//  Serial.print(mode + 1);
//  Serial.print(';');
}
void Command_SetMD(){
//  mode = CATcmd[2] - '1';
//
//  vfomode[vfosel%2] = mode;
//  change = true;
//  si5351.iqmsa = 0;  // enforce PLL reset
}
void Command_AI0(){
//  Serial.print("AI0;");
}
void Command_RX(){
// #ifdef TX_ENABLE
  // switch_rxtx(0);
  // semi_qsk_timeout = 0;  // hack: fix for multiple RX cmds
// #endif
  // Serial.print("RX0;");
}
void Command_TX0(){
// #ifdef TX_ENABLE
  // switch_rxtx(1);
// #endif
}
void Command_TX1(){
// #ifdef TX_ENABLE
  // switch_rxtx(1);
// #endif
}
void Command_TX2(){
// #ifdef TX_ENABLE
  // switch_rxtx(1);
// #endif
}
void Command_RS(){
  Serial.print("RS0;");
}
void Command_VX(char mode){
//  char Catbuffer[16];
//  sprintf(Catbuffer, "VX%c;",mode);
//  Serial.print(Catbuffer);
}
void Command_ID(){
  Serial.print("ID020;");
}
void Command_PS(){
  Serial.print("PS1;");
}
void Command_PS1(){
}

void freqSetToSi(long long freqShow){
if(freq > 4000){ // установить частоту только больше 1МГц

si5351.set_freq((freq*4)*mnoj, SI5351_CLK0);
si5351.update_status();
change = false;
//Serial.write("OK");

}
}

Переделываю чужой код под свои нужды. 
на входе через сериал строка ;FA00102000000; она разбирается на строку 00102000000 и преобразуется в long 32 битное 4 байтное число 102000000, через
 freq=(long long)atol(Catbuffer); , далее умножается на 100 и поступает в функцию установки частоты на si5351

`si5351.set_freq((freq*4)*mnoj, SI5351_CLK0);`

где частота устанавливается так;

`si5351.set_freq(10200000000ULL, SI5351_CLK0); .`

Почему то частоты устанавливаются до ;FA00999999999; выше 100мгц не хотят. 
в чем я не прав?

Весьма печально это слышать. А для чего Вы это написали? У Вас есть какие-то вопросы? Тогда Вы забыли их озвучить.

И да, поправьте вставку кода, а то у Вас хрен поймёшь где код, а где текст.

вы в цифрах не запутались?

999 999 999 - это 999 МГц

;FA00099000000; передаю работает. передаю ;FA00102000000; не работает все что выше 100 мгц. Да перепутал я.
#include “utility.h” код не вставился нормально, добавляю заново

void freqSetToSi(long long freqShow){
  if(freqShow > 4000){               // установить частоту только больше 1МГц 
    
    
    si5351.set_freq((freqShow)*mnoj, SI5351_CLK0);
    si5351.update_status();
    change = false;
    //Serial.print(freqShow);
  }  
}

если я просто установлю частоту выше 100 мгц любую до 200мгц в другом скетче, на этом же 'экземпляре генератора si5351, все работает, слышу на fm приемнике.

не могу найти где поправить сообщение

Смотреть надо как сделано в библиотеке, к примеру в синтезаторе японца (JF3HZB / T.UEBO) так:

#ifndef __si5351H___
#define __si5351H___

void si5351_init(void);
void set_freq(unsigned long freq);
void set_car_freq(unsigned long freq, unsigned char EN, unsigned char RST);

#endif

А на множитель зачем домножать? Разве частота не стаится как есть?
(извините, не знаю этой микросхемы)

Приведите ссылку на используемую Вами библиотеку si5351.h

Новым выложите

лучше на обе, на CAT интерфейс тоже

#define SI5351_FREQ_MULT 100ULL

Что бы задать частоту с точностью до долей герца, конечно это вранье не может si5351 выдать частоту с точностью до долей герца.
например хочу передать частоту 102 мегагерца, значит 102000000 частота в герцах и умножить на 100ULL. Если я правильно понимаю

102 млн умножить на 100 - это уже больше размерности uint32 типа. Дайте ссылку на библиотеку, какой у нее тип параметра в методе set_freq()
Если там uint32, то никак вы такую частоту не установите

/*
 * si5351_outputs.ino - How to set different output sources
 *                      with the Si5351Arduino library
 *
 * Copyright (C) 2016 Jason Milldrum <milldrum@gmail.com>
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#include "si5351.h"
#include "Wire.h"

Si5351 si5351;

void setup()
{
  // Start serial and initialize the Si5351
  Serial.begin(57600);
  si5351.init(SI5351_CRYSTAL_LOAD_8PF, 0, 0);

  // Set CLK0 to output 14 MHz
  si5351.set_freq(1400000000ULL, SI5351_CLK0);

  // Enable clock fanout for the XO
  si5351.set_clock_fanout(SI5351_FANOUT_XO, 1);

  // Enable clock fanout for MS
  si5351.set_clock_fanout(SI5351_FANOUT_MS, 1);

  // Set CLK1 to output the XO signal
  si5351.set_clock_source(SI5351_CLK1, SI5351_CLK_SRC_XTAL);
  si5351.output_enable(SI5351_CLK1, 1);

  // Set CLK2 to mirror the MS0 (CLK0) output
  si5351.set_clock_source(SI5351_CLK2, SI5351_CLK_SRC_MS0);
  si5351.output_enable(SI5351_CLK2, 1);

  // Change CLK0 output to 10 MHz, observe how CLK2 also changes
  si5351.set_freq(1000000000ULL, SI5351_CLK0);

  si5351.update_status();
  delay(500);
}

void loop()
{
  // Read the Status Register and print it every 10 seconds
  si5351.update_status();
  Serial.print("  SYS_INIT: ");
  Serial.print(si5351.dev_status.SYS_INIT);
  Serial.print("  LOL_A: ");
  Serial.print(si5351.dev_status.LOL_A);
  Serial.print("  LOL_B: ");
  Serial.print(si5351.dev_status.LOL_B);
  Serial.print("  LOS: ");
  Serial.print(si5351.dev_status.LOS);
  Serial.print("  REVID: ");
  Serial.println(si5351.dev_status.REVID);

  delay(10000);
}

я просто установил из менеждера библиотек si5351 etherkit

а can протокол трансивера ts-480 был в примере
https://github.com/k2u6m5i3r/arduino-radioSDR-soundCard/blob/main/si5351_encoder_btn_led1602-cat-1.01by/cat-usdx.h

А при чём тут uint32 тип? У ТС же написано: 100ULL - это uint64_t

при том, что если параметр метода имеет размерность uint32, то вы хоть четыре раза long напишите - не поможет

Не, ну если он имеет параметр uint8_t, то всё ещё хуже. Но, в нашем-то случае что Вам не понравилось? Метод вот такой:

uint8_t set_freq(uint64_t, enum si5351_clock);

если такой то вопросов нету

Ссылку на библиотеку как-то узнать можно?
Без исходника библиотеки всё это - гадание на кофейной дрище.