BoxIdee

Il protocollo di comunicazione

Descrizione

Il protocollo [versione 1.0] stabilisce le regole di comunicazione tra il PC e i moduli picSID. Lo scopo del protocollo è inviare una stringa di comando al SID e ricevere, in alcune modalità, una risposta di conferma.

SIDCom è un protocollo asincrono Half-Duplex a 8 bit, senza parìtà, 1 bit di Start e 1 bit di Stop.

La velocità di trasmissione è di 9,600bps, con previsione di valutare la possibile estensione fino a 38,400bps o comunque alla velocità di comunicazione delle porte MIDI.

Ogni messaggio deve essere intervallato da minimo un ‘character time’ (1.04msec a 9600bps).

Nella Versione 1 (attuale) del protocollo, la comunicazione è tra il PC e 1 SID.
In versioni successive, potranno essere utilizzati fino a 4 moduli SID, utilizzando i bit riservati all'indirizzamento


La scelta di utilizzare solo 2 byte comporta qualche acrobazia nella costruzione e decodifica dei messaggi, però massimizza la velocità di comunicazione e quindi la latenza di risposta del SID.




Struttura dei messaggi

Il PC trasmette un messaggio composto da 2 parole da 1 byte:

P0 = istruzione

P1 = dati




Modalità di comando

Sono previste 2 modalità operative:

REG Comando a Registro
Il PC indirizza un registro SID e invia i dati da scrivere nel registro selezionato.
L’operazione è di sola scrittura per cui vengono indirizzati solo i primi 25 registri dei 29 disponibili.
CMD Istruzione di Comando
Il PC invia una tabella di comandi (fino a 32 diverse combinazioni) che viene interpretata dal SID.
La parola P1 contiene eventuali istruzioni aggiuntive (parametri) per l'esecuzione del comando.


Formato della Parola 0


B7 B6 B5 B4 B3 B2 B1 B0
0 = REG ADR1 ADR0 A4 A3 A2 A1 A0
1 = CMD ADR1 ADR0 OP4 OP3 OP2 OP1 OP0


Modalità REG

B7 = 0 modalità di indirizzamento diretto del SID
Il byte P1 contiene il dato da scrivere nel registro selezionato
B6..B5 Indirizzo del modulo picSID (riservati a future espansioni).
B4..B0 Indirizzo del registro da scrivere [A0..A25 = h00..h19]


Modalità CMD

    
B7 = 1modalità di comando per funzioni speciali
B6..B5 Indirizzo del modulo picSID (riservati a future espansioni).
B4..B0 Selezione del comando da eseguire.


Tabella dei comandi (i codici con OP4=1 sono liberi a disposizione)

CMD OP4 OP3 OP2 OP1 OP0 Descrizione
NOP00000 nessuna azione
INI00001 Inizializza il SID (nessuna uscita audio)
TST00010 Test - il SID viene inizializzato e genera un'onda quadra a 440Hz sulla voce 1
MOD00011 Abilita/Disabilita la modulazione definita in P1
SVP00100 Salve nella EEPROM del PIC l'attuale configurazione [PRESET] indicata in P1
LDP00101 Carica nel SID da EEPROM la configurazione [PRESET] indicata in P1
ECH00110 Abilita/Disabilita l'eco del comando (toggle) - default=Echo On
x00111 riservato
ANA01000 Predispone il pin indicato in P1 come ingresso analogico
DGI01001 Predispone il pin indicato in P1 come ingresso digitale
DGO01010 Predispone il pin indicato in P1 come uscita digitale
HGH01011 Attiva il pin indicato in P1 (se predisposto come uscita)
LOW01100 Disattiva il pin indicato in P1 (se predisposto come uscita)
DVL01101 Legge il valore digitale del pin indicato in P1 (se predisposto)
AVL01110 Legge il valore analogico del pin indicato in P1 (se predisposto )
x01111 riservato




Formato della Parola 1


Modalità REG

    
B7..B0valore del dato da scrivere nel registro selezionato [valori da 0x00 a 0xFF]



Modalità CMD


Comando SVP / LDP

B7 B6 B5 B4 B3 B2 B1 B0
x PS6 PS5 PS4 PS3 PS2 PS1 PS0
    
PS6..PS0Indice del Preset da salvare o leggere da EEPROM.
I possibili 128 Preset sono limitati dalla dimensione della memoria disponibile.
Attualmente, il limite massimo è di 12 Preset (12 x 30 byte = 360 byte).
Il formato dei Preset non è al momento definito.

NOTA BENE: l'esecuzione di questi comandi richiede tempo ed è soggetta a temporarizzazioni critiche.
E' a cura del programma di gestione attendere un periodo di tempo ragionevole prima di emettere nuovi comandi.



Comando MOD

B7 B6 B5 B4 B3 B2 B1 B0
DIV2 DIV1 DIV0 SRC1 SRC0 DST2 DST1 DST0
    
DIV

[B7..B5]
Coefficiente di scalatura del valore letto dalla sorgente, espresso in forma di esponenti di 2.
Il valore minimo di 0, trasferisce inalterato il valore della sorgente alla destinazione.
Il valore massimo è di 7, pari a una divisione per 128 del valore sorgente.
B4..B3

Selezione della sorgente
SRC1 SRC0 Sorgente
0 0 OSC3
1 0 ENV3
0 1 POTX
1 1 POTY
B2..B0

Selezione della destinazione
DST1 DST1 DST0 Destinazione
0 0 0 Frequenza V1
1 0 0 PWM V1
0 1 0 Frequenza V2
1 1 0 PWM V2
0 0 1 Frequenza V3 (solo SRC=POT)
1 0 1 PWM V3 (solo SRC=POT)
0 1 1 Frequenza centrale filtro
1 1 1 Risonanza filtro


Comandi ANA - DGI - DGO - HGH - LOW - DVL - AVL

B7 B6 B5 B4 B3 B2 B1 B0
x x x x x IO2 IO1 IO0
    
IO2..IO0Numero del pin di I/O selezionato



I comandi non specificati nelle precedenti tabelle non utilizzano la Parola P1



Progetto My SID
Il chip SID
  • Caratteristiche HW
  • Registri e comandi
  • Note d'uso

Progetto Hardware modulo di comando del SID da PIC
  • Il modulo picSID
  • Modulo ausiliario auxSID
  • Ingegnerizzazione

Progetto Protocollo

  • Protocollo SIDcom

Progetto Firmware
  • Schema a blocchi
  • Il Firmware

Progetto Software Programma per Windows di comando PIC e SID 6582

in preparazione