           001               11                     11  100
                          10000000                 100
  1000000  001  1000001  000     1 1000001   00100  00  101  0000000   1000001
     1001  001 100   00  001           100  100011  00  000  000  001 100   001
    100    001 000   000 000       1001100   00    100  100  001  001 000   000
  1000  1  001  001 100   00011100 001  00  100    100  000  001  001  001 100
  1111100  11    10001      10001   101 11   11     11   11  11   11    10001

  by zioCarlino
  http://www.carlomanzoni.net

Simply_North Arduino Library
==========================

Libreria per caricare i parametri nel PLL che gestisce
un oscillatore locale interno al modulo NORTH 12GHz.

I dati vengono trasferiti al modulo tramite Arduino
oppure tramite un ATtiny85 o suoi simili di famiglia.

Sintassi dei comandi:
====================

*************************
Inclusione di questa libreria
-------------------------
#include <Simply_North.h>  
-------------------------

*************************
Creazione di una istanza della classe Simply_North
-------------------------
Simply_North nomeistanza;
-------------------------

*************************
Creare un array di interi a 32bit che conterrà i dati da inviare
al PLL con i valori calcolati tramite il SW ADF4153_ADI_PLL_Frac-N
------------------------------------- 
uint32_t RegVal[] = {R0, R1, R2, R3};
-------------------------------------

*************************
Definizione dei pin di COMUNICAZIONE in base al processore in uso.
------------------------------
#define CLK  pin CLOCK
#define DATA pin DATI
#define LE   pin Latch Enabled
------------------------------

*************************
Assegnazione dei pin di comunicazione col modulo NORTH che
verranno impostati automaticamente come pin di USCITA.
-------------------------------------
nomeistanza.SetPinOut(CLK, DATA, LE);
-------------------------------------

*************************
Opzione per modulare la portante generata in codice Morse
definendo i due pin modulanti in CW e in AM (800 Hz)
'Leggi NOTA 1'
-------------------------------------------------
nomeistanza.SetPinOut(CLK, DATA, LE, TXCW, TXAM);
-------------------------------------------------

*************************
Scrive i valori di RegVal nei registri del PLL del modulo
utilizzando i pin CLK, DATA e LE definiti precedentemente.
La libreria provvede a generare altri due dati importanti
che in fase di scrittura dei registri del PLL andranno a
settare correttamente alcuni bit importanti degli stessi.
I totale verranno scritti 6 valori di 32bit sequenziati così:
1:R3(N/S) - 2:R3 - 3:R2(CR) - 4:R1 - 5:R0 - 6:R2
-----------------------------
nomeistanza.SetupADF(RegVal);
-----------------------------

*************************
Velocità preimpostate espresse in Words Paris Minute:
-----------------------------
WPM10 WPM15 WPM20 WPM25 WPM30
-----------------------------

*************************
Trasmissione Morse di un testo e relativa velocità in WPM.
'Leggi NOTA 1'
---------------------------------------------------
ATTENZIONE - negli ATtiny il limite di 40 caratteri !!
---------------------------------
nomeistanza.MorseTX(String, vel);
---------------------------------

*************************
Se sono stati definiti i pin TXCW e TXAM è possibile utilizzare
due comandi per gestire la portante generata dal modulo.
'Leggi NOTA 1'
------------------------------------------------------------------------
nomeistanza.CarrierON() = accende la portante (mette TXCW e TXAM = HIGH)
nomeistanza.CarrierOFF() = spegne la portante (mette TXCW e TXAM = LOW)
------ oppure ------
nomeistanza.CarrierON(sec) = accende la portante poi attende tot secondi
nomeistanza.CarrierOFF(sec) = spegne la portante poi attende tot secondi
------------------------------------------------------------------------

-----------------------------------------------
LINK al software ADF4153_ADI_PLL_Frac-N v4.5.0:
-----------------------------------------------
https://ez.analog.com/cfs-file/__key/telligent-evolution-components-attachments/00-114-01-00-00-23-51-55/ADI_5F00_PLL_5F00_Frac_2D00_N_5F00_v4_5F00_5_5F00_0_5F00_SourceCode.zip
-----------------------------------------------

Compilare il programma su Arduino Nano:
----------------------------
SCHEDA: "Arduino Nano"
Processore: "ATmega328P"
Programmatore "AVRISP mkII"
----------------------------

Compilare il programma su ATtiny85
----------------------------------
SCHEDA: "ATtiny25/45/85"
Processore: "ATtiny85"
Clock: "Internal 16 MHz"
Programmatore "USBtinyISP"
----------------------------------

NOTA 1:
*******************************************************************
In questo caso occorre fare una modifica sul finale di uscita
in modo da fornirgli la tensione di alimentazione dall'esterno.
Il software attiverà i pin TXCW e TXAM che a loro volta attiveranno
un driver a transistor per alimentare o meno il finale RF.
Questa è una modifica conosciuta che si trova facilmente in rete.
*******************************************************************

Copyright
===========================
Carlo Manzoni, ottobre 2022
===========================