Come ogni 'buon' progetto, esso nasce come compromesso tra le, tante, diverse esigenze e la semplicità di realizzazione.
Le CPU PIC hanno il grande pregio e la grande limitazione di avere molte funzioni condivise sugli stessi pin; questo già
comporta la decisione di quali funzioni utilizzare e a quali rinunciare per non obbligare a 'intrecci' mostruosi nel
cablaggio e del firmware.
In questa fase di progetto, la porta seriale (AUSART) è ovviamente indispensabile in quanto per la comunicazione conil PC (lo so, sarebbe stato bello utilizzare un interfaccia USB, ma avrebbe comportato
usare altri PIC che non conosco - e un FW più complesso - oppure usare costosi moduli HW esterni).
Ho rinunciato invece all'interfaccia I2C, che sarà utile per i futuri sviluppi, ma questo avrebbe comportato l'uso la Port A invece della Port C per
indirizzare il SID, perdendo gli ingressi analogici.
Con il senno di poi, la soluzione c'era, ma è arrivata tardi.
Altra decisione di base, forse opinabile, è la scelta del clock a 4 o 8 MHz (come spiegato più avanti), con limitazione
della velocità massima di comunicazione seriale, ma con la possibilità di avere 2 pin in più da utilizzare.
In questo modo ho 6 pin di I/O liberi consecutivi, sia digitali che analogici.
Lavorando a 4 MHz, ho un altro grande vantaggio: l'uscita del clock sul pin A6 è a 1/4 del clock di sistema, quindi
a 1 MHz, esattamente quanto richiesto dal SID sul pin 02, e perdipiù sicuramente in fase con la temporizzazione
del PIC.
Il cuore del modulo è un PIC16F767 della serie Mid-range di Microchip, CPU a 8 bit a 28 pin, che offre, per quanto di interesse nel progetto:
Lo schema può essere suddiviso in 3 aree funzionali:
le 3 porte del PIC sono così utilizzate:
Per le spiegazioni sui pin del SID rimando alla pagina Descrizione SID.
L'unica nota è relativa ai condensatori C1 e C2, indicati da 6800pf; questo è il valore raccomandato per
il chip 6581; utilizzando il chip 6582/8580 il valore suggerito è di 220 pF.
L'ingresso e l'uscita audio sono isolate dall'operazionale doppio U1 (TLC082), per proteggere i pin (delicati)
del SID.
L'ingresso è stato volutamente posto a media impedenza (47KOhm) per ridurre il rumore captato.
Per altre necessità è possibile incrementare il valore di R7.
Progetto Hardware
in preparazione
Qui di seguito riporto le spiegazioni sulle assegnazioni dei connettori e dei jumpers e la lista dei componenti.
Nella barra a fianco sono presenti le immagini di tutti i moduli e della realizzazione.
Infine, c'è il link per scaricare la cartella compressa con i files di progetto.
SER: connettore seriale RS232 + Vdd + massa per alimentare il convertitore esterno se necessario.
Il led RX indica la presenza di dati in ricezione
PRG: connessioni standard ICSP. Sono da notare i 2 diodi Schokty D1 e D2 utilizzati per separare
l'alimentazione Vdd il Reset/Vprog dal resto del circuito. Il pulsante URES è il reset del PIC.
ANA: riporta l'ingresso e l'uscita audio + massa.
POT: collegamento ai 2 potenziometri POTX e POTY (e Vdd) se utilizzati.
IO: come detto, sono i pin A0..A5 utilizzabili come si vuole (es. LCD).
I 3 jumper meritano una spiegazione particolare:
come anticipato, il PIC, quando lavora a 4 MHz, può fornire direttamente il clock al SID.
Volendo farlo lavorare a 8 MHz (tramite modifica al FW) per incrementare le prestazioni, occorre una sorgente
esterna di clock a 1 MHz per il SID. Questo compito è affidato al chip oscillatore di Fox Electronics (
ovviamente opzionale).
In questo caso, i jumper CK1 e CK2 vanno spostati nella direzione opposta a quella indicata
nello schema; così il segnale dall'oscillatore arriva al PIC e il pin A6 viene liberato.
Fatto questo, tramite il jumper RS è possibile pilotare il Reset del SID via FW del PIC
(normalmente, questo Reset è comandato dal pulsante SRES). Ovviamente anche questa funzionalità richiede
la modifica del Firmware.
Il microswitch B67 è stato previsto per isolare i pin di programmazione del PIC (B6 e B7)
durante l'uso di ICSP.
Prima di programmare il PIC, lo switch va portato in OFF e poi rimesso in ON
(ricordarsene, altrimenti non funziona più nulla) a fine programmazione.
Nello schema sono anche indicati 2 punti (PU1 e PU2), nei quali è possibile inserire un altro jumper.
Cortocircuitando i 2 punti, anche con una saldatura, si collega la resistenza di Pull-Up R3 al pin A4
che è del tipo Open Collector e non può quindi fornire di suo il segnale alto.
Per l'alimentazione (esterna) c'è solamente da evidenziare la presenza di condensatori anti-rumore da
100 KpF (C4, C5 e C11) montati vicino ai chip. 2 Led indicano la presenza delle tensioni a +5V e +9/+12V.
Per ultimo, ho previsto l'uso di Test Point per accedere ai segnali critici.
Part Value Device |
AD TPPAD1-13 TPPAD1-13 ANA FE03-1 FE03-1 B67 DIP02YL C1 6800pf C5/3 C2 6800pf C5/3 C3 10nF C5/3 C4 100nF C5/3 C5 100nF C5/3 C6 100nF C5/3 C7 1000pF C5/3 C8 10uF CPOL-EUE5-4 C9 1nF C5/3 C10 1nF C5/3 C11 100nF C5/3 C12 1000pF C5/3 C13 10uF CPOL-EUE5-4 CK TPPAD1-13 TPPAD1-13 CK1 JP2E CK2 JP2E CS TPPAD1-13 TPPAD1-13 D1 SCHOTTKY-DIODEDO35-7 D2 SCHOTTKY-DIODEDO35-7 GND TPPAD1-13 TPPAD1-13 IO FE08-1 OSC DIL8 PIC PIC16F7X7 PIC16F7X7 POT FE03-1 FE03-1 PRG MA06-1 PU1 LSP10 LSP10 PU2 LSP10 LSP10 PWR MTA03-100 |
Part Value Device |
R1 1.5k R-EU_0204/7 R2 100 R-EU_0204/7 R3 4.7k R-EU_0204/7 R4 220 R-EU_0204/7 R5 100 R-EU_0204/7 R6 47K R-EU_0204/7 R7 47K R-EU_0204/7 R8 1K R-EU_0204/7 R9 10K R-EU_0204/7 R10 1.5k R-EU_0204/7 R11 680 R-EU_0204/7 R12 680 R-EU_0204/7 R13 1K R-EU_0204/7 R14 47K R-EU_0204/7 RS JP2E RW TPPAD1-13 TPPAD1-13 RX LED3MM SER MA04-1 SRES 10-XX U$2 SID6582 SID6582 U1 TLC082N TLC082N URES 10-XX V5 LED3MM V9 LED3MM |
Files di progetto (schema e PCB) in versione EAGLE CAD 5.x: Scarica il file zippato
Schema elettrico del modulo SID
Circuito stampato del modulo SID
Layout del modulo SID
La scheda SID realizzata
Schema del modulo ausiliariobr>
Stampato del modulo ausiliario
Vista d'insieme in 3D
Vista dei moduli interni (nota: i 3 moduli oltre al SID costituiscono il modulo ausiliario
Vista esterno del box (il fontalino ovviamente apparteneva ad altro progetto!)