Periferiche PIC (2)

Una volta sistemati i PWM sia per altoparlanti che per il motore della loco, passiamo alle altre periferiche usate nel PIC. Per la riproduzione dei suoni si usa una memoria flash esterna di tipo SPI. il PIC ha implementata in hardware una seriale sincrona che dovrebbe funzionare (almeno da datasheet) unendo i due fili di SDI/SDO al dato proveniente dal PIC stesso. E' importante avere una seriale implementata in hardware per diversi motivi. Il primo e' sicuramente la velocita': il clock della seriale in uscita dal PIC puo' essere la frequenza di clock interna diviso 4. Questo consentirebbe un clock effettivo verso la memoria di 8MHz (125ns di periodo) e considerando che devono "passare" sulla linea 5 parole a 8 bit per ogni byte letto dalla memoria (Command code, Address0, Address1, Address2 e quindi il byte letto) ogni parola impieghera' approssimativamente 8 * 125ns = 1us, 5 parole ovviamente 5us. Considerando le prove fatte con il sound editor e' ragionevole pensare che si ha una buona resa sonora con una risoluzione di 8 bit e un campionamento di 16KHz, ne discende che nominalmente si dovra' leggere almeno una parola ogni 62.5us (1/16KHz) e quindi, sempre teoricamente, le risorse del micro allocate per questa funzione saranno 5/62.5=8%. Il discorso cambia se si vogliono "mixare" piu' suoni, cioe' se si vogliono riprodurre i suoni contemporaneamente (ad esempio frenata + fischio) in questo caso si potrebbe andare ad una occupazione media della CPU del 16 o 24% per 2 o 3 voci. Questa e' la base di partenza per la stima dell'occupazione del tempo CPU. Visti i tempi di lettura così brevi (1us) non e' necessario un approccio ad interrupt (per la lettura della flash) ma e' sufficiente un controllo diretto del programma.