Il firmware è in linguaggio Assembly per il PIC18 di Microchip.
Si sarebbe potuto anche realizzare in un linguaggio ad alto livello come il 'C' ma, a parte la
scarsa conoscenza, alcune sezioni è preferibile che siano comunque in assembler per la necessità di
velocità richiesta dalla comunicazione col chip.
In estrema sintesi, il programma consiste di una sezione di predisposizione del chip con i valori
di default dei registri, seguita da un loop durante il quale si attendono i comandi del
protocollo, si eseguono e si risponde al PC
sull'interfaccia seriale.
Nell'evoluzione prevista, la modifica dei comandi dall'interfaccia utente (surface) vengono intercettati
dalla routine di interrupt e smistati alle corrispondenti routine d'attuazione.
Per i più curiosi, riporto qui di seguito il listato delle due routine più critiche e fondamentali del
firmware, ovvero i comandi di lettura e scrittura dei registri del SID.
;************************************************************** ; scrive un byte nel SID ; Char_1: contiene l'indirizzo del registro SID ; Char_2: contiene il dato da scrivere nel registro ;************************************************************** writeSID bcf STATUS,RP0 movf Char_1,W andlw MASK iorlw 00100000b ; Indirizzo + disabilita sid (bit 5) bcf PIO,PIN_RW ; scrive (bit 7) movwf PADR movf Char_2,W movwf PDATI ; Scrive dati bcf PADR,PIN_CS ; Abilita il sid -> Scrive bsf PADR,PIN_CS ; Disabilita il sid return ;************************************************************** ; legge un byte dal SID all'indirizzo in WREG ;************************************************************** readSID bcf STATUS,RP0 bsf PADR,PIN_CS ; Disabilita il sid bsf PIO,PIN_RW ;lettura (bit 7) iorlw 00100000b ; Indirizzo + disabilita sid (A5) movwf PADR ;PortB in Input bsf STATUS,RP0 movlw 0xFF movwf TRISB bcf STATUS,RP0 ;lettura bcf PADR,PIN_CS ; Abilita il sid movfw PDATI bsf PADR,PIN_CS ; Disabilita il sid bcf PIO,PIN_RW ;PortB in Output bsf STATUS,RP0 clrf TRISB bcf STATUS,RP0 return
Progetto Firmware
in preparazione