Stap 3: Een kleine uitweiding over debuggen.
Als je net als mij (en elke andere programmeur in de wereld) hebben u waarschijnlijk tijden wanneer de code "vrij van fouten" hebt u zorgvuldig typte in en gecompileerd niet wat je verwacht doet te doen ervaren. Misschien doet het gewoon niets! Dus wat is het probleem? Hoe gaat u om uit te vinden?Gelukkig zijn er verschillende manieren om dingen te werken. (Krijg dit boek voor een uitstekende behandeling van het onderwerp van de foutopsporing. http://www.debuggingrules.com/) Ik wil graag een paar eenvoudige suggesties met betrekking tot het onderwerp van de foutopsporing in toepassingen van de microcontroller.
De eerste stap is om te bouwen op wat je weet. Als u een blinkenlight aan het werk eenmaal hebt gekregen, dan het opnieuw gebruiken om te zien waar je bent in uw programma. Ik heb de LED knipperen tweemaal om het signaal van de start van het programma. Om dit te doen in eerste instantie aan het begin van uw programma kun je de code in. Zodra u weet dat er niets mis is met uw hardware is, maakt u een functie om te doen het knipperen. Hier is de functie die ik gebruik.
/*------------------------------------------------------------------------
** blinkEm - functie met behulp van de PD4 LED knipperen
** PD4 moet worden geconfigureerd als een output.
** ---------------------------------------------------------------------*/
VOID blinkEm (uint8_t telling) {}
terwijl (graaf > 0) {}
PORTD = _BV(PD4);
_delay_ms(1000);
PORTD = ~ _BV(PD4);
_delay_ms(1000);
Count--;
}
}
Het is nu mogelijk om het gebruik van deze functie op verschillende punten in uw code als een signaal dat de code die veel heeft uitgevoerd. Te weten de code loopt betekent kunt u elke sectie zorgvuldig bestuderen dat heeft uitgevoerd, maar niet gedaan wat u verwacht, fouten gevonden.
Het veranderen van een ding tegelijk is een belangrijke techniek voor foutopsporing ook (beschreven in de bovenstaande referentie). Deze klassieke methode werkt samen met "verdeel en heers": baby stappen stapsgewijs functionaliteit toevoegen. Dit lijkt misschien een langzame aanpak, maar het is lang niet zo langzaam als het proberen debuggen van een groot deel van de niet-werkende code allemaal tegelijk.