Stap 2: Firmware
De firmware gebruikt de CDC USB-klasse te emuleren een seriële poort. Het apparaat zal verschijnen als een virtuele com-poort op een PC. De firmware is onderverdeeld in drie secties:1. het USB-stuurprogramma zorgt voor het opsommen van het apparaat op een PC en een COM-poort te emuleren.
2. een service routine afwisselend leest de temperatuur waarden en zet deze om in een leesbaar formaat. Beide van deze operaties tegelijkertijd doen veroorzaakt het USB-apparaat aan losse verbinding de PC (tijd hogging). Naar een tekenreeks converteren van de drijvende komma waarden in de cyclus van de service na de conversie de connectiviteit maken.* opgehelderd
3. ten slotte, een belangrijkste routine ontvangt bytes dat is verzonden vanaf PC en geeft als resultaat de aangevraagde metingen. Meerdere maatregelen worden gescheiden door een komma, lijnen worden afgesloten met een null-teken (hex 0x00)
De demonstratie firmware accepteert de volgende opdrachten:
Hex waarde retourneert
0x00 Indoors temperatuur (on-board-sensor)
0x01 Outdoor temperatuur (externe header)
0x02 beide temperaturen (komma gescheiden)
Temperatuur is berekend op basis van de verwijzing van 2,5 volt en de verschuiving van de Microchip TC1047A helling. Andere temperatuursensoren kunnen hebben verschillende kenmerken. Het gegevensblad van de TC1047A is hier beschikbaar:
http://WW1.microchip.com/downloads/en/DeviceDoc/21498c.PDF
De firmware is geschreven in MPLAB met de demonstratie PIC C18-compiler.
De werkelijke USB firmware wordt verzorgd door Microchip. De oorspronkelijke omgeving is hier beschikbaar:
http://www.microchip.com/Stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en021631
Voor het bewerken van de firmware: uittreksel van de gehele mapstructuur van de bron naar uw hoofdmap (c:\MCHPFSUSB). Vervolgens kunt u het werkruimtebestand in MPLAB laden.
* De vlotter naar tekenreeks routine is een resource hog. Om te krijgen rond het verbindingsprobleem de USB service routine heet op verschillende punten in de float2string-routine. Dit zou best worden opgelost door het onderhoud van het USB apparaat op een interrupt. Ik gebruikte de houwer zodat de firmware bleef zo dicht mogelijk bij de reference versie mogelijk.